OfflineCompile
Product Support Status
| Product | Support Status |
|---|---|
| Atlas A3 Training Series Products/Atlas A3 Inference Series Products | √ |
| Atlas A2 Training Series Products/Atlas A2 Inference Series Products | √ |
Module Import
from ge.offline_compile import (
build_initialize, build_finalize, build_model, save_model,
bundle_build_model, bundle_save_model, GraphWithOptions, ModelBuffer
)
from ge.error import GeError
Functionality Description
Offline compilation module provides the capability to compile computation graphs into offline models (.om files). Supports single graph compilation (build_model) and multi-graph bundle compilation (bundle_build_model).
Usage flow:
- Call
build_initializeto initialize offline compilation resources. - Call
build_modelto compile single graph, or callbundle_build_modelto compile multiple graphs into bundle offline model. - Call
save_modelorbundle_save_modelto save compilation result as.omfile. - Call
build_finalizeto release offline compilation resources.
Configuration in build_options has higher priority than global_options in build_initialize.
When GE underlying interface execution fails, build_initialize, build_model, save_model, bundle_build_model,
bundle_save_model will throw GeError. GeError inherits from RuntimeError,
exception information contains GE internal error information and interface context.
Data Classes
GraphWithOptions
A combination of a graph and its corresponding compilation options, used in bundle compilation scenarios.
@dataclass
class GraphWithOptions:
graph: Graph
build_options: Dict[str, str]
| Attribute | Type | Description |
|---|---|---|
| graph | Graph | Computation graph object to be compiled |
| build_options | Dict[str, str] | Compilation options dictionary corresponding to this graph, keys and values are strings, default is empty dictionary |
Classes
ModelBuffer
Offline model buffer class, used to store compiled offline model data. This class does not support direct instantiation, returned by build_model or bundle_build_model.
| Method/Attribute | Description |
|---|---|
| length (property) | Gets model buffer length (bytes), returns int |
| get_length() | Gets model buffer length (bytes), returns int |
Function Prototypes
build_initialize
def build_initialize(global_options: Optional[dict] = None) -> None
Initializes resources required for offline compilation.
build_finalize
def build_finalize() -> None
Releases offline compilation resources.
build_model
def build_model(graph: Graph, build_options: Optional[dict] = None) -> ModelBuffer
Compiles single computation graph into offline model, model data saved in memory.
save_model
def save_model(output_file: str, model: ModelBuffer) -> None
Serializes offline model in memory into .om file.
bundle_build_model
def bundle_build_model(graph_with_options: List[GraphWithOptions]) -> ModelBuffer
Compiles multiple graphs into bundle offline model.
bundle_save_model
def bundle_save_model(output_file: str, model: ModelBuffer) -> None
Serializes bundle offline model in memory into .om file.
Parameter Description
build_initialize
| Parameter | Type | Required | Description |
|---|---|---|---|
| global_options | Optional[dict] | No | Global compilation configuration dictionary, keys and values are strings. Default is None, means no additional configuration passed |
build_model
| Parameter | Type | Required | Description |
|---|---|---|---|
| graph | Graph | Yes | Computation graph object to be compiled |
| build_options | Optional[dict] | No | Graph-level compilation configuration dictionary, keys and values are strings. Configuration priority see constraint description. Default is None |
save_model
| Parameter | Type | Required | Description |
|---|---|---|---|
| output_file | str | Yes | Base name of output model file. Generated offline model file name automatically has .om suffix. If file name contains OS and architecture information, then this OM file can only be used in corresponding OS and architecture runtime environment |
| model | ModelBuffer | Yes | Offline model buffer object |
bundle_build_model
| Parameter | Type | Required | Description |
|---|---|---|---|
| graph_with_options | List[GraphWithOptions] | Yes | List containing multiple GraphWithOptions, each element contains a computation graph and its compilation options. List must contain 2 or more graphs |
bundle_save_model
| Parameter | Type | Required | Description |
|---|---|---|---|
| output_file | str | Yes | Base name of output model file. Generated offline model file name automatically has .om suffix. If file name contains OS and architecture information, then this OM file can only be used in corresponding OS and architecture runtime environment |
| model | ModelBuffer | Yes | Bundle offline model buffer object |
Return Value Description
build_model
| Return Value | Type | Description |
|---|---|---|
| model | ModelBuffer | Buffer object containing compiled offline model data |
bundle_build_model
| Return Value | Type | Description |
|---|---|---|
| model | ModelBuffer | Buffer object containing compiled bundle offline model data |
Other Functions
build_initialize, build_finalize, save_model, bundle_save_model have no return value.
Constraint Description
- Before using offline compilation module, must call
build_initializeto initialize resources, after use must callbuild_finalizeto release resources. - Keys and values in
build_optionsmust be string type. graph_with_optionslist inbundle_build_modelmust contain 2 or more graphs.ModelBufferobjects do not support copy and deep copy, and do not support direct instantiation.output_fileparameter insave_modelandbundle_save_modelis base name of output file, system automatically adds.omsuffix.- Configuration in
build_optionshas higher priority thanglobal_optionsinbuild_initialize. - When GE underlying interface execution fails, will throw GeError, exception information contains GE internal error information and interface context.
Usage Example
from ge.offline_compile import (
build_initialize, build_finalize,
build_model, save_model,
bundle_build_model, bundle_save_model,
GraphWithOptions
)
from ge.graph import Graph
# Initialize offline compilation resources
build_initialize({"log_level": "0"})
# Single graph compilation
model = build_model(graph, {"input_format": "ND"})
save_model("output_model", model)
print(f"Model size: {model.length} bytes")
# Multi-graph bundle compilation
gwo_list = [
GraphWithOptions(graph1, {"input_format": "ND"}),
GraphWithOptions(graph2, {"input_format": "NCHW"}),
]
bundle_model = bundle_build_model(gwo_list)
bundle_save_model("bundle_output", bundle_model)
# Release offline compilation resources
build_finalize()