inteintegrity2026-10-22

在树莓派 5 上使用 RK1820 运行视觉与语言模型

通过 PCIe 将 RK1820 M.2 加速器连接到树莓派 5,使用 RKNN3 Runtime 1.1.0 在本地运行 MobileNetV2 和 Qwen2.5-0.5B。

Raspberry PiRK1820RKNN3Rockchip

树莓派 5 可以通过 PCIe 使用 Rockchip RK1820 作为外置 AI 加速器。 本项目使用树莓派 5 和 RK1820 M.2 2242 模组,验证了从硬件组装、驱动安装,到视觉模型推理和本地语言生成的完整流程。

树莓派负责运行 Linux、RKNN3 Runtime 和测试程序,RK1820 负责执行模型。我们在 Runtime 1.1.0、NPU 频率为 166 MHz 的配置下,完成了 MobileNetV2 推理和 Qwen2.5-0.5B 文本生成验证。

Rockchip 的《RK1820_RK1828 Raspberry Pi M.2 快速入门》V1.0.0 同时介绍了 RK1820 和 RK1828 模组。本项目实际测试的硬件是 RK1820 2242。 以下结果不能直接用于确认所有 RK1828 模组、转接板或系统镜像的兼容性和性能。

硬件与实测环境

组件实测配置
主机Raspberry Pi 5 Model B Rev 1.1
加速器RK1820 M.2 2242;设备报告内存为 2560 MB
连接方式PCIe FPC 排线和 RK_EXT_PIHAT_RK182X 转接板
PCIe 链路5.0 GT/s,x1
操作系统Debian 13.7 (trixie),ARM64
内核6.18.50+rpt-rpi-2712
安装包rknn3-rk182x-m2-2242_1.1.0_arm64.deb
PCIe 驱动3.3.1
设备固件 / RKNN3 API1.1.0 / 1.1.0
rknn-smi1.3.0
NPU 频率166 MHz

树莓派和加速器都需要配备散热。Rockchip 指南建议使用树莓派官方 27W USB-C 电源,或同等能力且适用的电源。请核对转接板的输入要求和接口标识,不能仅凭充电器标称总功率判断是否适用。

1. 组装硬件并供电

在 YouTube 观看安装视频

  1. 安装模组或连接 PCIe 排线前,先断开电源。
  2. 将 RK1820 插入转接板的 M.2 插槽,并使用对应螺丝固定。
  3. 使用 PCIe FPC 排线连接树莓派 5 和转接板,核对接触面方向,并锁紧两端卡扣。
  4. 上电前检查散热和所有连接。
  5. 对于指南中的 RK_EXT_PIHAT_RK182X 转接板,请将电源接到转接板的 USB-C 供电输入口,由转接板为整个系统供电。只给树莓派自身的 USB-C 接口供电,可能导致加速器没有上电。

如果转接板有多个 USB-C 接口,请先根据接口丝印或板卡文档确定供电输入口,再连接电源。

2. 安装驱动和 Runtime

向板卡或 SDK 提供方获取对应模组的 Debian 安装包。本项目使用 2242 安装包;2280 模组应使用提供方确认适用的对应安装包。

以下命令均在树莓派的 Linux 终端中执行。从电脑通过 SSH 连接时,请使用你自己的用户名、设备地址和认证信息。

bash
mkdir -p ~/rk1820_rk1828
cd ~/rk1820_rk1828

将 rknn3-rk182x-m2-2242_1.1.0_arm64.deb 复制到该目录,再执行安装:

bash
sudo apt update
sudo apt install -y ./rknn3-rk182x-m2-2242_1.1.0_arm64.deb

安装程序会编译 PCIe 驱动,并安装固件、Runtime、设备管理工具及测试程序。确认驱动编译和软件包配置均成功后,再重启:

bash
sudo reboot

树莓派需要能够访问已配置的 APT 软件源,以获取 DKMS 等依赖。如果依赖下载失败,即使找到了本地 .deb 文件,也不代表安装已经完成。请先解决软件源连接问题,再重新执行安装。驱动编译还需要与当前运行内核匹配的头文件;排查编译失败时,可以检查 uname -r 和 /lib/modules/$(uname -r)/build。

3. 验证设备并选择支持的频率

重启并重新连接后执行:

bash
lspci -nn
ls -l /dev/pcie-rkep-* 2>/dev/null
sudo rknn-smi info
sudo rknn-smi -v
sudo rknn-smi info -t npu_freq

本次 PCIe 枚举结果包含:

text
0001:01:00.0 Processing accelerators [1200]: Rockchip Electronics Co., Ltd RK182x Edge AI Computing Coprocessor [1d87:182a] (rev 01)

系统应存在 /dev/pcie-rkep-* 设备节点,且 rknn-smi info 应显示 RK1820、Online、OK。测试模型前,请记录驱动、固件和 API 版本。

本次 2242 模组报告的支持频率为 166、200、250 和 300 MHz。初步验证使用 166 MHz:

bash
sudo rknn-smi set -t npu_freq -d 0 -s 166
sudo rknn-smi info -t npu_freq

