通过ES构建Graph【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge功能介绍使用ES构建Graph整体流程分为如下四个步骤其中创建图构建器初始化图构建器实例用于提供构图所需的上下文、工作空间及构建相关方法。添加起始节点起始节点指无输入依赖的节点通常包括图的输入如Data节点和权重常量如Const节点。添加中间节点中间节点为具有输入依赖的计算节点通常由用户构图逻辑生成并通过已有节点作为输入连接。设置图输出明确图的输出节点作为计算结果的终点。构图过程中主要涉及两个对象 以C为例Graph表示最终构建完成的计算图是构图的目标产物。EsGraphBuilder构图辅助类提供节点添加、连接、属性设置等方法并记录构图过程的中间状态。EsGraphBuilder仅在构图阶段存在用于承载中间构建信息是APP构图时直接操作的对象。在构图完成后其内部状态被封装为Graph实例返回EsGraphBuilder本身及其相关资源被释放。构建Graph实例以下是使用C、C、Python三种语言实现ES构图的实例以构造一个“两个输入求和”计算图为例C代码示例#include es_math_ops_c.h // Add算子所在的聚合头文件里面包含了所有算子的头文件合集以及图构建器等基础结构的头文件 // 1. 创建图构建器EsCGraphBuilder EsCGraphBuilder *builder EsCreateGraphBuilder(graph_name); // 2. 添加起始节点 EsCTensorHolder *data0 EsCreateGraphInput(builder, 0); // 添加第1个输入节点 EsCTensorHolder *data1 EsCreateInput(builder, 1); // 添加第2个输入节点 // 3. 添加中间节点 EsCTensorHolder *add EsAdd(data0, data1); // 添加加法计算节点不再需要显式传入builder // 4. 设置图输出 EsSetOutput(add, 0); // 将add节点设置为图的第1个输出 // 5. 完成构图返回最终图对象 EsGraph *graph EsBuildGraphAndReset(builder); // 获取构建完成的图 // 6.释放builder及其管理的过程资源 EsDestroyGraphBuilder(builder);相关接口说明请参见ES接口。CPP代码示例#include es_math_ops.h // Add算子所在的聚合头文件里面包含了所有算子的头文件合集以及图构建器等基础结构的头文件 namespace ge { namespace es { // 1. 创建图构建器EsGraphBuilder EsGraphBuilder builder(graph_name); // 2. 添加2个输入节点 std::vectorEsTensorHolder inputs builder.CreateInputs2(); EsTensorHolder data0 inputs[0]; EsTensorHolder data1 inputs[1]; // 3. 添加中间节点C中加减乘除等常用运算符被重载可以直接使用 EsTensorHolder add data0 data1; // 4. 设置图输出 builder.SetOutput(add, 0); // 5. 完成构图获取构造好的Graph对象builder中的资源随析构而销毁 std::unique_ptrge::Graph graph builder.BuildAndReset(); } }相关接口说明请参见ES接口。Python代码示例使用Python代码构图之前需要先安装生成ES构图API可选中生成的whl包安装示例如下pip3 install {OUTPUT_PATH}/whl/es_math-1.0.0-py3-none-any.whl构图示例代码如下from ge.es import GraphBuilder from ge.es.math import Add # 1. 创建图构建器EsBuilder builder GraphBuilder(graph_name) # 2. 添加 2 个输入节点 data0, data1 builder.create_inputs(2) # 3. 添加中间节点 Python中加减乘除等常用运算符被重载可以直接使用 add data0 data1 # 4. 设置图输出 builder.set_output(add, 0) # 5. 完成构图返回最终图对象 graph builder.build_and_reset()相关接口说明请参见ES接口。源码仓还给出了如下各种场景的ES构图样例供用户参考表 1ES构图sample特性获取链接备注控制边场景的ES构图C代码示例Python代码示例参见README执行相关操作。控制算子场景的ES构图C代码示例Python代码示例参见README执行相关操作。动态输入场景的ES构图C代码示例Python代码示例参见README执行相关操作。动态输出场景的ES构图C代码示例Python代码示例参见README执行相关操作。设置普通属性的ES构图C代码示例Python代码示例参见README执行相关操作。普通输入的ES构图C代码示例Python代码示例参见README执行相关操作。操作符重载的ES构图C代码示例Python代码示例参见README执行相关操作。可选输入场景的ES构图C代码示例Python代码示例参见README执行相关操作。私有属性场景的ES构图C代码示例Python代码示例参见README执行相关操作。transformer场景部分片段的ES构图C代码示例Python代码示例参见README执行相关操作。集合通信EP场景的ES构图C代码示例Python代码示例说明EPExpert Parallel图是指通过专家并行方式在多卡上运行的图结构。集合通信TP场景的ES构图C代码示例Python代码示例说明 TPTensor Parallel图是指通过张量并行方式在多卡上运行的图结构。自定义ES API并构图单击custom_es_api获取样例参见README执行相关操作。-【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考