模型广场 (Model Farm) 用户指南
简介
为了加快开发者针对 AI 模型在目标端侧硬件平台上进行性能评估,阿加犀构建了模型广场 (Model Farm) 平台。模型广场包含了数百个不同功能的主流开源模型,针对不同硬件平台进行了适配优化,并提供了经过实测的基准性能指标作为参考。开发者可根据实际要求,快速完成评估,而无需投入大量成本和长时间等待。
同时,模型广场还提供了可直接运行的模型推理示例代码,极大的降低了开发者在已有硬件设备上测试模型性能及 AI 功能代码开发的难度和工作量,并缩短了整个流程时间,加速了方案的落地。
功能介绍
具体来说,Model Farm 能够帮助开发者完成以下几个事情:
- 查询指定 AI 模型在指定高通硬件上的 AI 性能
- 下载适配优化后的 AI 模型 (可以调用 NPU 硬件计算单元进行推理加速)
- 下载模型对应的前后处理 + 模型推理示例代码
- 查看模型适配优化步骤,方便开发者参考并适配优化自己微调的模型
Model Farm 模型测试流程
用户微调模型测试流程
Model Management Service (MMS)
阿加犀提供了模型管理服务 (Model Management Service) 组件,开发者可以不需要通过网页即可访问 Model Farm,在端侧设备上通过该服务直接获取模型信息及相关文件代码包。
关于 MMS 的详细介绍,请参考:模型管理服务 (MMS)
快速开始
开发者通过 Model Farm 完成一个 AI 模型在端侧设备的推理需要经历以下步骤:
同时,我们也提供了一个具体的例子帮助开发者更快的上手 Model Farm 使用:通过 Model Farm 完成 YOLOv5s 模型部署至 Qualcomm QCS8550 设备
准备工作
准备开发板
Model Farm 所提供的模型,针对高通跃龙 (Qualcomm Dragonwing) 物联网芯片平台进行了适配优化,并在采用了高通芯片的开发板上进行了性能测试。Model Farm 已支持以下高通芯片型号:
- Qualcomm QCS6490
- Qualcomm QCS8550
准备开发工具和设备激活
💡注意
如果使用阿加犀提供的开发板则已经预装开发工具并激活环境,开发者可以跳过此步骤
阿加犀为开发者提供了一套简单易用的端侧 AI 应用开发工具包 (AidLux SDK),帮助开发者快速的构建在不同硬件平台上端到端加速的 AI 应用。
阿加犀提供的相关开发套件需要在激活的环境中才能正常使用。通过 AidLux SDK 套件中的 LMS 组件来实现激活。
针对不同的开发板及系统环境阿加犀提供了开发工具预装和系统激活的服务:
开发板类型 | AidLux SDK 预装 | 环境激活 |
---|---|---|
阿加犀 AidLux OS 开发板 | ✅ | ✅ |
阿加犀 AidLux Linux Container 开发板 | ✅ | ✅ |
第三方开发板 | 联系阿加犀 获取支持 | 联系阿加犀 获取支持 |
提示
针对非阿加犀的第三方开发板,Model Farm 仍然可以提供优化后的模型文件,开发者可以自行开发应用。如需使用 AidLux SDK,请联系阿加犀获取相关软件及安装指导。
准备开发者帐户
开发者可以免登录 Model Farm 浏览模型信息和性能指标。
当开发者下载模型及示例代码时,需要登录开发者账号才能进行下载。
- 注册成为阿加犀开发者
- 请访问:开发者帐户注册
- 按照注册表单提示及要求,填写开发者相关信息
- 信息填写无误后,提交帐户创建请求
登录 Model Farm
网页登录
访问网址 Model Farm
MMS登录
阿加犀开发板用户,还可通过 AidLux SDK 内置的模型管理服务 (MMS) 组件登录 Model Farm,步骤如下:
💡注意
请确保 AidLux SDK 已准备就绪
# 登录 Model Farm
$ mms login -u <开发者帐户用户名> -p <开发者帐户密码>
登录成功将显示
Login successfully.
查看模型
开发者可根据需求,查找 Model Farm 上的模型,并了解模型详细信息,作出快速的评估。
方式一:通过网页查看
开发者可通过浏览器访问 Model Farm 网址进行浏览及模型详情查看。
Model Farm 提供多种方式筛选查找模型:
- 根据模型类型筛选
- 根据模型数据精度筛选
- 根据芯片平台筛选
- 关键字搜索
方式二:通过 MMS 查看
阿加犀开发板用户,还可通过 AidLux SDK 内置的模型管理服务 (MMS) 组件查看 Model Farm 上的模型信息。
使用 MMS 查找模型示例:
# 列出所有模型
$ mms list
# 根据模型名查找模型
$ mms list yolo
Model Precision Chipset Backend
----- --------- ------- -------
YOLO-NAS-l FP16 Qualcomm QCS8550 QNN2.29
YOLO-NAS-l INT8 Qualcomm QCS6490 QNN2.29
YOLO-NAS-l INT8 Qualcomm QCS8550 QNN2.29
YOLO-NAS-l W8A16 Qualcomm QCS6490 QNN2.29
YOLO-NAS-l W8A16 Qualcomm QCS8550 QNN2.29
YOLO-NAS-m FP16 Qualcomm QCS8550 QNN2.29
YOLO-NAS-m INT8 Qualcomm QCS6490 QNN2.29
YOLO-NAS-m INT8 Qualcomm QCS8550 QNN2.29
下载模型
方式一:通过网页下载
在模型详情页中的性能参考处点击对应按钮下载模型及代码包。
方式二:通过 MMS 下载
开发者使用mms login
命令成功登录 Model Farm 后,可使用mms get
命令进行模型及示例代码下载:
# 下载 yolov6l 模型,数据精度为 INT8, 针对 QCS8550 芯片平台优化,推理框架为 QNN2.23
$ mms get -m yolov6l -p int8 -c qcs8550 -b qnn2.23
Downloading model from https://aiot.aidlux.com to directory: /var/opt/modelfarm_models
Downloading [yolov6l_qcs8550_qnn2.23_int8_aidlite.zip] ... done! [40.45MB in 375ms; 81.51MB/s]
Download complete!
详细使用说明,可参考mms get -h
命令输出内容。
模型性能参考
Model Farm 的模型详情页面提供了 AI 模型在对应硬件上的实测性能。
- 设备:模型实测所采用的开发板型号及对应芯片型号
- AI框架:模型转换及推理使用的框架及版本号
- 模型数据精度:转换后的模型采用的数据精度
- 推理耗时:模型运行的实测耗时,不包括前后处理
- 精度损失:对比源模型 (FP32) 和转换后模型的输出矩阵余弦相似度
- 模型大小:转换后模型文件大小
💡注意
对于同样的 SoC 芯片,不同硬件规格设备,模型性能仅作为参考数据
以 YOLOv5s 在 MeiG SNM972 (QCS8550) 为例:
测试模型
阿加犀提供了 AI 推理框架 AidLite,用于在端侧设备调用高通 NPU 推理 AI 模型。
Model Farm 支持的模型均能够通过 AidLite SDK 完成模型推理,另外 Model Farm 也提供了对应模型的前后处理代码,保证开发者可以快速查看模型效果。
通过下载模型步骤,开发者可以获得一个完整的模型文件 + 推理代码包,其文件结构如下所示 (以YOLOv5s举例) :
/model_farm_yolov5s
|__ models # 模型文件
|__ python # 基于python的模型推理代码
|__ cpp # 基于cpp的模型推理代码
|__ README.md # 模型信息说明 & 相关软件依赖安装引导
运行模型测试用例需要经历以下步骤:
- 开发板环境激活:激活方式请参考准备工作
- 安装AidLite及其他软件环境依赖:参照
README.md
- 运行示例:参照
README.md
提示
AidLite SDK 针对 QNN 有多个版本,可以在模型详情的性能参考中查看 QNN 版本或者 README 中查看 QNN 版本
转换微调模型
阿加犀提供了模型优化平台 AIMO,用于完成模型转换至高通平台专属格式。
Model Farm 支持的模型基本都能够通过使用 AIMO 完成转换。基于此,Model Farm 不仅提供已转换优化的模型文件,同时也提供该模型的使用 AIMO 转换参考步骤。
AIMO 模型转换参考步骤可以在以下两个地方查看:
- 模型详情页面右侧的性能参考模块查看,点击模型转换参考即可访问。
- 代码包中的
README.md
文件 Model Conversion Reference 模块查看,点击链接即可访问。
关于 AIMO 的介绍及使用,请参考:模型优化平台 AIMO 用户指南
完整示例
通过 Model Farm 完成 YOLOv5s 模型部署至 Qualcomm QCS8550 设备
步骤一:访问网站并查找模型
开发者可以通过网页浏览器直接访问 Model Farm:https://aiot.aidlux.com/zh
通过搜索栏直接搜索 YOLOv5s 模型,可以搜出不同量化精度的 YOLOv5s 版本,该案例我们选用 INT8 量化精度,并点击 YOLOv5s-INT8 的模型卡片查看详情。
步骤二:查看模型性能
模型详情页面左侧是模型介绍以及相关工具说明,右侧的悬浮窗口展示了模型在对应硬件上的参考性能
我们选择 MeiG SNM972 设备 (QCS8550) 作为参考硬件,可以看到 YOLOv5s 的 INT8 精度在该硬件上的性能指标,如下图所示:
💡注意
推理耗时指标指的是模型运行的耗时,不包括前后处理代码
步骤三:下载模型及代码包
开发者想要获取模型文件及推理代码需要注册 Model Farm 开发者账号并登录,具体操作请参考:准备开发者帐户 及 登录 Model Farm
登录开发者账号后,点击模型 & 代码按钮即可下载模型文件和代码包。
同时,我们也可以在模型详情页的推理示例代码模块处查看代码包的文件结构及说明,如下图所示:
步骤四:导入模型 & 代码包并安装软件环境依赖
当开发者准备好了硬件开发板后,可以将下载好的代码包导入到开发板环境中。环境准备请参考:准备工作部分说明。
开发者需要参考代码包中的README.md
文件安装模型推理的软件依赖。该案例中我们需要只需要安装 AidLite SDK (QNN2.16 版本)。关于 AidLite SDK 的介绍及使用请参考:AI 推理框架 AidLite
提示
AidLite SDK 针对 QNN 有多个版本,可以在模型详情的性能参考中查看 QNN 版本或者 README 中查看 QNN 版本
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
# Install AidLite QNN2.16 version
sudo aid-pkg install aidlite-qnn216
安装完成后验证 AidLite SDK 是否安装成功
# aidlite sdk c++ check
python3 -c "import aidlite; print(aidlite.get_library_version())"
# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"
步骤五:运行模型测试用例
软件依赖安装完成后,参考README.md
文件中的运行步骤,开发者可以分别去代码包中的python
文件夹和cpp
文件夹用不同的编程语言运行 YOLOv5s 案例。
步骤六:转换自定义的微调模型及推理
当开发者想要测试自己微调的 YOLOv5s 模型在 QCS8550 上的运行效果时,Model Farm 提供了使用 AIMO 转换 YOLOv5s 模型的参考步骤。
AIMO 模型转换参考步骤可以在以下两个地方查看:
- 模型详情页面右侧的性能参考模块查看,点击模型转换参考即可访问。
- 代码包中的
README.md
文件 Model Conversion Reference 模块查看,点击链接即可访问。
开发者可以参考该步骤使用 AIMO 转换自己的 YOLOv5s 模型。有关 AIMO 的介绍及使用可以参考:模型优化平台 AIMO 用户指南
完成模型转换后,开发者可以替换码包中的 YOLOv5s 模型文件,并再次运行测试用例查看效果。
💡注意
模型之间可能存在差异,测试用例无法保证只替换模型就能成功推理,开发者需要针对自己的模型进行前后处理代码调整