CANN/GE DataFlow Python开发指南概述

CANN/GE DataFlow Python开发指南概述
概述【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/geDataFlow简介DataFlow是一套面向异构系统的应用开发和执行框架提供了一套API来帮助用户快速表达业务逻辑。框架屏蔽异构硬件和组网的差异并以异步流水方式提升应用的整体性能和吞吐量。同时DataFlow提供了简单灵活的部署策略用户可以方便地调整每个业务实例的个数以及部署位置从而提升应用的资源利用率降低用户的使用成本。下图是一个应用DataFlow使能异步流水提升吞吐的示例示例应用由3个计算功能组成其中计算功能1和计算功能3为用户自定义函数计算功能2为计算图执行原始流程中3个计算流程串行执行。DataFlow通过FlowGraph来承载整个计算流每个计算功能对应图上的一个FlowNode节点并通过FuncProcessPoint或者GraphProcessPoint来承载节点功能。节点间通过异步数据流连接当FlowGraph有多组数据输入时多个FlowNode能够同时处理不同的数据即将原始的串行执行流程转换为了异步流水的执行过程。DataFlow各个节点的关系如下所示FlowGraphDataFlow的Graph由输入节点FlowData和计算节点FlowNode构成是DAGDirected Acyclic Graph图数据流有向且不允许有成环表达。FlowDataFlowGraph的输入节点。FlowData定义了输入节点的名称和类型。FlowNodeFlowGraph的计算节点。FlowNode定义了计算节点的名称、输入个数、输出个数。支持如下两种类型。FuncProcessPointFunc的计算处理点通过UDFUser Defined Function实现用户自定义功能。GraphProcessPointGraph的计算处理点通过IR构图实现用户的计算逻辑。DataFlow支持用户通过FuncProcessPoint和GraphProcessPoint编写自定义处理函数通过DataFlow构图以FlowModel的方式运行。DataFlow应用场景多模型串接下沉执行DataFlow可以对自定义计算节点或模型进行编排通过数据驱动模型执行其中被定义成GraphProcessPoint的节点可以完全下沉device侧执行且相邻的两个GraphProcessPoint之间的数据传输将在device-device间进行。上述机制减少了host和device之间控制面和数据面的交互降低整个DataFlow图执行的时延从而提升整体性能。如下图所示DataFlow图中包含了两个FuncProcessPointUDF0和UDF1两个GraphProcessPoint分别用于加载onnx模型和pb模型进行推理GraphProcessPoint可以完全下沉到device执行数据在UDF0、UDF1处理结束后传递到device两个模型的执行和数据传递将完全在device进行。基于PyTorch模型的在线推理DataFlow可以结合多种深度学习框架进行模型的训练或在线推理来达到提高模型吞吐的目的。以PyTorch为例在使用PyTorch进行模型在线推理时通常会经过预处理、模型推理以及后处理三个步骤其中模型推理又可以根据模型结构拆分成多个串行执行的子模型。根据上述业务逻辑DataFlow能够将预处理、多个子模型推理以及后处理封装成能够异步执行的多个FuncProcessPoint并通过异步队列将它们间的数据流串接起来如下图所示通过将原始串行执行流程转换为一张FlowGraph图在进行多轮推理时能够使能不同模块间的异步流水从而提升应用的整体吞吐量。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考