资讯动态

CANN/ge可选输入示例

发布时间:2026/9/10 4:46:07 来源:尧图企业网站定制
Sample Usage Guide【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge1. Function DescriptionThis sample uses BatchNorm operators optional inputs for graph construction, aiming to help graph construction developers quickly understand the definition of optional inputs and how to use this type of operator for graph construction.2. Directory Structurepython/ ├── src/ | └── make_batchnorm_graph.py // Sample file ├── run_sample.sh // Execution script ├── CMakeLists.txt // Build script ├──README.md // README file3. Usage3.1 Prepare CANN PackageCorrectly installtoolkitandopspackages following the installation guide Environment PreparationSet environment variables (assuming the package is installed in /usr/local/Ascend/)source /usr/local/Ascend/cann/set_env.sh3.2 Build and ExecuteNote: Compared with C/C graph construction, Python graph construction requires additional LD_LIBRARY_PATH and PYTHONPATH settings (refer to the configuration in sample)bash run_sample.sh -t sample_and_run_pythonThis command will:Automatically generate ES interfaceCompile sample programGenerate dump graph and run the graphAfter successful execution, you will see:[Success] sample executed successfully, pbtxt dump has been generated in current directory. This file starts with ge_onnx_ and can be opened in netron for displayOutput File DescriptionAfter successful execution, the following file will be generated in current directory:ge_onnx_*.pbtxt- Protobuf text format of graph structure, can be viewed with netron3.3 Log PrintingIf log printing is needed during executable program execution to assist debugging, set the following environment variables before bash run_sample.sh -t sample_and_run_python to print logs to screen:export ASCEND_SLOG_PRINT_TO_STDOUT1 #Print logs to screen export ASCEND_GLOBAL_LOG_LEVEL0 #Log level set to debug level3.4 DUMP Graph During Graph CompilationIf DUMP graph is needed during executable program execution to assist graph compilation debugging, set the following environment variables before bash run_sample.sh -t sample_and_run_python to DUMP graph to execution path:export DUMP_GE_GRAPH24. Core Concept Introduction4.1 Graph Construction StepsCreate graph builder (to provide context, workspace and build-related methods needed for graph construction)Add starting nodes (starting nodes refer to nodes without input dependencies, usually including graph inputs (like Data nodes) and weight constants (like Const nodes))Add intermediate nodes (intermediate nodes are computation nodes with input dependencies, usually generated by user graph construction logic, and connected using existing nodes as inputs)Set graph output (explicitly specify graph output nodes as endpoints of computation results)4.2 Concept DescriptionOptional input refers to certain inputs of an operator that are non-mandatory inputs.Graph Construction API Features:Input is non-mandatory parameter during graph constructionFor example, BatchNorm operator prototype is shown below, ES graph construction generated API isBatchNorm(), supporting use at Python layerREG_OP(BatchNorm) .INPUT(x, TensorType({DT_FLOAT16,DT_FLOAT})) .INPUT(scale, TensorType({DT_FLOAT})) .INPUT(offset, TensorType({DT_FLOAT})) .OPTIONAL_INPUT(mean, TensorType({DT_FLOAT})) .OPTIONAL_INPUT(variance, TensorType({DT_FLOAT})) .OUTPUT(y, TensorType({DT_FLOAT16,DT_FLOAT})) .OUTPUT(batch_mean, TensorType({DT_FLOAT})) .OUTPUT(batch_variance, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_1, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_2, TensorType({DT_FLOAT})) .OUTPUT(reserve_space_3, TensorType({DT_FLOAT})) .ATTR(epsilon, Float, 0.0001f) .ATTR(data_format, String, NHWC) .ATTR(is_training, Bool, true) .ATTR(exponential_avg_factor, Float, 1.0) .OP_END_FACTORY_REG(BatchNorm)Its corresponding function prototype is:Function name: BatchNormParameters: Total 9, sequentially x, scale, offset, mean (optional input), variance (optional input), epsilon, data_format, is_training, exponential_avg_factorReturn values: Outputs y, batch_mean, batch_variance, reserve_space_1, reserve_space_2, reserve_space_3In Python API:BatchNorm(x: Union[TensorHolder, TensorLike], scale: Union[TensorHolder, TensorLike], offset: Union[TensorHolder, TensorLike], mean: Optional[Union[TensorHolder, TensorLike]] None, variance: Optional[Union[TensorHolder, TensorLike]] None, epsilon: float 0.00100, data_format: str NHWC, is_training: bool True, exponential_avg_factor: float 0.00100) - BatchNormOutput:class BatchNormOutput: def __init__(self, y: TensorHolder, batch_mean: TensorHolder, batch_variance: TensorHolder, reserve_space_1: TensorHolder, reserve_space_2: TensorHolder, reserve_space_3: TensorHolder) self.y y self.batch_mean batch_mean self.batch_variance batch_variance self.reserve_space_1 reserve_space_1 self.reserve_space_2 reserve_space_2 self.reserve_space_3 reserve_space_3Note:Use TensorLike type to express input, to support cases where actual parameters can directly pass numeric valuesPython Layer API ExampleMethod: Directly Call BatchNorm()from ge.es.graph_builder import GraphBuilder, TensorHolder from ge.graph import Tensor from ge.graph.types import DataType, Format from ge.graph import Graph from ge.es.all import BatchNorm # 1. Create graph builder builder GraphBuilder(control_dep_example) # 2. Create nodes input_tensor_holder builder.create_input( index0, nameinput, data_typeDataType.DT_FLOAT, shape[2, 3] ) variance builder.create_input( index1, namevariance, data_typeDataType.DT_FLOAT, shape[2, 3] ) scale builder.create_vector_int64([3, 1]) offset builder.create_vector_int64([3, 0]) # 3. Optional input mean is None, variance has input batchNorm_tensor_holder BatchNorm(input_tensor_holder, scale, offset, None, variance) # 4. Set output and build builder.set_graph_output(batchNorm_tensor_holder.y, 0) graph builder.build_and_reset()【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价