演示视频
https://www.bilibili.com/video/BV1Dyt6zQEVw/
前期准备
检查 NPU 内核版本
首先需确保 NPU 内核版本为 v0.9.8,查询与更新方法参考:
https://www.cnblogs.com/yijunchenhui/p/19027716
相关资源链接
-
rkllm 项目地址:https://github.com/airockchip/rknn-llm
-
预转换模型下载:https://console.box.lenovo.com/l/l0tXb8(提取码:rkllm)
所需模型文件
从预转换模型中获取以下两个关键文件:
-
rkllm_model_zoo/1.1.4/RK3588/Qwen2-VL-2B_Demo/Qwen2-VL-2B_llm_w8a8_rk3588.rkllm
-
rkllm_model_zoo/1.1.4/RK3588/Qwen2-VL-2B_Demo/Qwen2-VL-2B_vision_rk3588.rknn
性能监控与配置脚本
在rknn-llm/scripts/
目录下有以下实用脚本:
- 性能监控脚本
-
eval_perf_watch_cpu.sh
:读取 CPU 峰值性能 -
eval_perf_watch_npu.sh
:读取 NPU 峰值性能
- 性能优化脚本
fix_freq_rk3588.sh
:将 CPU、NPU、GPU、DDR 等参数调至最高性能模式
源码编译
修改编译脚本
编辑rknn-llm/examples/Qwen2-VL_Demo/deploy/``build-linux.sh
,改交叉编译为本机编译:
cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
编译输出路径
编译完成的文件将生成在:
rknn-llm/examples/Qwen2-VL_Demo/deploy/install/demo_Linux_aarch64
主要程序
编译后将得到三个主要程序:
-
imgenc
:图像编码器 -
llm
:纯文本大模型推理程序 -
demo
:多模态推理程序
注意:执行这些程序前,需先运行性能优化脚本:
fix_freq_rk3588.sh
程序使用说明
图像编码(imgenc)
大模型处理图片时,需要先通过imgenc
将图像编码为向量:
./imgenc models/qwen2-vl-vision\_rk3588.rknn demo.jpg 3
输出信息解析:
\===the core num is 3===
model input num: 1, output num: 1
input tensors:
index=0, name=onnx::Expand\_0, n\_dims=4, dims=\[1, 392, 392, 3], n\_elems=460992, size=921984, fmt=NHWC, type=FP16, qnt\_type=AFFINE, zp=0, scale=1.000000
output tensors:
index=0, name=6076, n\_dims=2, dims=\[196, 1536, 0, 0], n\_elems=301056, size=602112, fmt=UNDEFINED, type=FP16, qnt\_type=AFFINE, zp=0, scale=1.000000
model input height=392, width=392, channel=3
main: Model loaded in 2313.00 ms
main: Encoder the image cost 3213.80 ms
关键信息:
-
模型要求输入图像尺寸为 392×392
-
模型加载耗时:2313.00 毫秒
-
图像编码耗时:3213.80 毫秒
纯文本推理(llm)
运行纯文本推理示例:
./llm models/qwen2-vl-llm\_rk3588.rkllm 128 512
输出信息与功能:
程序启动后会显示模型加载信息,并提供几个示例问题供测试:
rkllm init start
I rkllm: rkllm-runtime version: 1.2.1, rknpu driver version: 0.9.8, platform: RK3588
I rkllm: loading rkllm model from models/Qwen2-VL-2B\_llm\_w8a8\_rk3588.rkllm
I rkllm: rkllm-toolkit version: 1.1.4b5, max\_context\_limit: 4096, npu\_core\_num: 3, target\_platform: RK3588, model\_dtype: W8A8
I rkllm: Enabled cpus: \[4, 5, 6, 7]
I rkllm: Enabled cpus num: 4
rkllm init success
main: Model loaded in 7494.57 ms
示例交互:
user: 0
把下面的现代文翻译成文言文: 到了春风和煦,阳光明媚的时候,湖面平静,没有惊涛骇浪,天色湖光相连,一片碧绿,广阔无际;沙洲上的鸥鸟,时而飞翔,时而停歇,美丽的鱼游来游去,岸上与小洲上的花草,青翠欲滴。
robot: 到了春风和煦、阳光明媚的时候,湖面平静没有惊涛骇浪,天色与湖光相连,一片碧绿广阔无际;沙洲上的鸥鸟时而飞翔时而停歇,美丽的鱼儿游来游去,岸边的小洲上花草青翠欲滴。
多模态推理(demo)
运行图像 + 文本的多模态推理示例:
./demo demo.jpg models/qwen2-vl-vision\_rk3588.rknn models/qwen2-vl-llm\_rk3588.rkllm 128 512 3
输出信息与功能:
程序会同时加载视觉模型和语言模型,支持对图像内容进行提问:
示例交互 1:
user: 0
\<image>What is in the image?
robot: The image depicts an astronaut on the moon, holding a green beer bottle with a label that appears to be Arabic script. The background shows the Earth and the vastness of space.
示例交互 2:
user: 1
\<image>这张图片中有什么?
robot: 这张图片展示了一位穿着宇航服的宇航员坐在月球表面,手里拿着一瓶绿色的啤酒。背景是地球和星空,给人一种在太空中喝啤酒的感觉。
来源链接:https://www.cnblogs.com/yijunchenhui/p/19027740
没有回复内容