CANN/ge DataFlow简介
DataFlow简介【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge读者对象本文档用于指导开发者如何使用DataFlow接口进行计算图的构建、修改、编译和执行。通过本文档您可以达成以下目标了解通过FlowOperator构建FlowGraph的方法。掌握编译运行FlowGraph的方法。了解UDF开发过程及相关接口。熟悉CANN软件基本架构以及特性、具备C/C语言程序开发能力对机器学习、深度学习有一定了解的人员可以更好地理解本文档。DataFlow概述DataFlow用于描述采用数据队列以数据驱动方式将一个或多个计算处理点ProcessPoint组织成完整的计算流。ProcessPoint与算子的关键区别是采用异步方式处理。DataFlow通过FlowGraph来承载ProcessPoint通过FlowNode来承载各个接口之间的关系如下所示。图1DataFlow相关接口之间的关系 FlowGraphDataFlow的Graph由输入节点FlowData和计算节点FlowNode构成。FlowOperator是FlowGraph的节点基类衍生类有FlowData和FlowNode两种类型。FlowDataFlowGraph的输入节点。FlowNodeFlowGraph的计算节点。支持如下两种类型。FunctionPpFunction的计算处理点通过UDFUser Defined Function实现用户自定义功能。GraphPpGraph的计算处理点通过IR构图实现用户的计算逻辑。DataFlow支持用户通过FunctionPp和GraphPp编写自定义处理函数通过DataFlow构图以FlowModel的方式运行。DataFlow和IR构图的不同点如下所示。表1DataFlow和IR构图比较|维度|IR构图|DataFlow| |--|--|--| |数据流处理方式|- 图只支持一次输入对应一次输出。- 图中的算子之间采用同步数据流用于表达串行同步执行。|- DataFlow支持一次输入对应多次输出或者一次输入对应一次输出或者多次输入对应一次输出。灵活性更高。-DataFlow中的ProcessPoint采用异步数据流可以表达并行异步执行充分利用资源提升吞吐量。| |自定义功能开发方式|通过开发自定义算子实现。算子包括算子原型定义、算子代码实现、算子信息库定义、算子适配等过程需要用户开发的交付件多使用门槛相对较高。|可以通过开发UDF实现也可以通过开发自定义算子实现。UDF开发只需要定义用户函数构建图。用户交付件少使用门槛低。| |内存分配方式|算子的输入内存、输出内存是已经申请好的。|UDF输出内存是用户自定义的需要用户自己申请。|整体开发流程约束无论是在host侧还是device侧模型对输入数据都不能进行修改。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考