文档
注册

流程编排介绍

关于流程编排

插件化开发方式可简化开发,但在灵活度和处理性能上有所降低。对于简单业务场景的推理,可以同时兼顾易用性与高性能,如1~3个模型的串行推理业务流(具体可参考样例介绍)。

对于诸如视频结构化等复杂场景,涉及到多个业务流分支的并行和数据交互,流程编排在简化开发的同时,将会带来性能的损耗。如果您开发的算法流程复杂,希望追求更高的性能,我们推荐您使用API V2接口或者参考CANN 6.3.RC1 应用软件开发指南 (C&C++)昇腾310B AI处理器请参见CANN 6.2.RC1 应用软件开发指南 (C&C++))使用AscendCL(Ascend Computing Language)进行开发。

基础概念

通过pipeline配置文件,Stream manager可识别需要构建的Element以及Element之间的连接关系,并启动业务流程。Stream manager对外提供接口,用于向Stream发送数据和获取结果,帮助用户实现业务对接。

Plugin表示业务流程中的基础模块,通过Element的串接构建成一个Stream。Buffer用于内部挂载解码前后的视频、图像数据,是Element之间传递的数据结构,同时也允许用户挂载元数据(Metadata),用于存放结构化数据(如目标检测结果)或过程数据(如缩放后的图像)。

图1 SDK业务流程相关基础单元
表1 基础概念介绍

名称

类名称

说明

描述

Stream

MxStream

业务流

完整的推理业务流,由插件串流组成。

Stream manager

MxStreamManager

业务流管理模块

负责创建和销毁Stream,同时提供向其发送数据和获取结果的接口。

Plugin

MxPlugin

功能插件

业务流程中的功能模块,构成业务流的基础单元。

Element

功能元件

由插件so实例化生成的对象,同一个插件so可以实例化多个对象,如图1中两个图像缩放元件。

Plugin Buffer

MxpiBuffer

插件缓存

插件之间传递的数据,其内容为非结构化数据,例如解码前后的视频、图像数据。

Plugin Metadata

MxpiMetadata

插件元数据

插件生成的结构化数据,例如分类信息、目标信息。元数据依附在插件缓存上实现传递。

pipeline配置文件介绍

图2为推理业务流pipeline配置文件样例,包括业务流名称、Stream配置、元件名称、插件名称、元件属性、下游元件名称。

配置文件以Json格式编写,用户必须指定业务流名称、元件名称和插件名称,并根据需要,补充元件属性和下游元件名称信息,具体参见表2

图2 pipeline配置文件样例
图3 pipeline配置文件带nextMeta样例
表2 pipeline配置文件说明

名称

是否必选

描述

业务流名称(Stream)

必选

用于指定需要操作的Stream实体。

例如Stream manager发送数据时,需要指定Stream名称。

Stream配置(Stream_config)

必选

设置Stream的配置参数。

例如Device ID,即指定Stream运行在哪个芯片上。

元件名称(Element)

必选

用于构建Stream中的插件实体,即插件的对象。

与“下游元件名称”配合使用,用于定义元件间的连接关系。建议以插件基类名+序号命名,且保证Stream内名称唯一。

插件名称(Factory)

必选

用于构建元件。从已有插件介绍中获取。

元件属性(Props)

可选

用于根据业务特点修改相应的配置参数。

例如图像缩放插件中,指定输出图像的宽高。具体请参见已有插件介绍,每个属性都有默认值。

下游元件名称(Next)

必选

(除Stream中最后的元件)

用于根据具体业务,确定下游元件的功能。

本插件产生的数据将传递给下游元件。若存在多个下游插件时,用逗号分隔,冒号后面添加端口号,用中括号包含在一起。

下游元数据接收元件名称(NextMeta)

可选

主要针对多输入端口的插件进行设置,确定下游元数据接收元件的功能。

本插件产生的元数据将传递给下游元件,若存在多个下游插件时,用逗号分隔,用中括号包含在一起,可在冒号后面添加端口号用于指定相同下游元件时的输入顺序,若不添加端口号将以默认顺序输入。

表3 插件公共属性配置说明

名称

是否必选

描述

dataSource

可选

(建议使用上游的nextMeta属性进行替换。)

插件process函数处理的数据来源,Stream上游的SDK插件,不支持Gstreamer原生插件。

string类型,默认为“auto”。该值由一个或多个上游插件的nextMeta属性所指定。若上游插件未设置nextMeta到该插件时,该插件输入以该插件的dataSource属性为准,反之以nextMeta为准。

status

可选

指定插件为同步或异步执行。int类型,取值范围[0, 1],0为异步,1为同步,默认为0(异步执行),请用户谨慎设置。

deviceId

可选

指定插件运行的Device侧芯片ID。int类型,默认为0,请用户根据实际情况设置。

公共属性可直接在“props”属性内配置参数。

图4 配置公共属性
  • 不论属性值的数据类型是否为字符串,属性值都以字符串方式填写。例如"resizeWidth": "2048",而非"resizeWidth": 2048。
  • 目前单个Stream只支持在一个昇腾AI处理器(即一个Device)上运行,请通过“Stream_config”指定“deviceId”

多输入/输出元件的流程编排

当元件包含多个输入端口时,在“next”指定的元件名后增加“:index”(index为端口编号)指定端口,如图5所示。例如“mxpi_parallel2serial0:0”表示元件的输出端口与mxpi_parallel2serial0元件的0号端口连接。

图5 多输入元件流程编排样例

当元件包含多个输出端口时,在“next”对应的value(值)中通过“[]”指定的多个元件,通过“,”区分,如图6所示。

图6 多输出元件流程编排样例

“[]”中指定的元件序号与当前元件的输出端口一一对应,即“[]”中第一个元件与当前元件的第0号端口关联,第二个元件与当前的第1号端口关联,以此类推。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词