使用 AidGen 部署 VLM
介绍
端侧部署视觉多模态大模型 (Vision Language Model, VLM) 指将原本在云端运行的大模型压缩、量化并部署到本地设备上,实现离线、低时延的自然语言理解与生成。本章节以 AidGen 推理引擎为基础,演示如何在边缘设备上完成多模态大模型的部署、加载与对话流程。
在本案例中,多模态大模型推理运行在设备端,通过 C++ 代码调用相关接口接收用户输入并实时返回对话结果。
- 设备:Rhino Pi-X1
- 系统:Ubuntu 22.04
- 模型:Qwen2.5-VL-3B (392x392)
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
Rhino Pi-X1 硬件
Ubuntu 22.04 系统或 AidLux 系统
案例部署
步骤一:安装 AidGen SDK
bash
# 安装 AidGen SDK
sudo aid-pkg update
sudo aid-pkg -i aidgen-sdk
sudo aid-pkg -i aidgen-qnn240
sudo aid-pkg -i aidgen-qnn248
# 拷贝测试代码
mkdir /home/aidlux/aidmlm
cd /home/aidlux/aidmlm
cp -r /usr/local/share/aidgen/examples/ ./步骤二:模型获取
由于 Qwen2.5-VL-3B (392x392) 目前位于 Model Farm 预览板块中,需要通过
mms命令获取
bash
# 登录
mms login
# 查找模型
mms list Qwen2.5-VL-3B
# 下载模型
mms get -m 'Qwen2.5-VL-3B-Instruct (392x392)' -p w4a16 -c qcs8550 -b qnn2.36 -d /home/aidlux/aidmlm/
# 解压模型
cd /home/aidlux/aidmlm/
unzip qnn236_qcs8550_cl2048.zip步骤三:资源文件确认
文件分布如下:
bash
/home/aidlux/aidmlm/qnn236_qcs8550_cl2048
├── window_attention_mask.raw
├── veg.serialized.bin.aidem
├── qwen2p5-v1-3b_qnn236_qcs8550_c12048_1_of_1.serialized.bin.aidem
├── position_ids_sin.raw
├── position_ids_cos.raw
├── full_attention_mask.raw
├── embedding_weights_151936x2048.raw
├── demo.jpg
├── aidgen_config.json
├── examples步骤四:编译运行
bash
cd /home/aidlux/aidmlm/examples
# 替换示例文件
cp ../qnn236_qcs8550_cl2048/examples/* ./
# 编译
mkdir build && cd build
cmake .. && make
# 将编译后的示例文件放到模型目录下
cp ./test_qwen25vl ../../qnn236_qcs8550_cl2048
cd /home/aidlux/aidmlm/qnn236_qcs8550_cl2048
# 运行示例程序
./test_qwen25vl qnn240- 模型运行成功后,有如下日志回显
bash
#################################################
图文Embedding输入
这张图片展示了一位女性和她的狗在海滩上。背景是广阔的海洋,海浪轻轻拍打着海岸。天空看起来晴朗,阳光明媚,给整个场景增添了一种温暖和宁静的氛围。
女性坐在沙滩上,穿着休闲服装,似乎正在与她的狗互动。她的狗戴着一个蓝色的项圈,看起来很友好和忠诚。他们似乎在分享一个特别的时刻,也许是在互相打掌或给予彼此鼓励。
整体氛围是轻松和愉快,充满了人与宠物之间的亲密关系。海滩是一个非常适合这样的活动的地方,因为它们提供了一个自然的环境,让人们可以放松、享受大自然,并与他们的宠物一起度过美好的时光。<|im_end|>
#################################################