一、 簡介
Qwen-2-5-VL 是阿里巴巴通義千問團隊推出的多模態大語言模型(MLLM),屬于 Qwen-2 系列模型的一部分,支持視覺(Vision)與語言(Language)的多模態交互。
1、特性
- 動態分辨率處理:自適應調整圖像分辨率以平衡精度與計算效率。
- 跨模態對齊:通過對比學習對齊視覺-語言特征空間,提升模態交互能力。
- 低資源適配:支持量化、LoRA微調等輕量化部署方案。
2、工程目錄
Qwen2-5-VL├── datasets│ ├──images # 默認為一張panda.jpg的圖片│ └──videos # 默認為一段carvana_video.mp4的視頻├── models│ └── BM1684X│ └── qwen2.5-vl-3b_bm1684x_w4bf16_seq2048.bmodel # BM1684X qwen2.5-vl-3b模型├── python│ ├── __pycache__│ ├── configs # 配置文件│ ├── qwen2_5_vl.py # 啟動程序│ ├── README.md # 說明文檔│ ├── vision_process.py # 視覺數據預處理文件│ └── requirements.txt # python依賴├── scripts│ ├── compile.sh│ ├── datasets.zip│ ├── download_bm1684x_bmodel.sh # 1684X盒子模型下載腳本│ ├── download_bm1688_bmodel.sh # 1688盒子模型下載腳本│ └── download_datasets.sh # 數據集下載腳本└── tools # 工具包
二、運行步驟
1、準備Python環境、數據與模型
1.1 首先升級python版本為3.10
sudo add-apt-repository ppa:deadsnakes/ppasudo apt updatesudo apt install python3.10 python3.10-dev# 創建虛擬環境(不含pip包),以后每次運行都要按照步驟切換虛擬環境cd /data# 創建虛擬環境(不包含 pip)python3.10 -m venv --without-pip myenv# 進入虛擬環境source myenv/bin/activate# 手動安裝 pipcurl https://bootstrap.pypa.io/get-pip.py -o get-pip.pypython get-pip.pyrm get-pip.py# 安裝依賴庫pip3 install torchvision pillow qwen_vl_utils transformers --upgrade
1.2 復制算能官方的Qwen2-5-VL工程目錄(或者復制后將Qwen2_5-VL上傳到盒子中的/data下)
git clone https://github.com/sophgo/sophon-demo.gitcd sophon-demo/sample/Qwen2_5-VLcd /data/Qwen2_5-VL ##如果只上傳了LLM_api_server,則只需進入此目錄下操作
1.3 準備運行環境
在PCIe上無需修改內存,以下為soc模式相關:
對于1684X系列設備(如SE7/SM7),都可以通過這種方式完成環境準備,使其滿足Qwen2.5-VL運行條件。
首先,確保使用V24.04.01 SDK,可以通過bm_version命令檢查SDK版本,如需要升級,可從sophgo.com獲取v24.04.01版本SDK,刷機包位于sophon-img-xxx/sdcard.tgz中,參考對應的產品手冊進行刷機。
確保SDK版本后,在1684x SoC環境上,參考如下命令修改設備內存
cd /data/mkdir memedit && cd memeditwget -nd https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/09/11/13/DeviceMemoryModificationKit.tgztar xvf DeviceMemoryModificationKit.tgzcd DeviceMemoryModificationKittar xvf memory_edit_{vx.x}.tar.xz #vx.x是版本號cd memory_edit./memory_edit.sh -p #這個命令會打印當前的內存布局信息./memory_edit.sh -c -npu 7615 -vpu 2048 -vpp 2048 #如果是在1688平臺上請修改為:./memory_edit.sh -c -npu 10240 -vpu 0 -vpp 3072sudo cp /data/memedit/DeviceMemoryModificationKit/memory_edit/emmcboot.itb /boot/emmcboot.itb && syncsudo reboot
1.4 安裝unzip以及測試數據集準備
sudo apt install unzipchmod -R +x scripts/./scripts/download_bm1684x_bmodel.sh ##下載模型文件./scripts/download_datasets.sh ##下載數據集
2、python例程
2.1 環境準備
# 此外您可能還需要安裝其他庫cd /data/Qwen2_5-VL/pythonpip3 install dfss -i https://pypi.tuna.tsinghua.edu.cn/simple --upgradepip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 您需要安裝SILK2.Tools.loggerpython3 -m dfss --url=open@sophgo.com:tools/silk2/silk2.tools.logger-1.0.2-py3-none-any.whlpip3 install silk2.tools.logger-1.0.2-py3-none-any.whl --force-reinstallrm -f silk2.tools.logger-1.0.2-py3-none-any.whl# 本例程依賴sophon-sail,可直接安裝sophon-sail,執行如下命令:pip3 install dfss --upgradepython3 -m dfss --install sail# 需要下載運行配置文件,執行如下命令python3 -m dfss --url=open@sophgo.com:sophon-demo/Qwen2_5_VL/configs.zipunzip configs.ziprm configs.zip
2.2 啟動測試
參數說明
可以通過修改qwen2_5_vl.py中的內容進行測試運行。內容如圖:
需要將其中896行的bmodel默認路徑改為:../models/BM1684X/qwen2.5-vl-3b_bm1684x_w4bf16_seq2048.bmodel
使用方式
# 視頻識別python3 qwen2_5_vl.py --vision_inputs="[{\"type\":\"video_url\",\"video_url\":{\"url\": \"../datasets/videos/carvana_video.mp4\"},\"resized_height\":420,\"resized_width\":630,\"nframes\":2}]"# 圖片識別python3 qwen2_5_vl.py --vision_inputs="[{\"type\":\"image_url\",\"image_url\":{\"url\": \"../datasets/images/panda.jpg\"}, \"max_side\":420}]"# 同時python3 qwen2_5_vl.py --vision_inputs="[{\"type\":\"video_url\",\"video_url\":{\"url\": \"../datasets/videos/carvana_video.mp4\"},\"resized_height\":420,\"resized_width\":630,\"nframes\":2},{\"type\":\"image_url\",\"image_url\":{\"url\": \"../datasets/images/panda.jpg\"}, \"max_side\":840}]"# 純文本對話python3 qwen2_5_vl.py --vision_inputs=""