RKNN Toolkit 是什么:Rockchip NPU 的模型部署工具链
一、RKNN Toolkit 是什么:Rockchip NPU 的模型部署工具链
RKNN Toolkit 是 Rockchip(瑞芯微)官方发布的神经网络模型转换与端侧推理工具链,要解决的问题非常具体:在 PC 上训练出来的模型是 FP32 的通用计算图,而 Rockchip SoC 内置的 NPU 只认识自己那套指令集和定点权重,中间必须有一次「离线编译」。RKNN Toolkit 就是这次编译的编译器——把 ONNX、TensorFlow、PyTorch 导出的模型、Caffe 等格式,转换成 NPU 能直接吃的 .rknn 模型文件。
这套工具链实际由两部分组成,很多人第一次踩坑就是把两者混为一谈:
- 跑在 x86 Linux PC 上的 RKNN-Toolkit2(Python 包):负责模型转换、量化、精度分析、连板调试。它不跑在开发板上。
- 跑在目标板上的 RKNN Runtime(rknpu2):C/C++ 库以及 Python 版
rknnlite,负责加载.rknn并真正执行推理。
一句话记牢:x86 PC 上做转换,目标板上跑推理。开发板上的 Python 环境装不了转换工具,硬装只会得到一堆架构不匹配的报错。
和相邻方案的区别也要说清楚,否则选型时会走弯路:
- 与 NCNN / MNN 的区别:那两者主要吃 CPU / GPU 算力,对 NPU 的支持有限;RKNN 直接调用 Rockchip NPU 驱动,是拿到 NPU 算力的官方路径。
- 与 TensorRT 的区别:TensorRT 面向 NVIDIA GPU、走 CUDA 生态;RKNN 面向 Rockchip 自研 NPU,量化策略与算子支持面完全不同,模型不能互用。
- 与 ONNX Runtime 的区别:ONNX Runtime 在 ARM 上可以跑 CPU 或 NNAPI,但拿不到 RK3588 这类多核 NPU 的完整算力;RKNN 才能把多核 NPU 调度起来。
核心术语表
| 术语 | 含义 |
|---|---|
| RKNN | Rockchip Neural Network,Rockchip 自定义的模型格式与对应的推理运行时。 |
| RKNN-Toolkit2 | x86 Linux 上的 Python 转换工具,负责 ONNX 到 RKNN 的编译与量化。 |
| rknpu2 | 目标板侧的 Runtime 与驱动接口,含 C API 和 rknnlite Python 包。 |
| INT8 量化 | 把 FP32 权重与激活值映射到 8 位整数,换取数倍速度与更低带宽,代价是精度损失。 |
| 量化数据集 | 用于统计激活值分布的一批图片或张量,几十到几百张即可,必须与真实输入同分布。 |
| 混合量化 | 只把部分层量化成 INT8,其余层保留 FP16,用来救回掉点严重的模型。 |
| per-channel | 每个输出通道单独一套量化参数,比 per-tensor 更细,通常精度更好。 |
| 连板调试 | PC 通过 adb 或网络连着开发板,边转换边把中间层结果吐出来比对。 |
NPU 算力档位方面:RK3588、RK3576、RK3568、RK3562、RV1126 等芯片的 NPU 算力各不相同,同一颗芯片不同封装或不同调频档位也可能有差异,具体 TOPS 数值以官方规格书为准,不要按网上的二手数字做选型。工程上更该关心的是:目标芯片支持哪些算子、INT8 精度能不能兜住、多路视频能不能跑满、功耗与散热是否压得住。

