AI 开发者工作流程
Qualcomm Linux 中的 AI/ML 开发人员工作流程主要分为两个步骤: 步骤 1:
编译并优化模型
- 编译并优化来自第三方 AI 框架的模型,以便在 RUBIK Pi 3 上高效运行。例如,可以将 TensorFlow 模型导出为 TFLite 模型。
- 或者,使用硬件特定的定制来量化、细调性能和精确度。
步骤 2:
编译应用程序,使用优化后的模型在设备上运行推理
- 将 AI 模型集成到用例 pipeline 中。
- 或者使用安卓的 native sdk 调用 Qualcomm AI SDKs。
概述
开发人员可以从 ONNX、PyTorch、TensorFlow 或 TFLite 引入模型,并使用 Qualcomm AI SDK 在 Qualcomm AI 硬件 - HTP (NPU)、GPU、CPU 上高效运行这些模型。
AI 硬件
-
Qualcomm Kryo™ CPU- 一流的 CPU,具有高性能和卓越的能效。
-
Qualcomm Adreno GPU- 适合在需要平衡功耗与性能的情况下执行 AI 工作负载。AI 工作负载可以通过 OpenCL 内核进行加速。GPU 还可用于加速模型预处理/后处理。
-
Qualcomm Hexagon 张量处理器 (HTP)- 又称 NPU/DSP/HMX,适合以低功耗、高性能执行AI 工作负载。为优化性能,需要对预训练模型进行量化,使其达到支持的任一种精度。
AI 软件
AI 堆栈包含各种 SDK,以便利用 AI 硬件加速器的强大功能。开发人员可以使用自己选择的一种 SDK 来部署 AI 工作负载。预训练模型(TFLite 模型除外)在运行之前需要使用所选 SDK 将其转换为可执行格式。TFLite 模型可以使用 TFLite Delegate 直接运行。
- TFLite
TFLite 模型可以在使用以下 Delegate 进行加速的条件下在 Qualcomm 硬件本地执行。
Delegate | 加速 |
---|---|
AI Engine Direct Delegate (QNN Delegate) | CPU, GPU 和 HTP |
XNNPACK Delegate | CPU |
GPU Delegate | GPU |
- Qualcomm 神经网络处理引擎 (SNPE) SDK
Qualcomm 神经网络处理引擎 (SNPE) 是一种用于执行深度神经网络的软件加速 runtime。SNPE 提供相关工具来对神经网络进行转换、量化,并在 CPU、GPU 和 HTP 等硬件加速器上对其进行加速。
- Qualcomm AI Engine Direct (QNN)
Qualcomm AI Engine Direct 是 Qualcomm 芯片组和 AI 加速核心中适用于 AI/ML 用例场景的一种软件架构。该架构旨在提供统一的 API,模块和可扩展的预加速库,从而基于这种可重用的结构打造全栈 AI 解决方案。它可为 Qualcomm 神经网络处理 SDK、TFLite AI Engine Direct Delegate 等 runtime 提供支持。
编译并优化模型
用户可以采用两种可用途径中的任一种来编译和优化他们的模型。
-
AI Hub
-
AI 软件堆栈
AI Hub
为了在 Qualcomm AI 硬件上快速构建模型原型,AI Hub 提供了一种方法,帮助开发人员针对视觉、音频和语音用例在设备上对机器学习模型进行优化、验证和部署。
有关设置和入门指南,可参见 AI Hub 文档。
环境配置
- 配置 Python 环境。
在计算机上安装 miniconda.
Windows:安装完成后,通过 Start 菜单打开 Anaconda 提示符窗口。
macOS/Linux:安装完成后,打开一个新的 shell 窗口。
为 Qualcomm(®) AI Hub 设置 Python 虚拟环境:
source <path>/miniconda3/bin/activate
conda create python=3.8 -n qai_hub
conda activate qai_hub
- 安装 AI Hub Python 客户端。
pip3 install qai-hub
pip3 install "qai-hub[torch]"
- 登录 AI Hub。
前往 AI Hub 并使用 Qualcomm ID 登录,查看所创建作业的相关信息。
登录后,导航至 Account* *> Settings > API Token。此时应提供一个可用于配置客户端的 API 令牌。
- 在终端,使用以下命令通过 API 令牌配置客户端。
qai-hub configure --api_token <INSERT_API_TOKEN>