ES-PY Python 模块文档【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge概述ES-PY 是 GraphEngine 中 Eager-Style 图构建的 Python 接口模块提供了函数式风格的图构建接口。该模块位于api/python/ge/ge/es/目录下。目录结构├── __init__.py # 模块初始化文件 ├── graph_builder.py # GraphBuilder 类定义 └── tensor_holder.py # TensorHolder 类定义 └── tensor_like.py # TensorHolder的泛型定义 └── _plugin_loader.py # 插件加载模块注下划线开头的为 Python 风格下的对内模块es核心类关系图类详细说明1. GraphBuilder 类文件位置:graph_builder.py功能Eager-Style 图构建器提供函数式风格的图构建接口主要方法:图构建相关:__init__(name)- 初始化图构建器build_and_reset()- 构建并返回Graph对象name- 图构建器名称只读属性输入和常量创建:create_input(index, *, name, type_str, data_type, format, shape)- 创建图输入create_inputs(num, start_index)- 批量创建输入create_const_int64(value, shape)- 创建int64常量create_const_float(value, shape)- 创建float常量create_const_uint64(value, shape)- 创建uint64常量create_const_int32(value, shape)- 创建int32常量create_const_uint32(value, shape)- 创建uint32常量向量和标量创建:create_vector_int64(value)- 创建int64向量create_scalar_int64(value)- 创建int64标量create_scalar_int32(value)- 创建int32标量create_scalar_float(value)- 创建float标量变量创建:create_variable(index, name)- 创建变量节点图输出设置:set_graph_output(tensor, output_index)- 设置图输出属性设置:set_graph_attr_int64(attr_name, value)- 设置图int64属性set_graph_attr_string(attr_name, value)- 设置图字符串属性set_graph_attr_bool(attr_name, value)- 设置图bool属性set_tensor_attr_int64(tensor, attr_name, value)- 设置张量int64属性set_tensor_attr_string(tensor, attr_name, value)- 设置张量字符串属性set_tensor_attr_bool(tensor, attr_name, value)- 设置张量bool属性set_node_attr_int64(tensor, attr_name, value)- 设置节点int64属性set_node_attr_string(tensor, attr_name, value)- 设置节点字符串属性set_node_attr_bool(tensor, attr_name, value)- 设置节点bool属性控制依赖:add_control_dependency(dst_tensor, src_tensors)- 添加控制依赖边属性:_handle- 底层C图构建器对象的句柄_name- 图构建器名称关系:通过esb_lib调用底层C API创建并管理多个TensorHolder对象最终构建成Graph对象使用示例:from ge.es import GraphBuilder # 创建图构建器 builder GraphBuilder(my_graph) # 创建输入 input_tensor builder.create_input(0, nameinput, shape[1, 224, 224, 3]) # 创建常量 const_tensor builder.create_const_float(1.0) # 设置图输出 builder.set_graph_output(input_tensor, 0) # 构建图 graph builder.build_and_reset()2. TensorHolder 类文件位置:tensor_holder.py功能: 张量持有者表示图构建过程中的张量对象主要方法:属性设置:set_data_type(data_type)- 设置张量数据类型set_format(format)- 设置张量数据格式set_shape(shape)- 设置张量形状数值操作需要生成的操作符库支持:add(other)- 张量相加sub(other)- 张量相减mul(other)- 张量相乘div(other)- 张量相除运算符重载需要生成的操作符库支持:__add__- 支持运算符__sub__- 支持-运算符__mul__- 支持*运算符__truediv__- 支持/运算符__radd__, __rsub__, __rmul__, __rtruediv__- 支持右侧运算属性:_handle- 底层C张量持有者对象的句柄_builder- 所属的GraphBuilder对象引用name- 生产节点名称只读属性关系:通过esb_lib调用底层C API与GraphBuilder对象关联持有对GraphBuilder的强引用防止过早释放设计特点:TensorHolder 自动维护对其 GraphBuilder 的强引用确保底层 C 资源有效性不能直接实例化只能通过 GraphBuilder 的 create 方法或者生成的 EsAPI 内部创建支持 Python 运算符重载提供直观的数值操作语法使用示例:from ge.es import GraphBuilder builder GraphBuilder(my_graph) # 创建张量 tensor1 builder.create_const_float([1.0, 2.0, 3.0], shape[3]) tensor2 builder.create_const_float([4.0, 5.0, 6.0], shape[3]) # 设置张量属性 tensor1.set_data_type(DataType.DT_FLOAT) tensor1.set_format(Format.FORMAT_ND) # 使用运算符需要生成的操作符库 result tensor1 tensor2 # 运算符重载 # 或 result tensor1.add(tensor2) # 显式方法调用3. InputType 枚举文件位置:graph_builder.py功能: 定义图输入的类型枚举值:DATA- Data - 普通数据输入REF_DATA- RefData - 引用数据输入AIPP_DATA- AippData - AIPP数据输入ANY_DATA- AnyData - 任意数据输入关系:在GraphBuilder.create_input()方法中使用与C中的输入类型字符串对应4. 作用域管理器attr_scope 上下文管理器文件位置:graph_builder.py功能: 属性作用域管理在作用域内创建的节点自动应用指定属性使用示例:from ge.es import GraphBuilder from ge.es.graph_builder import attr_scope builder GraphBuilder(my_graph) # 使用属性作用域 with attr_scope({custom_attr: value}): # 在此作用域内创建的节点会自动应用属性 tensor builder.create_const_float(1.0)control_dependency_scope 上下文管理器文件位置:graph_builder.py功能: 控制依赖作用域管理在作用域内创建的节点自动添加控制依赖使用示例:from ge.es import GraphBuilder from ge.es.graph_builder import control_dependency_scope builder GraphBuilder(my_graph) tensor1 builder.create_const_float(1.0) # 使用控制依赖作用域 with control_dependency_scope([tensor1]): # 在此作用域内创建的节点会自动依赖tensor1 tensor2 builder.create_const_float(2.0)C API包装层文件目录:_capi目录下的文件功能提供对 C 库的 Python 封装主要组件:库加载: _lib_loader.pyC结构体定义:EsCTensorHolder- C层张量持有者结构体EsCGraphBuilder- C层图构建器结构体EsCGraph- C层图结构体API函数分类:GraphBuilder API- 图构建器创建、销毁、构建TensorHolder API- 张量创建、属性设置属性设置API- 图/张量/节点属性设置操作符API- 数值操作在生成库中辅助函数:is_generated_lib_available()- 检查生成库是否可用get_generated_lib()- 获取生成库实例不同的 OPP 分包有不同的生成库实例依赖关系内部依赖:ge._capi.pyes_graph_builder_wrapper- C API包装器ge.graph.types- 数据类型和格式枚举ge.graph- Graph类ge.graph.node- Node类外部依赖:ctypes库 - C接口调用threading库 - 线程局部存储用于作用域管理es模块与graph模块的关系es模块- 提供函数式Eager-Style的图构建方式graph模块- 图基础模块es模块最终通过GraphBuilder.build_and_reset()方法构建出graph模块的Graph对象es模块构建过程中使用graph模块的类型定义DataType、Format使用示例参考 使用es的python api构图sample更多示例请参考 examples/es 目录下的 Python 用例。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考