树莓派 5 安装 M4N-Hat
最终结果演示
树莓派 5 安装后,演示运行大模型 QWen3,性能达 13.2 tokens/s。见以下视频:
视频中完整演示了:
- 下载已支持的大语言模型 QWen3-0.6B
- 准备 python-venv 环境,安装所需 python 库
- 运行 QWen3 并完成两次问答
M4N 烧录从机系统
1.参考 System Flashing Guide 使用 AXDL 烧录 AX650_card_V3.6.2_20250603154858_20250626183000.axp。
2.然后 fpc 排线连接 M4N-Hat 和 树莓派 5 的 pcie 座子,并确认固定完毕。
3.上电进入树莓派的系统。使用 lspci 命令检查加速卡是否正确被识别:
# 应能看到以下输出
sipeed@raspberrypi:~$ lspci
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 Multimedia video controller: Axera Semiconductor Co., Ltd Device 0650 (rev01)
0002:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0002:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
其中前两行信息则表示树莓派的 pcie 初始化成功,并识别挂载了 Multimedia video controller: Axera Semiconductor Co., Ltd Device 0650 (rev01)
。
3.1. 若不显示如上前两行信息,很有可能是树莓派的该 pciex1 端口并未启用(默认行为),因此需要额外以下操作:
执行 sudo raspi-config
并进入 6 Advanced Options -> A8 PCIe Speed
,选择 Yes
以使能 pciex1 gen3。
或检查 /boot/firmware/config.txt
中的内容(文件末尾)是否包含以下字段:
[all]
dtparam=pciex1_gen=3
实际上这个 config.txt
文件所在 SD 卡的 boot 分区为 FAT32 格式,因此可被广大操作系统识别和读写。可在树莓派关机后取出,并通过读卡器插在 PC 上直接修改。
注意:刚烧录树莓派镜像的新卡不存在这个 /boot/firmware 目录,此时需要插入树莓派完整启动一次才会生成上文所描述的结构。
Raspi 5 安装 AXCL 软件包
pcie 可以正常识别到 M4N-Hat 后,还需要继续安装 AXCL 软件包以提供支持,才能通过 M4N-Hat 加速运行模型。
该软件包 axcl_host_aarch64_V3.6.2_20250603154858_NO4873.deb
与先前的 M4N 系统镜像 xx.axp 位于下载站同一目录。
下载到树莓派开发板上,然后运行安装命令:
$ sudo apt install axcl_host_aarch64_V3.6.2_20250603154858_NO4873.deb
安装成功后,断电重启树莓派。
此时运行 axcl-smi
显示内容如下,即代表安装成功:
sipeed@raspberrypi:~$ axcl-smi
+------------------------------------------------------------------------------------------------+
| AXCL-SMI V3.6.2_20250603154858 Driver V3.6.2_20250603154858 |
+-----------------------------------------+--------------+---------------------------------------+
| Card Name Firmware | Bus-Id | Memory-Usage |
| Fan Temp Pwr:Usage/Cap | CPU NPU | CMM-Usage |
|=========================================+==============+=======================================|
| 0 AX650N V3.6.2 | 0001:01:00.0 | 148 MiB / 945 MiB |
| -- 55C -- / -- | 0% 0% | 18 MiB / 7040 MiB |
+-----------------------------------------+--------------+---------------------------------------+
+------------------------------------------------------------------------------------------------+
| Processes: |
| Card PID Process Name NPU Memory Usage |
|================================================================================================|
sipeed@raspberrypi:~$
测试 AXCL 模型推理能力
测试一下 axcl_run_model
(与原生系统内 ax_run_model 同样使用方法),推理 yolov5s 的性能与 M4N 原生系统上的数据极度接近。
sipeed@raspberrypi:~$ axcl_run_model -m yolov5s.axmodel
Run AxModel:
model: yolov5s.axmodel
type: 1 Core
vnpu: Disable
warmup: 1
repeat: 1
batch: { auto: 1 }
axclrt ver: 1.0.0
pulsar2 ver: 1.2-patch2 7e6b2b5f
tool ver: 0.0.1
cmm size: 12730188 Bytes
------------------------------------------------------
min = 7.837 ms max = 7.837 ms avg = 7.837 ms
------------------------------------------------------
其余常用模型的性能实测数据如下表:
Model | Input Size | Batch 1 (IPS) | Batch 8 (IPS) |
---|---|---|---|
Inceptionv1 | 224 | 1073 | 2494 |
Inceptionv3 | 224 | 478 | 702 |
MobileNetv1 | 224 | 1508 | 4854 |
MobileNetv2 | 224 | 1366 | 5073 |
ResNet18 | 224 | 1066 | 2254 |
ResNet50 | 224 | 576 | 1045 |
SqueezeNet11 | 224 | 1560 | 5961 |
Swin-T | 224 | 342 | 507 |
ViT-B/16 | 224 | 162 | 207 |
YOLOv5s | 640 | 326 | 394 |
YOLOv6s | 640 | 282 | 322 |
YOLOv8s | 640 | 248 | 279 |
YOLOv9s | 640 | 237 | - |
YOLOv10s | 640 | 298 | - |
YOLOv11n | 640 | 860 | - |
YOLOv11s | 640 | 305 | - |
YOLOv11m | 640 | 114 | - |
YOLOv11l | 640 | 87 | - |
YOLOv11x | 640 | 41 | - |
AXCL 更详细使用说明
其余详细信息可查看 axcl官方文档。
可于 文中 介绍到的大模型仓库下载各种已被支持的大模型,并在树莓派上部署运行。
已知问题
不断电重启树莓派会导致 M4N-Hat 无法再次挂载
注意:
目前有一已知问题,因为当前板卡不能满足树莓派的启动过程中关于 pciex1 的复位时序,所以只有断电后再冷启动才能成功挂载 M4N-Hat。而在挂载成功后若是保持不断电来重启树莓派,会导致下一次树莓派无法挂载 M4N-Hat。因此每次都需要断电后再冷启动树莓派。
若是直接重启了树莓派,树莓派串口应会打印如下启动日志。其中第 18 行显示 1000110000.pcie: link down
,表示 pcie 建立链接失败,显然此时未能成功挂载 M4N-Hat。
7.11 fs_open: 'armstub8-2712.bin'
7.15 Loading 'kernel_2712.img' to 0x00000000 offset 0x200000
7.33 Read kernel_2712.img bytes 9727677 hnd 0x3c43
9.93 PCI1 reset
9.03 PCI2 reset
9.13 set_reboot_order 0
9.13 set_reboot_arg1 0
9.14 USB-OTG disconnect
9.56 MESS:00:00:09.256590:0: Starting OS 9256 ms
9.62 MESS:00:00:09.262115:0: 00000040: -> 00000480
9.63 MESS:00:00:09.263966:0: 00000030: -> 00100080
9.68 MESS:00:00:09.268679:0: 00000034: -> 00100080
9.73 MESS:00:00:09.273392:0: 00000038: -> 00100080
9.78 MESS:00:00:09.278105:0: 0000003c: -> 00100080
NOTICE: BL31: v2.6(release):v2.6-240-gfc45bc492
NOTICE: BL31: Built : 12:55:13, Dec 4 2024
[ 0.695249] brcm-pcie 1000110000.pcie: link down
Debian GNU/Linux 12 raspberrypi ttyAMA10
My IP address is 192.168.10.176 fdae:b0ae:ebf1:0:b270:135e:b646:70c3
raspberrypi login:
当然现有一更简便方法。我们把树莓派的一个 GPIO 连到了 M4N-Hat 的复位引脚上,因此若需要保持不断电也能重启树莓派并能成功挂载。需要在每次重启前先执行命令
gpioset gpiochip0 28=0
让 M4N-Hat 进入复位状态,再正常执行树莓派重启命令即可再次正常挂载。