关于边缘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-toolkit2airockchip/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-llmairockchip/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!

下面是几个目前能直接参考的工具软件。

rkllama NotPunchnox/rkllama: Ollama alternative for Rockchip NPU: An efficient solution for running AI and Deep learning models on Rockchip devices with optimized NPU support ( rkllm )

该项目是可以在 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 的想象空间很大,但目前资源还很有限,我觉得这给个人开发者或小型团队留下了空间。

Top