步驟 2:替換 NPU Driver 后編譯 Ubuntu 并刷機
根據瑞芯微 GitHub rkllm 倉庫對的《RKLLM SDK User Guide》要求[5],特別說明: RKLLM 版本是 1.2.1:
RKLLM 所需要的 NPU 內核版本較高,用戶在板端使用 RKLLM Runtime 進行模型推理前,首先需要確認板端的 NPU 內核是否為 v0.9.8 版本。
此時,只能將版本為 0.9.8 的 NPU Driver 代碼替換到米爾給的 Ubuntu 源碼里,然后重新編譯 Ubuntu 鏡像并重新刷機。對于刷機過程,RKLLM 的文檔提到:
若用戶所使用的為非官方固件,需要對內核進行更新。其中,RKNPU 驅動包支持兩個主要內核版本:kernel-5.10 和 kernel-6.1:
米爾提供的 Debian&Linux6.1.75 Distribution V1.1.0 對應的雖然不是最推薦的 kernel-6.1.84,但是也是 6.1。即下圖:

下載 RK Driver 壓縮包 rknpu_driver_0.9.8_20241009.tar.bz2[6]。
解壓該壓縮包,將其中的 rknpu 驅動代碼覆蓋到當前內核代碼目錄。

分別對 u-boot、kernel、module 三部分編譯,最后編譯成功如下圖所示:

燒錄結束后,連接筆記本,可以看到如下截圖,進入系統。

使用命令下圖中的命令查看 NPU Driver 版本,符合預期!

那么,下面我們就可以正式開始使用 RKLLM !
三、多模態案例:支持圖像和文本交互
前面我們已經介紹了瑞芯微大模型 SDK RKLLM。本節將會演示實際操作流程,目標是對 Qwen2-VL-3B 多模態模型進行部署,其中視覺 + 投影組件通過 rknn-toolkit2 導出為 RKNN 模型,LLM 組件通過 rkllm-toolkit 導出為 RKLLM 模型。
在 Qwen2-VL 這類多模態模型(支持圖像和文本交互)中,“視覺 + 投影”(Vision + Projector)是模型處理圖像輸入的核心組件,作用是將圖像信息轉換為模型可理解的特征:
簡單來說,“視覺 + 投影”組件的整體作用是:把圖像“翻譯”成模型能看懂的“語言”(特征),并確保這種“語言”能和文本的“語言”互通,為后續的多模態交互(如圖文問答)打下基礎。在部署時,這兩個組件被打包成 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]。:
注:我們這一步直接使用瑞芯微提供的 rkllm_model_zoo 里的模型[11]。
步驟 3:修改代碼并交叉編譯可執行文件并上傳到板子上
本步驟產物為如下目錄和文件。
rknn-llm-release-v1.2.1/examples/Qwen2-VL_Demo/deploy/install/demo_Linux_aarch64▶ tree
.
├── demo
├── demo.jpg
├── imgenc
├── lib
│ ├── librkllmrt.so
│ └── librknnrt.so
└── llm
1 directory, 6 files
操作如下:
注:我們用的模型是 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,核心原因是這些參數與模型的固有結構設計和輸入處理邏輯強綁定,直接影響特征提取的正確性和數據傳遞的一致性。
代碼中img_vec(圖像特征向量)的尺寸依賴EMBED_SIZE計算(如IMAGE_TOKEN_NUM * EMBED_SIZE)。若EMBED_SIZE與模型實際輸出維度不匹配,會因為特征向量內存分配錯誤(數組大小與實際特征維度不符)或者后續 LLM 組件無法正確解析圖像特征,導致推理失敗如 Segmentation Fault[12]:
假設當前位于 rknn-llm/examples/Qwen2-VL_Demo/ 目錄下,執行
編譯成功,如下所示:
成功交叉編譯多模態代碼步驟 4:上傳文件到開發板
將上一步編譯后的install目錄,以及前面轉換模型得到的 rknn 和 rkllm 格式的模型文件通過 U 盤等方式上傳到 RK3576 上。
性能測試 Tips
瑞芯微在 scripts 目錄中提供了一些腳本和參數設置:

多模態效果演示
為后續驗證多模態能力,先展示 RKLLM 的基礎配置及純文字交互測試場景,以下為配置參數與初始對話片段:
因僅是純文字對話沒有圖片,可以執行如下命令,




上述為圖片問答的測試準備與初始提問,下文展示‘RK3576 多模態圖片問答:

./demo 最后一個參數是核數,用于推理時是否考慮多核推理,可選參數為:2(RKNN_NPU_CORE_0_1)、3(RKNN_NPU_CORE_0_1_2)、其他(RKNN_NPU_CORE_AUTO)。



測試圖片2:描述圖片
測試圖片2:多模態能力問答
下圖展示了測試圖片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 工作狀態
rknn_model_zoo: 'https://github.com/airockchip/rknn_model_zoo'
[3]airockchip/rknn-llm: 'https://github.com/airockchip/rknn-llm'
[4]米爾開發平臺: 'https://dev.myir.cn/'
[5]Rockchip_RKLLM_SDK_CN_1.2.1.pdf: 'https://github.com/airockchip/rknn-llm/blob/main/doc/Rockchip_RKLLM_SDK_CN_1.2.1.pdf'
[6]rknpu-driver: 'https://github.com/airockchip/rknn-llm/tree/main/rknpu-driver'
[7]Qwen2-VL_Demo: 'https://github.com/airockchip/rknn-llm/tree/main/examples/Qwen2-VL_Demo'
[8]Qwen2-VL_Demo: 'https://github.com/airockchip/rknn-llm/tree/main/examples/Qwen2-VL_Demo'
[9]Qwen2-VL-2B-Instruct: 'https://huggingface.co/Qwen/Qwen2-VL-2B-Instruct'
[10]rkllm_model_zoo: 'https://console.box.lenovo.com/l/l0tXb8'
[11]rkllm_model_zoo: 'https://console.box.lenovo.com/l/l0tXb8'
[12]Qwen2-VL-2B_Demo segfault RK3576 using 1.2.0 version: 'https://github.com/airockchip/rknn-llm/issues/336'
| 歡迎光臨 電子工程網 (http://www.4huy16.com/) | Powered by Discuz! X3.4 |