基于 RK3588 的端侧异构推理加速

初步调研报告

汇报人:邹鹏

2026 年 10 月

目录

基于 RK3588 的端侧异构推理加速 · 初步调研报告

2

01

我们的任务是什么

端侧推理、RK3588 芯片,以及我们要解决的问题

02

别人已经做到哪一步

RK3588 上多核并行、CPU-NPU 协同的公开工作

03

我们打算怎么设计

三步逐步叠加的加速方案

一、我们的任务

背景:把 AI 模型放到小设备上本地运行

基于 RK3588 的端侧异构推理加速 · 初步调研报告

3

云端推理

数据传到服务器,用大显卡计算,再把结果传回来

算力强,但有网络延迟

断网就不能用,数据要离开设备

端侧推理(本项目)

直接在摄像头、机器人、车载设备上计算

响应快,不依赖网络,数据不出设备

但设备小:算力、内存、功耗都有限

所以端侧设备上一般会配一块专门算神经网络的芯片,叫 NPU(神经网络处理器)。本项目用的 RK3588 就是一款常见的国产端侧 AI 芯片。

一、我们的任务

RK3588 里有 CPU 和 NPU,但平时只用上了一小部分

基于 RK3588 的端侧异构推理加速 · 初步调研报告

4

RK3588 芯片内部(示意)

CPU:8 个核(4 大 4 小)

NPU:3 个核,合计 6 TOPS

NPU 核 0

在推理

NPU 核 1

闲着

NPU 核 2

闲着

内存:CPU 和 NPU 共用

CPU

通用处理器,什么都能算,但算神经网络比较慢

NPU

专门算神经网络的处理器,擅长卷积、矩阵乘法,又快又省电;但只支持一部分运算类型

现在的问题

通常整个模型只跑在 1 个 NPU 核上,另外 2 个 NPU 核基本闲着,CPU 也只做些读图、画框之类的杂活

一、我们的任务

任务:让 3 个 NPU 核和 CPU 一起干活,让模型跑得更快

基于 RK3588 的端侧异构推理加速 · 初步调研报告

5

1

跑起来

把训练好的模型转换成 NPU 能执行的格式,在 1 个 NPU 核上完成推理

✔ 学长已在板子上跑通

2

多核并行

同时用上 3 个 NPU 核:可以三个核一起算一张图,也可以三个核各算各的图

本次调研重点

3

CPU-NPU 协同

把模型拆开:NPU 擅长的部分交给 NPU,其余交给 CPU,两边同时工作

后续拓展方向

怎么衡量「更快」

时延(ms):处理一张图要多少毫秒,越小越好  吞吐(fps):每秒能处理多少张图,越大越好

一、我们的任务

关键概念:模型由一个个「算子」组成,要转换后才能在 NPU 上跑

基于 RK3588 的端侧异构推理加速 · 初步调研报告

6

PyTorch 模型

ONNX 文件

RKNN 文件

在 NPU 上运行

训练框架里的模型

通用模型格式,各种硬件都能读

NPU 专用格式,同时把小数换成 8 位整数(量化),更快更省

RK3588 板子上执行

什么是算子

模型计算过程中的每一个基本运算,比如卷积(Conv)、激活(Relu)、相加(Add)、矩阵乘法。一个模型就是一串算子首尾相连

NPU 只支持一部分算子,不支持的只能交给 CPU 算,这正是第 3 步要处理的问题

例:我们在电脑上导出的 ResNet18

Conv 卷积

20

Relu 激活

17

Add 相加

8

其他(池化、全连接等)

4

共 49 个算子、1170 万个参数

二、别人做到哪了

多核并行有两种用法,「每个核各算各的」效果最好

基于 RK3588 的端侧异构推理加速 · 初步调研报告

7

用法 A:三个核一起算一张图

目标:让单张图更快(降低时延)

只快了约 1.8 倍。可能的原因:三个核没有共享的高速缓存,模型又是一层接一层算的,很难拆开并行

用法 B:每个核放一份模型,各算各的图

目标:每秒处理更多张(提高吞吐)

4 组公开数据都在 2.4~2.8 倍之间,有现成的开源代码

相对「只用 1 个 NPU 核」的加速倍数(YOLOv5s 目标检测模型) 理论上限是 3 倍

只用 1 个核

× 1.0

用法 A:单张图时延

× 1.8(1 个来源)

用法 B:吞吐

× 2.4~2.8(4 组数据)

二、别人做到哪了

单个 NPU 核已经很快,官方和第三方的测量结果一致

基于 RK3588 的端侧异构推理加速 · 初步调研报告

8

模型

输入尺寸

官方数据(ms)

第三方实测(ms)

YOLOv5s(目标检测)

640×640

15.0(ReLU 改版)

20.4(原版)

16.0

ResNet18(图像分类)

224×224

—

3.8 / 4.1(两个来源)

ResNet50(图像分类)

224×224

8.9

—

MobileNetV2(轻量分类)

224×224

2.2

—

单位均为单次推理时延(ms)。官方数据只算模型本身、不含读图和画框,原本是帧率,按 时延 = 1000 ÷ 帧率 换算;第三方数据是否包含前后处理,原文没有完全说明。

