陈军 · 3 天前

【“星瑞” O6 评测】—NPU 算力对比高通骁龙 npu

“星瑞” O6 评测 ——NPU 算力对比高通骁龙 npu

前言

在当下人工智能蓬勃发展的时代,设备的 NPU(神经网络处理器)算力成为衡量其 AI 处理能力的关键指标。“星瑞” O6 凭借其独特的 NPU 设计在市场中崭露头角,而高通骁龙系列处理器中的 NPU 也以高性能著称。本文将深入剖析 “星瑞” O6 的 NPU 与高通骁龙相关型号 NPU 的算力表现,通过实际 yolox_l 模型的推理速度测试和数据对比,为读者呈现二者在 AI 运算能力上的差异。

1. "星瑞"O6NPU 简介

瑞莎星睿 O6 (Radxa Orion O6) 拥有高达 28.8TOPs NPU (Neural Processing Unit) 算力,支持 INT4 / INT8 / INT16 / FP16 / BF16 和 TF32 类型的加速。 此文档主要讲解用户如何使用 CIX P1 NPU SDK 运行基于 NPU 加速推理的人工智能模型和应用。包括模型编译工具,工具链和一些常见模型案例进行逐步讲解。

2. 高通骁龙 8gen1+/8gen4 简介

高通骁龙系列处理器集成的 NPU,作为其 AI 引擎的核心,在移动 AI 运算领域持续创新与突破,为各类智能设备注入强大的 AI 处理能力。手里有两台设备:骁龙 8gen1+和骁龙 8gen4。两台设备都是台积电的 4nm 工艺。算力指标网上都没有找到。所以这里只能实测对了。其他指标可以参考高通官网:https://www.qualcomm.com/prod...

3. "星瑞"O6NPU 跑 yolox

具体可参考官方:https://docs.radxa.com/orion/...

设备端 python 环境安装

#1.安装驱动/python sdk包
sudo dpkg -i ./cix-npu-driver_1.0.0_arm64.deb
sudo dpkg -i ./cix-noe-umd_1.0.0_arm64.deb
#安装完之后重启O6设备。推理用的python sdk包已经安装在系统python路径中

#2.下载model hub
git clone https://e.coding.net/g-uaqh1479/ai-model-hub/ai_model_hub.git

#3.创建python环境
cd  ~/ai_model_hub
python3 -m venv --system-site-packages .venv

#4.安装依赖
cd ~/ai_model_hub
.venv/bin/pip3 install -r  requirements.txt

设备端 yolox_l 推理

#1.激活.venv python环境

#2.下载预编译好的yolox模型。
mkdir  ~/ai_model_hub/models && cd ~/ai_model_hub/models
wget https://modelscope.cn/models/cix/ai_model_hub_25_Q1/resolve/master/models/ComputeVision/Object_Detection/onnx_yolox_l/yolox_l.cix

#3.推理,并统计耗时
cd ~/ai_model_hub
python models/ComputeVision/Object_Detection/onnx_yolox_l/inference_npu.py --image_path models/ComputeVision/Object_Detection/onnx_yolox_l/test_data/ILSVRC2012_val_00004704.JPEG --model_path
~/ai_model_hub/models/yolox_l.cix

结果可视化/推理耗时

4. 高通 npu 跑 yolox

手里两台手机的处理器分别是骁龙 8gen1+与骁龙 8gen4。高通的推理需要 Qualcomm AI Engine Direct SDK,其安装与使用可参考:https://docs.qualcomm.com/bun...

我用的 Qualcomm AI Engine Direct SDK 2.26 版本,首先将上面的 yolox 进行 A8W8/A8W16 量化,再用 Qualcomm AI Engine Direct SDK 中 python 进行推理测试。

4.1 A8W8 量化

