关于边缘AI的不完整笔记
2026 年 01 月 18 日
搞了一台友善电子的 R76S,以此为契机,了解了一些边缘 AI 的相关知识。虽然笔记不完整,但我觉得还是比一个“完美”的实验室项目要好很多。
感性认识
简单一句话,边缘 AI 就是在本地设备上跑 AI 相关功能。
很明显,和云端 AI 相比,边缘 AI 设备算力有限,但不需要网络传输,能够即时响应,似乎比较适合个人开发者和小型团队切入。
R76S 用的是 rk3576,内置 NPU,可以辅助一些 AI 所需的运算,16G/32G 版本价格约 1k。另外也有性能更强的 rk3588/rk3588s。
边缘 AI 能做到以下功能:
- 用 yolo 做图像识别
- 用各种 transformer 做视频与行为理解/文字识别/语音指令理解
- 用 stable diffusion 生成内容/视觉反馈
可以参考 rknn-toolkit2 的 examples:rknn-toolkit2/rknn-toolkit2/examples at master · airockchip/rknn-toolkit2。
其实功能上,边缘 AI 跟云端 AI 没有本质区别,主要差别仅是资源是否受限,以及数据是否本地化而已。
关于能力差距的问题,作为参考,可以看一下 rknn-llm(即使用 rockchip 芯片做 llm)的 benchmark:rknn-llm/benchmark.md at main · airockchip/rknn-llm。
软件实现参考
了解各种软件能力非常耗费时间,这里只简单列一下我所看到的,但我花的时间还远远不够。
官方软件
rknn-toolkit2:airockchip/rknn-toolkit2 --- airockchip/rknn-toolkit2
正如这个名字所暗示的,这是 rknn 的工具包,主要作用是用来将模型转换为特定的 rknn 格式模型。
注:上一代是对应更旧一些的芯片,因此参考价值不大。
在该项目的 rknpu2 目录下,提供了一个 librknnrt.so 二进制文件,包括 Android/Linux 在不同 arch 的版本,它通过 header 文件提供一系列 API 实现,包括:
- rknn_api.h:运行 rknn 视觉模型
- rknn_custom_op.h:自定义算子实现
- rknn_matmul_api.h:矩阵乘法实现
如果要实现 rknn 推理,就用这套 API。
rknn-toolkit3
目前该版本尚未发布,不过很明显这个版本应该是存在的,参考:When will we release RKNN3-Toolkit? · Issue #394 · airockchip/rknn-llm。
rknn-llm:airockchip/rknn-llm
用 rknn 做 llm 推理的 SDK。与 rknn-toolkit2 类似,在 rkllm-runtime 目录下提供了 librkllmrt.so,通过 rkllm.h 提供一系列 API 来运行 llm 推理。
社区软件
llama.cpp 尚未支持 rknpu,似乎也没有这个计划:Rockchip RK3588 perf · Issue #722 · ggml-org/llama.cpp。因此,基于 llama.cpp/ggml 的软件,比如 ollama 或 wasmedge,都没法直接支持。
不过,RK3588 NPU 开源驱动已经进入 kernel 主线,版本是 6.18,因此后续可能会有应用逐步添加支持。Tomeu Vizoso: Rockchip NPU update 6: We are in mainline!
下面是几个目前能直接参考的工具软件。
该项目是可以在 RK3588/3576 上运行的 ollama 的替代品,python 实现。
rk-llama.cpp invisiofficial/rk-llama.cpp: Llama.cpp with the Rockchip NPU integration as a GGML backend.
该项目基于 llama.cpp,用上面提到的 rknn_matmul_api.h,实现了一个 ggml backend,可以使用 NPU 运行 matmul 运算。但只能在 RK3588 上运行,不支持 RK3576。
我特别看了一下代码,虽然作者留了通过 configuration 添加其他 NPU 支持的口子,但在 context 的设计上,似乎不足以支持 RK3576 所要求的 K 分段。所以不好改。
总结
模型推理的方法是类似的,但找到 “要解决(并且能解决)的问题” 并不容易。
边缘 AI 的想象空间很大,但目前资源还很有限,我觉得这给个人开发者或小型团队留下了空间。