色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

查看: 99|回復: 0
打印 上一主題 下一主題

[供應] Qwen2-VL-3B模型NPU多模態(tài)部署指導與評測--基于米爾瑞芯微RK3576開發(fā)板(下)

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2025-8-29 17:56:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    ​

步驟 2:替換 NPU Driver 后編譯 Ubuntu 并刷機

    ​根據(jù)瑞芯微 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 版本。

    ​
# cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.7
  • BuildRoot 是默認系統(tǒng),不太方便,所以刷了米爾提供的 Debian&Linux6.1.75 Distribution V1.1.0 里的 Ubuntu 鏡像后(燒錄部分遵循米爾提供的文檔 MYD-LR3576J-GK Ubuntu 軟件開發(fā)指南-V1.0 第 5 章:燒錄鏡像。發(fā)現(xiàn) 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 的源碼包

  • 我們繼續(xù)按照 RKLLM 的指導,進行內核的更新。

  • 下載 RK Driver 壓縮包 rknpu_driver_0.9.8_20241009.tar.bz2[6]。

  • 解壓該壓縮包,將其中的 rknpu 驅動代碼覆蓋到當前內核代碼目錄。


    • 當前內核代碼,由前面 Debian&Linux6.1.75 Distribution V1.1.0 的 04-Sources 目錄下的 MYD-LR3576-Distribution-L6.1.75-V1.1.0.tar.gz 解壓縮得到。

    ​
解壓后 Ubuntu 源碼目錄

  • 重新編譯內核。根據(jù)米爾文檔指導(MYD-LR3576J-GK Ubuntu 軟件開發(fā)指南-V1.0.pdf),流程如下

    ​
# 進入源碼解壓后得到的一個 MYD-LR3576 目錄
# 第一次編譯執(zhí)行以下命令選擇配置文件
./build.sh lunch

# Which would you like? [7]
# 這里選擇 7,rockchip_rk3576_myd_lr3576_defconfig

# 緊接著分別編譯 u-boot、kernel 和 modules
./build.sh u-boot
./build.sh kernel
./build.sh module

# 編譯成功再執(zhí)行下面命令,編譯 Ubuntu 文件系統(tǒng),并打包最終 Ubuntu 系統(tǒng)鏡像
./build.sh ubuntu
./build.sh updateimg

# RK3576 為了用戶可以更便捷的燒錄,單獨創(chuàng)建了目錄儲存編譯出來的鏡像在 output/update/Image 下

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

Ubuntu 鏡像編譯成功

  • 燒錄部分遵循米爾提供的文檔(MYD-LR3576J-GK Ubuntu 軟件開發(fā)指南-V1.0)第 5 章:燒錄鏡像。

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

    ​
刷機完后鏈接開發(fā)板,可以看到 MYIR 漂亮的字體 Logo

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

    ​
自己基于米爾提供的 Ubuntu 源碼更改 NPU Driver 為 0.9.8 后的 NPU Driver版本,符合預期

    ​那么,下面我們就可以正式開始使用 RKLLM !

    ​

三、多模態(tài)案例:支持圖像和文本交互

    ​

前面我們已經(jīng)介紹了瑞芯微大模型 SDK RKLLM。本節(jié)將會演示實際操作流程,目標是對 Qwen2-VL-3B 多模態(tài)模型進行部署,其中視覺 + 投影組件通過 rknn-toolkit2 導出為 RKNN 模型,LLM 組件通過 rkllm-toolkit 導出為 RKLLM 模型。

    ​在 Qwen2-VL 這類多模態(tài)模型(支持圖像和文本交互)中,“視覺 + 投影”(Vision + Projector)是模型處理圖像輸入的核心組件,作用是將圖像信息轉換為模型可理解的特征:

    ​
  • 視覺組件(Vision):主要負責處理圖像輸入,完成“圖像解析”的功能。它會對輸入的圖像(如后續(xù)示例中的demo.jpg)進行特征提取,將像素級的圖像信息(比如顏色、形狀、物體輪廓等)轉換為高維的“圖像特征向量”(一種數(shù)值化的表示)。這一步類似人類“看”到圖像并提取關鍵信息的過程。
  • 投影組件(Projector):多模態(tài)模型需要同時處理圖像和文本,而圖像特征與文本特征的原始格式(如維度、語義空間)可能不同,無法直接融合。投影組件的作用就是“橋梁”:它會將視覺組件輸出的“圖像特征向量”進行轉換(投影),映射到與文本特征相同的語義空間中,讓圖像特征和文本特征能夠被模型的后續(xù)模塊(如語言模型 LLM)統(tǒng)一理解和處理。

    ​簡單來說,“視覺 + 投影”組件的整體作用是:把圖像“翻譯”成模型能看懂的“語言”(特征),并確保這種“語言”能和文本的“語言”互通,為后續(xù)的多模態(tài)交互(如圖文問答)打下基礎。在部署時,這兩個組件被打包成 RKNN 模型,適合在 Rockchip 的 NPU(神經(jīng)網(wǎng)絡處理器)上高效運行,專門處理圖像相關的計算。


    ​

    ​下面,跟著 RKLLM SDK 里多模態(tài)模型例子[7],只給出必要的操作步驟。

    ​

步驟 1:環(huán)境準備

    ​安裝必要的 SDK 依賴庫。

    ​
pip install rknn-toolkit2 -i https://mirrors.aliyun.com/pypi/simple
pip install torchvision==0.19.0
pip install transformers
pip install accelerate
    ​

步驟 2:模型的獲取、驗證與格式轉換

    ​

本步驟產(chǎn)物為 rknn 和 rkllm 格式的模型文件。

  • qwen2_5_vl_3b_vision_rk3576.rknn
  • qwen2.5-vl-3b-w4a16_level1_rk3576.rkllm

    ​操作如下,同官方指導[8]。:

    ​
  • 先從 huggingface 下載模型如Qwen2-VL-2B-Instruct[9]。驗證模型可用性。在執(zhí)行 python infer.py 時會用到 GPU 進行推理。如果只想跑一下 RK3576 板子上模型性能,也可以跳過這個步驟,下載瑞芯微已經(jīng)轉換好的模型[10]:。
  • 原始模型轉換為 onnx 格式
  • 從 onnx 格式轉換為 rknn、rkllm 格式

    ​注:我們這一步直接使用瑞芯微提供的 rkllm_model_zoo 里的模型[11]。

    ​

步驟 3:修改代碼并交叉編譯可執(zhí)行文件并上傳到板子上

    ​

本步驟產(chǎn)物為如下目錄和文件。

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

    ​操作如下:

    ​
修改源碼中的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,核心原因是這些參數(shù)與模型的固有結構設計和輸入處理邏輯強綁定,直接影響特征提取的正確性和數(shù)據(jù)傳遞的一致性。

    ​
  • EMBED_SIZE(嵌入維度)是模型架構的固有參數(shù),由模型的設計(如隱藏層維度)決定:
  • Qwen2-VL-2B 和 7B 屬于不同規(guī)模的模型(參數(shù)數(shù)量不同),其視覺編碼器(Vision + Projector 組件)輸出的圖像特征向量維度不同(2B 為 1536,3B 為 2048,7B 為 3584)。

    ​代碼中img_vec(圖像特征向量)的尺寸依賴EMBED_SIZE計算(如IMAGE_TOKEN_NUM * EMBED_SIZE)。若EMBED_SIZE與模型實際輸出維度不匹配,會因為特征向量內存分配錯誤(數(shù)組大小與實際特征維度不符)或者后續(xù) LLM 組件無法正確解析圖像特征,導致推理失敗如 Segmentation Fault[12]:

    ​
交叉編譯

    ​假設當前位于 rknn-llm/examples/Qwen2-VL_Demo/ 目錄下,執(zhí)行

    ​
cd deploy
./build-linux.sh

    ​編譯成功,如下所示:

    ​

成功交叉編譯多模態(tài)代碼

    ​

步驟 4:上傳文件到開發(fā)板

    ​將上一步編譯后的install目錄,以及前面轉換模型得到的 rknn 和 rkllm 格式的模型文件通過 U 盤等方式上傳到 RK3576 上。

    ​

性能測試 Tips

    ​瑞芯微在 scripts 目錄中提供了一些腳本和參數(shù)設置:

    ​
  • 使用 fix_freq_rk3576.sh 鎖定 CPU、GPU、NPU 等設備頻率,讓測試結果的性能更加穩(wěn)定。
  • 在設備上執(zhí)行 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 進行鎖頻

    ​

多模態(tài)效果演示

    ​為后續(xù)驗證多模態(tài)能力,先展示 RKLLM 的基礎配置及純文字交互測試場景,以下為配置參數(shù)與初始對話片段:

    ​
純文字問答能力

    ​因僅是純文字對話沒有圖片,可以執(zhí)行如下命令,

    ​
# run llm(Pure Text Example)
./llm ~/rkllm-model-zoo/Qwen2.5-VL-3B-Instruct/qwen2.5-vl-3b-w4a16_level1_rk3576.rkllm 128 512
    ​
純文字:自我介紹

[color=rgba(0, 0, 0, 0.9)]    ​
    ​純文字:能回答哪些問題
純文字:誰是愛因斯坦

純文字執(zhí)行結果


    ​
多模態(tài)問答能力

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

    ​
測評圖片1:特征是可愛的二次元藍頭發(fā)女孩,手里拿著米爾 MYIR 開發(fā)板,下方文字寫著:NeuralTalk 公眾號

    ​
# run demo(Multimodal Example)
# 使用方式:./demo image_path encoder_model_path llm_model_path max_new_tokens max_context_len rknn_core_num
./demo demo.jpg models/qwen2-vl-vision_rk3588.rknn models/qwen2-vl-llm_rk3588.rkllm 128 512 3

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

    ​
測評圖片1:描述圖片

測評圖片1:執(zhí)行結果

下面我們再換一張圖片試試效果!
    ​
測試圖片2:圖片背景是賽博風格


測試圖片2:描述圖片


測試圖片2:多模態(tài)能力問答

測試圖片3

    ​下圖展示了測試圖片3運行中的一些性能指標,包括模型初始化時間、不同階段的總時間(Prefill和Generate階段)、Token數(shù)量、Token生成速度,以及峰值內存使用量。

    ​

測試圖片3:內存占用和耗時等

    ​

總得來說,模型第一次加載 6 秒鐘,首次出詞語也有體感上的慢,但是這之后速度就很穩(wěn)定,而且很快,純文字的速度更快一些。

    ​

結論

    ​

本文圍繞瑞芯微 RK3576 開發(fā)板 NPU 對多模態(tài) LLM 的支撐能力與性能展開測評,全面呈現(xiàn)其在端側 AI 領域的價值。

    ​端側SLM在延遲、隱私與離線可用性上的優(yōu)勢顯著,而 RK3576 憑借 8nm 制程、6TOPS自研NPU及動態(tài)稀疏化加速引擎,填補了旗艦與主流方案的市場空白。它針對2B-3B參數(shù)級模型專項優(yōu)化,輕量化視覺任務算力利用率提升 18%,NPU功耗降低 22%,30% 的成本優(yōu)勢使其在多場景快速量產(chǎn),中高端市場占有率環(huán)比增長 47%。

    ​

技術落地方面,RKNN 與 RKLLM SDK形成互補生態(tài),RKNN 保障模型兼容性,RKLLM 通過量化優(yōu)化、多模態(tài)支持等降低模型內存占用與推理延遲。實測中,RK3576 運行 Qwen2-VL-3B 模型時,純文字交互 Token 生成穩(wěn)定,多模態(tài)問答能精準識別圖像元素,峰值內存占用 4.58GB ,在移動終端和工業(yè)場景可靠運行。

本文提供的環(huán)境準備、模型轉換、代碼適配等實操步驟,為開發(fā)者提供了可復現(xiàn)的部署方案。RK3576 在多場景展現(xiàn)良好兼容性與穩(wěn)定性,能以低成本實現(xiàn)高準確率任務。

    ​未來,RK3576“算力精準匹配場景”的設計理念或成中端AIoT核心方向,其在多維度的平衡,為端側AI部署提供高性價比選擇,助力邊緣計算規(guī);瘧谩

    ​

    ​RK3576 工作狀態(tài)


參考資料
[1] MYD-LR3576-產(chǎn)品介紹-V1.1: https://dev.myir.cn/upload/files/product/20250211/17392600078427483.pdf
[2]rknn_model_zoo: 'https://github.com/airockchip/rknn_model_zoo'
[3]airockchip/rknn-llm: 'https://github.com/airockchip/rknn-llm'
[4]米爾開發(fā)平臺: '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'





您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表