高通AI应用程序开发3:网络模型(二)用户定义操作

参考:

UDO 概述

介绍

Qualcomm®神经处理SDK允许用户以用户定义操作(以下简称UDO)的形式插入运行时引擎可能不固有支持的自定义神经网络操作。这些可能是在流行的训练框架(如Tensorflow)中定义的操作,也可能是基于框架扩展构建的自定义操作,但在Qualcomm®神经处理SDK中不可用。它们可以在任何支持的硬件加速器上本地执行。Qualcomm®神经处理SDK提供了以无缝方式执行这些操作的基础设施,与执行内部支持的操作相比,几乎没有开销。

UDO 包剖析

Qualcomm®神经处理SDK允许用户以动态库的形式提供UDO实现,可以查询、加载和执行动态库,以使用其中定义的内核执行推理。Qualcomm®神经处理SDK推广了“UDO包”的概念,用户可以通过该包轻松表达UDO不同组件之间的关联。这个概念是所有工具的核心,这些工具使用户能够创建用于网络推理的UDO包。然而,值得注意的是,Qualcomm®神经处理SDK在运行时仍然直接与各种UDO库交互,而不是与UDO包构造交互。因此,用户可以自由地构建独立的库,而不必严格受限于包的概念。
下图说明了UDO包的概念:

如图所示,UDO包由注册组件和实现组件组成。它们通常用一个注册库和一组实现库分别表示,每个硬件加速器都有一个实现内核。如果用户愿意,他们可以选择将这两个组件构建到一个库中。
注册库由指定所有用户定义操作及其设计的硬件核心的方法组成。它还包括允许在创建网络时验证操作是否健全的方法。注册库在ARM CPU上加载并执行。

特定于硬件的实现库公开了实现操作实例创建、执行、分析和销毁的其他几种方法。这些是通过相应软件平台支持的编程结构实现的,例如GPU的OpenCL和DSP的Hexagon NN SDK。虽然特定于核心的实现文件在源代码上可能完全不同,但它们都需要使用$SNPE_ROOT/include/SNPE/SnpeUdo中定义的一组C API与Qualcomm®神经处理SDK进行接口。有关这些API的完整详细信息,可从高通®神经处理SDK API获取。

UDO 工作流

® Qualcomm 神经处理 SDK 在开发和 将 UDO 集成到运行时中:

工作流的第一步是识别模型中需要表示为用户定义操作的操作,并通过配置文件描述其属性。此文件的格式和内容在定义UDO。中进行了描述。

下一组步骤通过为UDO内核创建源文件并根据适当的工具链对其进行编译来生成UDO包的组件,以生成特定于GPU和DSP等硬件内核的动态库。Qualcomm®神经处理SDK提供了一个名为snpe-udo-package-generator包生成器的工具,该工具可帮助用户创建与Qualcomm™神经处理SDK udo API接口的通用骨架代码,并为用户留下占位符以填写内核实现。它还为x86、Android等常见目标以及配置文件中指定的每个目标的运行时生成makefile。有关包生成的更多详细信息,请参阅 创建 UDO 包。有关编译特定运行时的UDO包的详细信息,请参阅编译编译 UDO 包

高通®神经处理SDK模型转换工具还需要使用第一步中创建的配置文件以及实际训练的模型,以便使用文件中的定义解释用户定义的操作。然后,可以使用snpe-DLC-info等工具检查生成的DLC文件,以探测模型中UDO的属性。有关使用UDO创建(和可选量化)DLC的详细信息,请参阅使用UDO准备模型。可选地,具有UDO的模型也可以使用Qualcomm®神经处理SDK量化工具进行量化,以与定点运行时(如DSP)一起使用。量化器工具估计来自网络中所有层(包括UDO)的激活的量化范围。由于该工具在x86主机上脱机运行,因此需要为UDO提供CPU实现,以便在整个网络中执行推理。这在工作流程图中也以虚线表示。有关量化过程的详细信息,请参阅使用UDO量化DLC。

此工作流的最后一步是能够使用UDO实际执行网络模型。Qualcomm®神经处理SDK应用程序使用UDO包在对选定网络模型运行推理的过程中注册UDO实现。应该指出的是,这些UDO可以由Qualcomm®神经处理SDK的多个实例同时执行,而不会出现竞争条件,这增加了网络推理的整体吞吐量。有关UDO包注册过程的更多详细信息,请参阅使用UDO运行模型

如果UDO的DSP实现库没有签名以在签名的进程域上执行(Qualcomm®Neural Processing SDK应用程序的默认值),则需要请求使用未签名的进程域名。未签名的过程域仅适用于DSP目标,并允许Qualcomm®神经处理SDK使用未签名的UDO实现库。要了解如何在Qualcomm®神经处理SDK应用程序中使用未签名的进程域, 请参阅使用UDO运行模型

UDO向后兼容性

本节规定了UDO包的限制:

  • 在特定的Qualcomm®神经处理SDK发布版本上为DSP V68或更高版本编译的UDO需要与相同的发布版本一起使用,不能与不同的发布版本使用。
  • 用户需要使用与特定高通®神经处理SDK版本兼容的正确高通®AI Direct SDK重新编译为DSP V68生成的UDO包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值