$QNN_SDK_ROOT/bin/x86_64-linux-clang/qnn-onnx-converter -i onnx_models/yolox_l.onnx --float_bitwidth 32 -o qnn_models_a8w8/yolox_l.cpp --act_bitwidth 8 --weights_bitwidth 8 --bias_bitwidth 32 --input_list output/input_raw_radxa_yolox.txt

4.2 A16W8 量化

$QNN_SDK_ROOT/bin/x86_64-linux-clang/qnn-onnx-converter -i onnx_models/yolox_l.onnx --float_bitwidth 32 -o qnn_models_a8w8/yolox_l.cpp --act_bitwidth 16 --weights_bitwidth 8 --bias_bitwidth 32 --input_list output/input_raw_radxa_yolox.txt

4.3 骁龙 8gen1+推理测试

手机硬件配置是:12+256。骁龙 8gen1+的 dsp type 为 v69
cd $QNN_SDK_ROOT​
python3.10 qnn_bench.py -c yolox_l_quant.json --dsp_type v69​

yolox_l_quant.json 中的内容为:

{
  "Name": "yolox",
  "HostRootPath": "output/yolox",
  "HostResultsDir": "output/yolox/results",
  "DevicePath": "/data/local/tmp/qnnbm.repo",
  "Devices": ["8bb435e6"],
  "Runs": 3,

  "Model": {
    "Name": "YOLOX",
    "qnn_model": "/home/5_radxa/qnn_run/qnn_models/aarch64-android/libyolox_l.so",
    "InputList": "/opt/qcom/aistack/qairt/2.26.0.240828/output/input_raw_radxa_yolox.txt",
    "Data": ["/opt/qcom/aistack/qairt/2.26.0.240828/output/cropped2"]
  },

  "Backends": ["DSP"],
  "Measurements": ["timing"]
}

4.4 骁龙 8gen4 推理测试

手机硬件配置是:16+512。骁龙 8gen4 的 dsp type 为 v79

cd $QNN_SDK_ROOT​
python3.10 qnn_bench.py -c yolox_l_quant.json --dsp_type v67

yolox_l_quant.json 中只需要改一下Devices

{
  "Name": "yolox",
  "HostRootPath": "output/yolox",
  "HostResultsDir": "output/yolox/results",
  "DevicePath": "/data/local/tmp/qnnbm.repo",
  "Devices": ["AJTLVB4A31003354"],
  "Runs": 3,

  "Model": {
    "Name": "YOLOX",
    "qnn_model": "/home/5_radxa/qnn_run/qnn_models/aarch64-android/libyolox_l.so",
    "InputList": "/opt/qcom/aistack/qairt/2.26.0.240828/output/input_raw_radxa_yolox.txt",
    "Data": ["/opt/qcom/aistack/qairt/2.26.0.240828/output/cropped2"]
  },

  "Backends": ["DSP"],
  "Measurements": ["timing"]
}

5. benchmark

序号设备模型输入分辨率量化类型converter engine执行 engine模型格式推理耗时/ms
8gen1+yolox_l640x640A16W82.262.26so46.362
8gen1+yolox_l640x640A16W82.272.26so51.677
8gen1+yolox_l640x640A16W82.302.26so51.684
8gen1+yolox_l640x640A16W8 bin73.213
8gen1+yolox_l640x640A8W82.262.26so47.673
8gen4yolox_l640x640A16W82.262.30 53.336
8gen4yolox_l640x640A16W82.272.30 52.714
8gen4yolox_l640x640A16W82.302.30 52.466
8gen4yolox_l640x640A8W82.262.30 23.799
orion o6yolox_l640x640 29.78

说明:

  • 8gen4 在 a16w8 上推理速度并没有提升,我换了 qnn sdk 版本编译,还是同样的推理速度
  • 8gen4 比 8gen1+推理更慢。我已给高通提了 issue,期待回复,后续我会更新。
  • 从推理速度来看 orion o6 只是比 8gen4 稍差,比 8gen1+能打,还需要更多模型的测试。

6. 参考

推荐阅读
关注数
2
文章数
7
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息