请从设备实际输出的 Available NPU Freq 中选择频率。不要将 2280 模组的 400 MHz 示例直接用于本次 2242 配置。

如果没有检测到设备,应分别检查链路和驱动:

bash
lsmod | grep rkep
sudo dmesg | grep -iE 'pcie|rkep|rknn' | tail -100

初次搭建时,驱动已经加载,但外部 PCIe 链路显示 link down,lspci 中没有 RK 端点,rknn-smi 也无法初始化。后续检查显示 link up, 5.0 GT/s PCIe x1,并出现 RK 端点。因此,驱动已加载并不等于硬件链路已建立。反复重装软件前,应先检查转接板供电和 FPC 排线连接。现有观察记录不足以确定究竟是哪一项硬件调整恢复了链路。

4. 运行 MobileNetV2

将配套的模型和权重文件放入:

text
~/rk1820_rk1828/MobileNetV2/
├── mobilenetv2-12.rknn
└── mobilenetv2-12.weight

本次测试复用了现有 RKNN3 模型包中 rknn3_models/v1.0.0/cnn/MobilenetV2 下的两个文件。这组文件已在 Runtime 1.1.0 上完成推理,但这不代表所有旧版模型都兼容。请向 SDK 提供方获取兼容的预转换模型,或访问 RKNN3 模型下载(提取码:rknn),并核对提供的文件名和使用说明。

在树莓派上执行:

bash
cd ~/rk1820_rk1828/MobileNetV2
sudo rknn3_model_test \
  mobilenetv2-12.rknn \
  mobilenetv2-12.weight \
  0x1 '' '' 0 1

本次安装的 1.1.0 测试工具中,core_mask 紧跟在权重路径之后。两个空参数分别跳过输入文件和标准输出文件;0 选择 shape,1 表示运行一次。如果你的工具版本与本项目或旧版快速入门文档不同,请先查看 rknn3_model_test --help。

成功输出包括模型初始化信息、All 1 loops completed successfully 和平均模型运行时间。在一次 166 MHz 的实测中,模型运行耗时为 11.343 ms,包含输入和输出同步的单次总耗时为 12.249 ms。

该命令使用随机输入,并跳过与标准输出的比对,因此验证的是推理流程,而非分类准确率。这些单次耗时属于实测记录,不是持续吞吐量基准测试结果。

5. 使用 Qwen2.5-0.5B 生成文本

打开 RKNN3 模型下载,输入提取码 rknn,进入:

text
RKNN3_SDK/rknn3_models/v1.1.0/llm/Qwen2.5-0.5B

将同一版本中的四个文件复制到树莓派工作目录。保留官方文件名;这些文件名没有旧版指南中的 -Instruct 后缀:

text
~/rk1820_rk1828/Qwen2.5-0.5B/
├── Qwen2.5-0.5B.rknn
├── Qwen2.5-0.5B.weight
├── Qwen2.5-0.5B.tokenizer.gguf
└── Qwen2.5-0.5B.embed.bin

四个文件合计约 632 MB(603 MiB)。请检查下载大小和传输完整性,不要将旧版模型与其他模型的 embedding 文件混用。

执行:

bash
cd ~/rk1820_rk1828/Qwen2.5-0.5B
sudo rknn3_session_test \
  Qwen2.5-0.5B.rknn \
  Qwen2.5-0.5B.weight \
  Qwen2.5-0.5B.tokenizer.gguf \
  Qwen2.5-0.5B.embed.bin \
  2048 256 0xff

该模型提供 2048-token 的上下文配置,因此这里使用 2048,而非旧版指南中的 1024。下一个参数将最多生成的新 token 数设为 256,最后一个参数是核心掩码。

厂商测试程序会自动运行内置问题,这条命令没有用于输入问题的位置参数。原始测试包含中英文两组关于相对论的问题。为录制面向英文社区的视频,我们仅将本地测试程序中内置的中文问题改成了 Explain the basic concepts of relativity.,并保留了备份。运行下载的模型不需要进行这项展示调整;未修改的安装版本仍可能先显示中文测试。

检查是否生成可读文本、输出性能统计,并显示 END TEST。当回答长于 256 个 token 时,达到设定的新 token 上限属于预期行为。

观察项实测结果
NPU 频率166 MHz
上下文 / 最多生成的新 token 数2048 / 256
英文测试 1 生成阶段255 个解码 token,耗时 3820.02 ms;66.75 tokens/s
英文测试 2 生成阶段255 个解码 token,耗时 3821.18 ms;66.73 tokens/s
进程退出码0
测试后的设备状态Online / OK

生成速度来自测试工具的 Generate 统计,不包含 prefill 和模型初始化时间,并会随问题、生成参数、频率和模型版本变化。工具报告输出 token 数为 256,但计时的 Generate 阶段统计 255 个 token;上表保留了这一区别。

本项目验证了什么

本次树莓派 5 + RK1820 配置已通过 RKNN3 Runtime 完成 CNN 推理测试和本地语言生成。这套配置可作为应用开发起点:由树莓派处理输入、任务编排和用户界面,由 RK1820 执行模型推理。更长时间的稳定性测试,以及具体应用的准确率验证,仍需在本次初步验证之外单独进行。