结论:单核部署这一步已经很成熟,YOLOv5s 一张图约 15~20 ms。再想提速,就要把闲着的另外 2 个核和 CPU 用起来。

二、别人做到哪了

用法 B:每个核开 1 个线程就拿到大部分收益,再多开收益递减

基于 RK3588 的端侧异构推理加速 · 初步调研报告

9

050100150200136912线程数吞吐(fps)aurasuisui C++ 零拷贝leafqycc C++leafqycc PythonCSDN Python(SiLU,含画框)aurasuisui C++ 零拷贝leafqycc C++leafqycc PythonCSDN Python

YOLOv5s,四组公开数据

最快的实现(C++ 零拷贝)3 个线程就到 174 fps,再加线程几乎不涨

其他实现过了 3 个线程后涨得明显变慢,但还在慢慢上涨

同样的方法,C++ 实现比 Python 快很多

各来源的写法、是否包含读视频和画框不同,所以只看趋势,不比较高低

二、别人做到哪了

CPU-NPU 协同:在 RK3588 上把一个模型拆开分工

基于 RK3588 的端侧异构推理加速 · 初步调研报告

10

RK3588 上已有的工作

只做到「CPU 准备数据,NPU 跑整个模型」

没找到把一个模型拆给 CPU 和 NPU 一起算的公开工作

其他芯片(手机、Jetson)上已有的方法

方法

做法

μLayer(2019)

把同一层的计算按通道拆开,CPU 和 GPU 各算一部分

CoDL(2022)

先预测每个算子在两种处理器上要多久,再决定怎么拆

Band(2022)

按「哪种处理器支持哪些算子」把模型切成几段,自动选每段在哪跑;最接近我们的第 3 步

机会:别的芯片上已经证明拆开分工能提速,把这套思路搬到 RK3588 的 CPU + NPU

二、别人做到哪了

小结

基于 RK3588 的端侧异构推理加速 · 初步调研报告

11

已经很成熟

单核部署:工具链完善,官方给了几十个模型的速度

用法 B(每核一份模型):吞吐提高 2.4~2.8 倍,有开源代码

做了,但不充分

用法 A(三核算一张图):只快约 1.8 倍,公开数据只有一组,原因没人系统分析

同一模型在 CPU 上要多久:缺少实测对比

基本空白

在 RK3588 上把一个模型拆给 CPU 和 NPU 协同计算

多核和 CPU 同时用起来的整体方案

创新点:做一个 benchmark,以及得到一个更通用的并行化方案

三、我们打算怎么做

规划

基于 RK3588 的端侧异构推理加速 · 初步调研报告

12

第 1 步 建立基线

同一个模型,分别测 CPU 和 1 个 NPU 核的时延(ms)

补上「CPU 要多久」这个缺口,作为后面所有对比的起点

第 2 步 多核并行

先用「每核一份模型」把吞吐(fps)提上去

再逐层分析「三核算一张图」为什么只快 1.8 倍

尝试把模型切成几段放到不同核上,接力处理

第 3 步 CPU-NPU 协同

测出每个算子在 CPU 和 NPU 上各要多久

据此决定在哪里切:NPU 擅长的留给 NPU,其余交给 CPU

CPU 同时负责读图、画框,和 NPU 并行

怎么评价:每一步都测时延(ms)、吞吐(fps)和各个核的忙碌程度,按 CPU → 1 个核 → 3 个核 → CPU + 3 个核 的顺序对比

三、我们打算怎么做

设计示意:流水线

基于 RK3588 的端侧异构推理加速 · 初步调研报告

13

现在:只用 1 个核,一张接一张

时间 →

CPU(读图)

NPU 核 0

NPU 核 1

NPU 核 2

1

图 1

2

图 2

3

图 3

4

图 4

闲着

闲着

设计后:3 个核轮流接力,CPU 同时准备下一张

时间 →

CPU(读图)

NPU 核 0

NPU 核 1

NPU 核 2

1

图 1

2

图 2

3

图 3

4

图 4

5

图 5

6

图 6

7

图 7

8

图 8

9

图 9

10

图 10

11

图 11

12

图 12

同样长的时间里:现在处理 4 张,流水线处理约 12 张。(示意图,各段长短是假设的,没画后处理;实际效果要等上板实测)

参考资料

基于 RK3588 的端侧异构推理加速 · 初步调研报告

14

Rockchip 官方模型库 rknn_model_zoo(单核速度数据):github.com/airockchip/rknn_model_zoo

RKNN-Toolkit2(模型转换工具):github.com/airockchip/rknn-toolkit2

rk3588-npu-bench(单核、三核、多线程实测):github.com/aurasuisui/rk3588-npu-bench

rknn-cpp-Multithreading / rknn-multi-threaded(多线程开源实现):github.com/leafqycc

CSDN:多线程异步提高 RK3588 的 NPU 占用率(2023)

Tomeu Vizoso:Rockchip NPU update 4(RK3588 开源 NPU 驱动作者博客,2024)

tinycomputers.io:Rockchip RK3588 NPU Deep Dive(ResNet18 实测)

μLayer(EuroSys 2019);CoDL、Band(MobiSys 2022)

A CPU–NPU Heterogeneous Edge Fault Diagnosis Framework,Sensors 2026