基于Mobile-Deep-Learning的芯原TIM-VX推理部署指南
Paddle-Lite 项目地址: https://gitcode.com/gh_mirrors/pad/Paddle-Lite
概述
本文将详细介绍如何在搭载芯原NPU的各类开发板上,使用Mobile-Deep-Learning项目进行深度学习模型的推理部署。芯原(Verisilicon)作为IP设计厂商,其NPU IP被广泛应用于多家厂商的SoC芯片中。通过TIM-VX接口,我们可以高效地利用这些芯片的NPU算力进行模型推理。
支持情况
硬件支持
目前已验证支持的芯片型号包括:
- 晶晨系列:A311D、S905D3、C308X
- 多家厂商系列:RV1109、RV1126、RK1808
- 恩智浦:i.MX 8M Plus
理论上,所有采用芯原NPU IP且驱动版本匹配的SoC均可支持。
模型支持
已测试验证的模型包括:
- 分类模型:MobileNet系列、ShuffleNetV2、ResNet50等
- 检测模型:SSD MobileNetV1、YOLOv5s、PicoDet等
这些模型均已量化为INT8格式,能够充分发挥NPU的算力优势。
环境准备
驱动版本检查
在部署前,必须确保NPU驱动版本符合要求:
dmesg | grep Galcore
推荐驱动版本:
- 晶晨:6.4.4.3
- 多家厂商:6.4.6.5
- 恩智浦:6.4.3.p1
驱动更新方法
若驱动版本不符,有两种更新方式:
方法一:手动替换驱动
- 根据芯片型号和开发板信息,获取对应的galcore.ko驱动文件
- 上传至开发板并加载:
sudo rmmod galcore
sudo insmod galcore.ko
- 设置驱动开机自启动
方法二:刷机更新
向开发板厂商获取匹配的固件版本进行刷机,这是最彻底的解决方案。
示例程序部署
获取示例程序
下载通用示例程序包,其中包含:
- 预编译的Paddle Lite库
- 图像分类示例代码
- 测试模型和数据集
程序结构说明
主要目录结构:
PaddleLite-generic-demo
├── image_classification_demo # 示例程序
│ ├── assets # 资源文件
│ │ ├── configs # 配置文件
│ │ ├── datasets # 测试数据集
│ │ └── models # 模型文件
│ └── shell # 脚本文件
└── libs # 依赖库
└── PaddleLite
└── linux # Linux平台库文件
编译与运行
交叉编译环境
建议使用Docker统一编译环境,确保环境一致性。安装必要的工具:
apt-get install openssh-client sshpass
运行示例
根据连接方式选择相应脚本:
run.sh
:本地运行run_with_ssh.sh
:通过SSH运行run_with_adb.sh
:通过ADB运行
性能数据
在不同芯片上的典型模型推理性能(单位:ms):
| 模型 | A311D(NPU) | S905D3(NPU) | RK1808(NPU) | |------|------------|-------------|-------------| | MobileNetV1 | 5.11 | 12.81 | 6.14 | | ResNet50 | 17.58 | 41.31 | 18.18 | | YOLOv5s | 92.21 | 198.37 | 179.02 |
从数据可以看出,NPU相比CPU有显著的加速效果,特别是计算密集型的模型。
常见问题
- 驱动加载失败:检查内核版本是否匹配,确认驱动文件是否正确
- 模型运行出错:检查模型是否完整,量化参数是否正确
- 性能不达预期:确认NPU是否正常工作,驱动版本是否匹配
总结
通过Mobile-Deep-Learning项目,我们可以方便地在各类搭载芯原NPU的开发板上部署深度学习模型。关键点在于:
- 确保NPU驱动版本正确
- 使用适配的模型和配置
- 合理利用NPU的加速能力
希望本指南能帮助开发者快速上手在边缘设备上部署深度学习应用。
Paddle-Lite 项目地址: https://gitcode.com/gh_mirrors/pad/Paddle-Lite
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考