Ascend-SACT/Qwen2.5-VL-7B-Instruct-w8a8
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Qwen2.5-VL-7B-Instruct-w8a8模型部署指导

第一章 模型简介

Qwen2.5-VL是阿里通义千问于2025年1月28日开源的视觉语言模型,属于Qwen模型家族的旗舰产品。

该模型推出了3B、7B和72B三个尺寸版本,其中72B版本在13项权威评测中视觉理解能力全面超越GPT-4o与Claude3.5 。Qwen2.5-VL具备多模态理解能力,能够精准解析图像中的物体、文本、图表等元素,并支持超过1小时的长视频内容理解及事件定位 。此外,该模型无需微调即可作为视觉智能体操控设备,执行多步骤复杂任务 。其结构化输出功能适用于金融、商业等领域的数据处理。Qwen2.5-VL-7B-Instruct在多个任务中表现优于GPT-4o-mini,而3B版本作为端侧模型超越此前7B版本性能 。截至2025年1月,Qwen2.5-VL-72B-Instruct在13项权威评测中夺得视觉理解冠军,全面超越GPT-4o与Claude3.5 。

与Qwen2-VL相比,Qwen2.5-VL增强了时间和空间尺度感知能力,简化网络结构以提升效率 。阿里通义千问计划进一步提升模型的问题解决与推理能力,整合更多模态,打造处理多种输入的综合全能模型 。

第二章 运行环境

硬件设备

设备型号NPU配置
Atlas 800I A28*64G
Atlas 800T A28*64G

软件版本配置表

软件配套版本
python3.11
torch2.8.0
torch_npu2.8.0
transformers4.57.3
vllm_ascendv0.13.0rc1
CANN8.3.rc2
HDK25.2.3

第三章 镜像准备

  • 镜像拉取:
docker pull quay.io/ascend/vllm-ascend:v0.13.0rc1
  • 资源需要:910B单卡即可
  • 容器运行:
docker run -itd --name qwen2.5-vl-7b \
--net=host \
--privileged=true \
--shm-size=1g \
--device=/dev/davinci0 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/log/npu/:/usr/slog \
-v /models:/models \
-v /etc/hccn.conf:/etc/hccn.conf \
-p 8000:8000 \
镜像ID /bin/bash
  • 进入容器:
docker exec -it qwen2.5-vl-7b bash

第四章 模型权重下载

  • 量化权重地址
https://modelscope.cn/models/Eco-Tech/Qwen2.5-VL-7B-Instruct-w8a8/files
  • 原始权重地址
https://modelscope.cn/models/Qwen/Qwen2.5-VL-7B-Instruct/files
  • 下载模型权重
pip install modelscope
modelscope download --model Eco-Tech/Qwen2.5-VL-7B-Instruct-w8a8 --local_dir ./Qwen2.5-VL-7B-Instruct-w8a8

第五章 推理框架准备

安装必备python依赖

pip install qwen_vl_utils triton

第六章 模型脚本验证

如需使用脚本验证,需安装python依赖包

pip install accelerate

使用python脚本验证模型【如果使用量化模型,需要添加quantization="ascend"参数】

from transformers import AutoProcessor
from vllm import LLM, SamplingParams
from qwen_vl_utils import process_vision_info

MODEL_PATH = "Qwen2.5-VL-7B-Instruct-w8a8"

llm = LLM(
    model=MODEL_PATH,
    max_model_len=16384,
    limit_mm_per_prompt={"image": 10},
    quantization="ascend"
)

sampling_params = SamplingParams(max_tokens=512)

image_messages = [
    {"role": "system", "content": "你是一个智能助手."},
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "https://modelscope.oss-cn-beijing.aliyuncs.com/resource/qwen.png",
                "min_pixels": 224 * 224,
                "max_pixels": 1280 * 28 * 28,
            },
            {"type": "text", "text": "请描述一下这张图片的内容"},
        ],
    },
]

messages = image_messages

processor = AutoProcessor.from_pretrained(MODEL_PATH)
prompt = processor.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

image_inputs, _, _ = process_vision_info(messages, return_video_kwargs=True)

mm_data = {}
if image_inputs is not None:
    mm_data["image"] = image_inputs

llm_inputs = {
    "prompt": prompt,
    "multi_modal_data": mm_data,
}

outputs = llm.generate([llm_inputs], sampling_params=sampling_params)
generated_text = outputs[0].outputs[0].text

print(generated_text)

第七章 服务化部署

使用vllm-ascend部署模型服务化【如果使用量化模型,需要添加--quantization ascend参数】

export PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256
vllm serve Qwen2.5-VL-7B-Instruct-w8a8 --quantization ascend

验证服务化部署

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
    "model": "Qwen2.5-VL-7B-Instruct-w8a8",
    "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": [
        {"type": "image_url", "image_url": {"url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"}},
        {"type": "text", "text": "请描述一下这张图片"}
    ]}
    ]
    }'