Skip to content

使用 AidGen 部署 VLM

介绍

端侧部署视觉多模态大模型 (Vision Language Model, VLM) 指将原本在云端运行的大模型压缩、量化并部署到本地设备上,实现离线、低时延的自然语言理解与生成。本章节以 AidGen 推理引擎为基础,演示如何在边缘设备上完成多模态大模型的部署、加载与对话流程。

在本案例中,多模态大模型推理运行在设备端,通过 C++ 代码调用相关接口接收用户输入并实时返回对话结果。

  • 设备:IQ9075
  • 系统:Ubuntu 24.04
  • 模型:Qwen2.5-VL-3B (504x336)

支持平台

平台运行方式
IQ9075Ubuntu 24.04

准备工作

  1. IQ9075 硬件

  2. Ubuntu 24.04 系统

系统依赖配置

配置 AidLux 依赖源

bash
# 下载正确的公钥
sudo wget -O- https://archive.aidlux.com/ubuntu24/public.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/private-aidlux.gpg > /dev/null

# 编辑源文件
sudo vim /etc/apt/sources.list.d/private-aidlux.list

#在源文件中填入AidLux 提供的私钥
deb [arch=arm64 signed-by=/etc/apt/trusted.gpg.d/private-aidlux.gpg] https://archive.aidlux.com/ubuntu24 noble main

#  更新缓存
sudo apt update

更新完成后,可以通过如下命令获取到AidLux 官方的SDK 依赖

bash
sudo apt list | grep aid | grep unknown
bash
# 安装软件
# 必须先安装的,系统不自带
sudo apt install python3 python3-pip libopencv-dev python3-opencv  net-tools
# 安装 aidlite 之前必须安装的
sudo apt install aidlux-aistack-base aidrtcm

# 安装 aidlite 及依赖 
sudo apt install aid-lms aidlms-sdk aidlite-sdk cmake
sudo apt-get install libfmt-dev nlohmann-json3-dev
sudo apt install aidlite-*

# 支持DSP
sudo apt-get install qcom-fastrpc1
sudo apt-get install qcom-fastrpc-dev

# 安装 aidgen-sdk
sudo apt install aidgen-sdk
sudo apt install aidgen-qnn*

# 安装 mms 服务
sudo apt install aid-mms

# 支持 GPU
sudo apt-add-repository -s ppa:ubuntu-qcom-iot/qcom-ppa
sudo apt install qcom-adreno-cl1
sudo ln -s /usr/lib/aarch64-linux-gnu/libOpenCL.so.1 /usr/lib/aarch64-linux-gnu/libOpenCL.so

安装完成后检查系统 /usr/local/share 新增 aidliteaidgen 目录

目录结构

设备授权

获取设备 SN 码

bash
cat  /sys/devices/soc0/serial_number

获取授权文件

提供SN号给阿加犀技术人员,生成设备指定 License 文件,放入路径 /etc/opt/aidlux/license/AidLuxLics

激活授权

bash
sudo /opt/aidlux/cpf/aid-lms/manager.sh restart

案例部署

步骤一:AidGen SDK 代码例子拷贝

bash
# 拷贝测试代码
cd /home/ubuntu/aidmlm
cp -r /usr/local/share/aidgen/examples/ ./

步骤二:模型获取

由于 Qwen2.5-VL-3B (504x336) 目前位于 Model Farm 预览板块中,需要通过 mms 命令获取

使用 mms 需要 Model Farm 账号登录,请访问 Model Farm 账号注册

bash
# 登录
mms login

# 查找模型
mms list Qwen2.5-VL-3B

# 下载模型
mms get -m 'Qwen2.5-VL-3B-Instruct (504x336) ' -p w4a16 -c qcs9075 -b qnn2.40 -d /home/ubuntu/aidmlm/

cd /home/ubuntu/aidmlm/
unzip qnn236_qcs9075_cl2048.zip

步骤三:模型目录检查

文件分布如下:

bash
/home/ubuntu/aidmlm/qnn236_qcs9075_cl2048
├── window_attention_mask.raw
├── veg.serialized.bin.aidem
├── qwen2p5-vl-3b-qnn236-qcs9075-cl2048_3_of_3.serialized.bin.aidem
├── qwen2p5-vl-3b-qnn236-qcs9075-cl2048 2_of_3.serialized.bin.aidem
├── qwen2p5-vl-3b-qnn236-qcs9075-cl2048_1_of_3.serialized.bin.aidem
├── position_ids_sin.raw
├── position_ids_cos.raw
├── full_attention_mask.raw
├── embedding_weights_151936x2048.raw
├── demo512x342.jpeg
├── aidgen_config.json
├── examples

步骤四:编译运行

bash
cd /home/ubuntu/aidmlm/

# 替换aidgen-sdk example 中的文件
cp qnn236_qcs9075_cl2048/examples/* ./examples/
cd ./examples

mkdir build && cd build
cmake .. && make

# 将编译完成的示例程序 test_qwen25vl 拷贝到模型目录
cp test_qwen25vl ../../qnn236_qcs9075_cl2048
cd /home/ubuntu/aidmlm/qnn236_qcs9075_cl2048

./test_qwen25vl qnn240
  • 模型运行成功后,有如下日志回显
bash
#################################################
图文Embedding输入
这张图片展示了一位女性和她的狗在海滩上玩耍的温馨场景。女性坐在沙滩上,面向狗,似乎正在与狗互动或玩耍。她的狗穿着蓝色的项圈,看起来是一只金毛寻回犬。背景是开阔的海面和远处的天空,阳光明媚,给人一种温暖和宁静的感觉。整个场景充满了人与宠物之间的快乐和陪伴。<|im_end|>
#################################################