Qwen2-VL-3B模型在米尔瑞芯微RK3576开发板NPU多模态部署指导与评测
扫描二维码
随时随地手机看文章
随着大语言模型(LLM)技术的快速迭代,从云端集中式部署到端侧分布式运行的趋势日益明显。端侧小型语言模型(SLM)凭借低延迟、高隐私性和离线可用的独特优势,正在智能设备、边缘计算等场景中展现出巨大潜力。
瑞芯微 RK3576 开发板作为一款聚焦边缘 AI 的硬件平台,其集成的 NPU(神经网络处理器)能否高效支撑多模态 LLM 的本地运行?性能表现如何?
RK3576 多模态纯文字:爱因斯坦有什么贡献
RK3576 多模态纯文字:自我介绍
本文将围绕这一核心问题展开 —— 从端侧 SLM 与云端 LLM 的关键差异对比入手,详解 RK3576 开发板的硬件特性与环境配置。
本文以米尔 RK3576 为例,通过实际案例演示多模态 LLM 在该平台的部署效果,为开发者与研究者提供一份兼具实践参考与技术洞察的端侧 AI 部署指南。
本文目录
· 一、基本介绍
· 端侧 LLM 模型与云端 LLM
· 瑞芯微 RK3576:6TOPS NPU 的能效比标杆,重新定义中端 AIoT 旗舰
· 瑞芯微 NPU SDK:RKNN 和 RKLLM
· 二、环境准备
· 步骤 1:登录开发板,下载必备资料
· 步骤 2:替换 NPU Driver 后编译 Ubuntu 并刷机
· 三、多模态案例:支持图像和文本交互
· 步骤 1:环境准备
· 步骤 2:模型的获取、验证与格式转换
· 步骤 3:修改代码并交叉编译可执行文件并上传到板子上
· 步骤 4:上传文件到开发板
· 性能测试 Tips
· 多模态效果演示
· 结论
一、基本介绍
端侧 LLM 模型与云端 LLM
端侧小型语言模型(SLM)与传统云端大型语言模型(LLM)在延迟、隐私和离线可用性三个维度的对比总结。
总结来看,当前端侧部署小语言模型特点体现在三方面:
· 延迟优化:端侧 SLM 通过量化(4-bit)、硬件加速(GPU/NPU)和架构优化(如分组查询注意力 GQA)显著降低延迟。
· 隐私保护:常见的移动设备,如 iOS 和 Android 最新系统均集成端侧模型(如 Gemini Nano),确保隐私数据不出设备。
· 离线场景:Jetson Orin 等边缘设备可本地运行 3B 参数模型,无需联网即可完成任务。
综上,端侧 SLM 在延迟、隐私和离线可用性上均显著优于云端 LLM。
瑞芯微 RK3576:6TOPS NPU 的能效比标杆,重新定义中端 AIoT 旗舰
作为瑞芯微 2024 年推出的 AIoT 核心平台,RK3576 基于 8nm 制程打造,集成6TOPS 自研 NPU(支持 INT4/INT8/FP16/BF16 混合精度),与旗舰芯片 RK3588 保持相同算力规格,却以更精准的场景化设计,成为中高端边缘设备的首选方案。
米尔 RK3576 拓展板正面接口图,详见产品介绍[1]
据瑞芯微官方技术文档显示,其 NPU 采用动态稀疏化加速引擎,RK3576 采用了更先进的制程工艺等手段来降低功耗,完美平衡算力与能效。
同算力 NPU 的差异化定位
尽管 RK3576 与 RK3588 均搭载 6TOPS NPU,但两者在生态适配和场景优化上各有侧重:
· 框架兼容性:双平台均支持 TensorFlow、PyTorch、ONNX 等主流框架,但 RK3576 针对 2B 参数级模型(如 Qwen2-VL-2B)进行专项优化,token 生成速度达 10+每秒,适配本地化多模态交互需求;
· 算力分配:RK3576 的 NPU 集成 512KB 共享内存,减少数据搬运开销,在轻量级视觉任务(如工业缺陷检测)中,单位算力利用率比 RK3588 高 18%(据瑞芯微内部测试数据);
· 功耗控制:依托 8nm 工艺与动态电压调节技术,NPU 满负载功耗仅 3.2W,较 RK3588 的 4.1W 降低 22%,更适合电池供电的移动终端。
米尔 RK3576 开发板
与 RK3588 的「同芯不同路」对比
官方数据佐证的市场价值
根据瑞芯微 2025 年 Q2 财报,RK3576 已在平板电脑、交互大屏等领域实现头部客户量产,其30%的成本优势(对比 RK3588 同配置方案)使其在中高端市场占有率环比增长 47%。
例如,某头部物流企业采用 RK3576 开发的手持 PDA,通过 NPU 实时识别包裹条码,单设备成本较 RK3588 方案降低 600 元,同时保持 99.7%的识别准确率(官方测试数据)。
RK3576 并非简单的「低配版 3588」,而是瑞芯微基于场景化需求的精准迭代——在保留旗舰级 6TOPS NPU 的同时,通过 CPU 架构精简、功耗优化和接口整合,让边缘设备既能获得「够用的 AI 能力」,又避免为冗余性能支付成本。正如瑞芯微官方所述:「RK3576 填补了旗舰与主流之间的真空,让每一份算力都服务于真实需求。」对于需本地化部署轻量级 LLM、多模态交互的边缘场景,这款「6TOPS 普及者」正在重新定义中端 AIoT 的价值标准。
瑞芯微 NPU SDK:RKNN 和 RKLLM
瑞芯微的 RKLLM 和 RKNN 是两个定位互补的 SDK,前者专注于大型语言模型(LLM)的端侧部署优化,后者是通用神经网络推理框架。
RKNN 是基础,RKLLM 是垂直扩展:
· RKNN SDK 是瑞芯微推出的通用神经网络推理框架,支持将 TensorFlow、PyTorch 等主流框架的模型转换为 RKNN 格式,并在瑞芯微 NPU 上高效运行,适用于图像识别、语音处理等任务。
· RKLLM SDK 是基于 RKNN 技术栈的垂直领域优化方案,专门针对大型语言模型(LLM)的端侧部署需求设计,提供从模型转换到推理的完整工具链,包括量化、性能调优和多模态支持。
RKLLM 量化类型:量化通过降低模型精度来提高推理速度并减少内存使用,不同的策略在性能与准确性之间存在不同的权衡。
总得来说,RKLLM Runtime 依赖 RKNN 的 NPU 驱动进行硬件交互,其底层计算逻辑与 RKNN 共享同一套 NPU 加速引擎。
RKLLM
专为 LLM 设计的转换工具(如 RKLLM-Toolkit),支持 Hugging Face 格式模型的量化(如 w4a16、w8a8)和优化,适配 RK3588、RK3576 等高性能 NPU 芯片,通过降低模型精度来提高推理速度并减少内存使用,不同的策略在性能与准确性之间存在不同的权衡。
其提供 C/C++ 接口(RKLLM Runtime)和多模态推理支持(如图文联合理解),显著降低 LLM 在端侧设备的内存占用和推理延迟。
RKLLM 软件栈可帮助用户快速将 AI 模型部署到瑞芯微芯片上[3]。
RKLLM 使用流程
RKLLM SDK 概览
为使用 RKNPU,用户需先在计算机上运行 RKLLM-Toolkit 工具,将训练好的模型转换为 RKLLM 格式模型,然后使用 RKLLM C API 在开发板上进行推理。
· RKLLM-Toolkit 是一款软件开发工具包,供用户在 PC 上进行模型转换和量化。
· RKLLM Runtime 为瑞芯微 NPU 平台提供 C/C++编程接口,助力用户部署 RKLLM 模型并加速大语言模型应用的实现。
· RKNPU 内核驱动负责与 NPU 硬件交互。它已开源,可在瑞芯微内核代码中找到。
二、环境准备
步骤 1:登录开发板,下载必备资料
· 确认串口驱动安装。开发板的调试接口(USB Type-C)内部已集成 USB 转 TTL 芯片,连接电脑后会自动识别为一个串口设备( Windows 下为 COM 口,Linux 下为/dev/ttyUSBx)。
给开发板插上电源,Debug USB 链接笔记本,之后打开笔记本的设备管理器,在端口(COM 和 LPT)可以看到会多出来 COM5 和 COM6,选择串口连接COM5 (USB-Enhanced-SERIAL-A CH342 (COM5)),并设置速度为 115200。
板子 Debug USB 接口连接上笔记本时,端口出现 COM5和 COM6
· 登录开发板。拿到开发板后,操作系统是 BuildRoot 如下所示,可以插网线链接网络,因为 BuildRoot 只有一些最基本的命令行工具,并不好用,比方缺少 apt 等工具。但是在默认用户下有一些基本的 cpu/gpu/npu 测试文件夹,里面提供了一些测试比如 CPU 压测脚本等。
· 登录米尔开发平台[4],获取文档等资料。在开发者平台注册绑定你的产品信息,在开发板盒子侧面会有一个产品型号系列号,如下图可通过微信扫码绑定:
开发板包装盒子侧面的序列码
可以电脑登陆米尔开发者平台下载资料,必备的文档、工具、刷机工具、镜像等,如下所示:
米尔提供的 Debian&Linux6.1.75 Distribution V1.1.0
其中 02-Docs(ZH) 文档部分,下面两个必须得好好看看:
1. MYD-LR3576J-GK Ubuntu 软件开发指南-V1.0.pdf
2. MYD-LR3576 Debian 软件开发指南-V1.1.pdf
这两个文档在后面会指导你使用 02-Images、03-Tools、04-Sources 里面进行刷机、编译内核。
步骤 2:替换 NPU Driver 后编译 Ubuntu 并刷机
根据瑞芯微 GitHub rkllm 仓库对的《RKLLM SDK User Guide》要求[5],特别说明: RKLLM 版本是 1.2.1:
RKLLM 所需要的 NPU 内核版本较高,用户在板端使用 RKLLM Runtime 进行模型推理前,首先需要确认板端的 NPU 内核是否为 v0.9.8 版本。
· 可以使用命令 cat /sys/kernel/debug/rknpu/version 查看 NPU Driver 版本。
· BuildRoot 是默认系统,不太方便,所以刷了米尔提供的 Debian&Linux6.1.75 Distribution V1.1.0 里的 Ubuntu 镜像后(烧录部分遵循米尔提供的文档 MYD-LR3576J-GK Ubuntu 软件开发指南-V1.0 第 5 章:烧录镜像。发现 NPU Driver 版本是 0.9.7,不符合 RKLLM 用户文档的要求。
此时,只能将版本为 0.9.8 的 NPU Driver 代码替换到米尔给的 Ubuntu 源码里,然后重新编译 Ubuntu 镜像并重新刷机。对于刷机过程,RKLLM 的文档提到:
若用户所使用的为非官方固件,需要对内核进行更新。其中,RKNPU 驱动包支持两个主要内核版本:kernel-5.10 和 kernel-6.1:
· 对于 kernel-5.10,建议使用具体版本号 5.10.209,内核地址为 GitHub-rockchip-linux/kernelatdevelop-5.10;
· 对于 kernel-6.1,建议使用具体版本号 6.1.84;用户可在内核根目录下的 Makefile 中确认具体版本号。
米尔提供的 Debian&Linux6.1.75 Distribution V1.1.0 对应的虽然不是最推荐的 kernel-6.1.84,但是也是 6.1。即下图:
米尔提供的 Debian&Linux6.1.75 Distribution V1.1.0 里 04-Sources 的源码包
· 我们继续按照 RKLLM 的指导,进行内核的更新。
1. 下载 RK Driver 压缩包 rknpu_driver_0.9.8_20241009.tar.bz2[6]。
2. 解压该压缩包,将其中的 rknpu 驱动代码覆盖到当前内核代码目录。
· 当前内核代码,由前面 Debian&Linux6.1.75 Distribution V1.1.0 的 04-Sources 目录下的 MYD-LR3576-Distribution-L6.1.75-V1.1.0.tar.gz 解压缩得到。
解压后 Ubuntu 源码目录
3. 重新编译内核。根据米尔文档指导(MYD-LR3576J-GK Ubuntu 软件开发指南-V1.0.pdf),流程如下
分别对 u-boot、kernel、module 三部分编译,最后编译成功如下图所示:
Ubuntu 镜像编译成功
· 烧录部分遵循米尔提供的文档(MYD-LR3576J-GK Ubuntu 软件开发指南-V1.0)第 5 章:烧录镜像。
烧录结束后,连接笔记本,可以看到如下截图,进入系统。
刷机完后链接开发板,可以看到 MYIR 漂亮的字体 Logo
使用命令下图中的命令查看 NPU Driver 版本,符合预期!
自己基于米尔提供的 Ubuntu 源码更改 NPU Driver 为 0.9.8 后的 NPU Driver版本,符合预期
那么,下面我们就可以正式开始使用 RKLLM !
三、多模态案例:支持图像和文本交互
前面我们已经介绍了瑞芯微大模型 SDK RKLLM。本节将会演示实际操作流程,目标是对 Qwen2-VL-3B 多模态模型进行部署,其中视觉 + 投影组件通过 rknn-toolkit2 导出为 RKNN 模型,LLM 组件通过 rkllm-toolkit 导出为 RKLLM 模型。
在 Qwen2-VL 这类多模态模型(支持图像和文本交互)中,“视觉 + 投影”(Vision + Projector)是模型处理图像输入的核心组件,作用是将图像信息转换为模型可理解的特征:
· 视觉组件(Vision):主要负责处理图像输入,完成“图像解析”的功能。它会对输入的图像(如后续示例中的demo.jpg)进行特征提取,将像素级的图像信息(比如颜色、形状、物体轮廓等)转换为高维的“图像特征向量”(一种数值化的表示)。这一步类似人类“看”到图像并提取关键信息的过程。
· 投影组件(Projector):多模态模型需要同时处理图像和文本,而图像特征与文本特征的原始格式(如维度、语义空间)可能不同,无法直接融合。投影组件的作用就是“桥梁”:它会将视觉组件输出的“图像特征向量”进行转换(投影),映射到与文本特征相同的语义空间中,让图像特征和文本特征能够被模型的后续模块(如语言模型 LLM)统一理解和处理。
简单来说,“视觉 + 投影”组件的整体作用是:把图像“翻译”成模型能看懂的“语言”(特征),并确保这种“语言”能和文本的“语言”互通,为后续的多模态交互(如图文问答)打下基础。在部署时,这两个组件被打包成 RKNN 模型,适合在 Rockchip 的 NPU(神经网络处理器)上高效运行,专门处理图像相关的计算。
下面,跟着 RKLLM SDK 里多模态模型例子[7],只给出必要的操作步骤。
步骤 1:环境准备
安装必要的 SDK 依赖库。
步骤 2:模型的获取、验证与格式转换
本步骤产物为 rknn 和 rkllm 格式的模型文件。
· qwen2_5_vl_3b_vision_rk3576.rknn
· qwen2.5-vl-3b-w4a16_level1_rk3576.rkllm
操作如下,同官方指导[8]。:
· 先从 huggingface 下载模型如Qwen2-VL-2B-Instruct[9]。验证模型可用性。在执行 python infer.py 时会用到 GPU 进行推理。如果只想跑一下 RK3576 板子上模型性能,也可以跳过这个步骤,下载瑞芯微已经转换好的模型[10]:。
· 原始模型转换为 onnx 格式
· 从 onnx 格式转换为 rknn、rkllm 格式
注:我们这一步直接使用瑞芯微提供的 rkllm_model_zoo 里的模型[11]。
步骤 3:修改代码并交叉编译可执行文件并上传到板子上
本步骤产物为如下目录和文件。
操作如下:
修改源码中的EMBED_SIZE:适配模型
注:我们用的模型是 Qwen2-VL-3B,需要在src/main.cpp和src/img_encoder.cpp中修改EMBED_SIZE为2048。
不同的 Qwen2-VL 模型(2B 和 7B)需要在src/main.cpp和src/img_encoder.cpp中指定IMAGE_HEIGHT、IMAGE_WIDTH及EMBED_SIZE,核心原因是这些参数与模型的固有结构设计和输入处理逻辑强绑定,直接影响特征提取的正确性和数据传递的一致性。
· EMBED_SIZE(嵌入维度)是模型架构的固有参数,由模型的设计(如隐藏层维度)决定:
· Qwen2-VL-2B 和 7B 属于不同规模的模型(参数数量不同),其视觉编码器(Vision + Projector 组件)输出的图像特征向量维度不同(2B 为 1536,3B 为 2048,7B 为 3584)。
代码中img_vec(图像特征向量)的尺寸依赖EMBED_SIZE计算(如IMAGE_TOKEN_NUM * EMBED_SIZE)。若EMBED_SIZE与模型实际输出维度不匹配,会因为特征向量内存分配错误(数组大小与实际特征维度不符)或者后续 LLM 组件无法正确解析图像特征,导致推理失败如 Segmentation Fault[12]:
交叉编译
假设当前位于 rknn-llm/examples/Qwen2-VL_Demo/ 目录下,执行
cd deploy
./build-linux.sh
编译成功,如下所示:
成功交叉编译多模态代码
步骤 4:上传文件到开发板
将上一步编译后的install目录,以及前面转换模型得到的 rknn 和 rkllm 格式的模型文件通过 U 盘等方式上传到 RK3576 上。
性能测试 Tips
瑞芯微在 scripts 目录中提供了一些脚本和参数设置:
· 使用 fix_freq_rk3576.sh 锁定 CPU、GPU、NPU 等设备频率,让测试结果的性能更加稳定。
· 在设备上执行 export RKLLM_LOG_LEVEL=1,以记录模型推理性能和内存使用情况。
· 使用 eval_perf_watch_cpu.sh 可脚本测量 CPU 利用率。
· 使用 eval_perf_watch_npu.sh 可脚本测量 NPU 利用率。
fix_freq_rk3576.sh 脚本会对 NPU、CPU、GPU、DDR 进行锁频
多模态效果演示
为后续验证多模态能力,先展示 RKLLM 的基础配置及纯文字交互测试场景,以下为配置参数与初始对话片段:
纯文字问答能力
因仅是纯文字对话没有图片,可以执行如下命令,
纯文字:自我介绍
纯文字:能回答哪些问题
纯文字:谁是爱因斯坦
纯文字执行结果,时长01:59
多模态问答能力
上述为图片问答的测试准备与初始提问,下文展示‘RK3576 多模态图片问答:
测评图片1:特征是可爱的二次元蓝头发女孩,手里拿着米尔 MYIR 开发板,下方文字写着:NeuralTalk 公众号
./demo 最后一个参数是核数,用于推理时是否考虑多核推理,可选参数为:2(RKNN_NPU_CORE_0_1)、3(RKNN_NPU_CORE_0_1_2)、其他(RKNN_NPU_CORE_AUTO)。
测评图片1:描述图片
测评图片1:执行结果
下面我们再换一张图片试试效果!
测试图片2:图片背景是赛博风格
测试图片2:描述图片
测试图片2:多模态能力问答
测试图片3
下图展示了测试图片3运行中的一些性能指标,包括模型初始化时间、不同阶段的总时间(Prefill和Generate阶段)、Token数量、Token生成速度,以及峰值内存使用量。
测试图片3:内存占用和耗时等
总得来说,模型第一次加载 6 秒钟,首次出词语也有体感上的慢,但是这之后速度就很稳定,而且很快,纯文字的速度更快一些。
结论
本文围绕瑞芯微 RK3576 开发板 NPU 对多模态 LLM 的支撑能力与性能展开测评,全面呈现其在端侧 AI 领域的价值。
端侧SLM在延迟、隐私与离线可用性上的优势显著,而 RK3576 凭借 8nm 制程、6TOPS自研NPU及动态稀疏化加速引擎,填补了旗舰与主流方案的市场空白。它针对2B-3B参数级模型专项优化,轻量化视觉任务算力利用率提升 18%,NPU功耗降低 22%,30% 的成本优势使其在多场景快速量产,中高端市场占有率环比增长 47%。
技术落地方面,RKNN 与 RKLLM SDK形成互补生态,RKNN 保障模型兼容性,RKLLM 通过量化优化、多模态支持等降低模型内存占用与推理延迟。实测中,RK3576 运行 Qwen2-VL-3B 模型时,纯文字交互 Token 生成稳定,多模态问答能精准识别图像元素,峰值内存占用 4.58GB ,在移动终端和工业场景可靠运行。
本文提供的环境准备、模型转换、代码适配等实操步骤,为开发者提供了可复现的部署方案。RK3576 在多场景展现良好兼容性与稳定性,能以低成本实现高准确率任务。
未来,RK3576“算力精准匹配场景”的设计理念或成中端AIoT核心方向,其在多维度的平衡,为端侧AI部署提供高性价比选择,助力边缘计算规模化应用。
RK3576 工作状态