Qwen-VL-Dense(Qwen3-VL-2B/4B/8B/32B)¶
1 简介¶
阿里云推出的Qwen-VL(视觉-语言)系列包含一系列强大的大型视觉语言模型(LVLM),专为全面的多模态理解而设计。它们接受图像、文本和边界框作为输入,并输出文本和检测框,从而实现图像检测、多模态对话和多图像推理等高级功能。
本文档将展示该模型的主要验证步骤,包括支持的特性、特性配置、环境准备、NPU部署、精度和性能评估。
本教程使用 vLLM-Ascend v0.11.0rc3-a3 版本进行演示,以 Qwen3-VL-8B-Instruct 模型为例,展示单NPU和多NPU部署。
2 支持的特性¶
请参考支持的特性列表获取模型支持的特性矩阵。
请参考特性指南获取特性的配置。
3 前提条件¶
3.1 模型权重¶
需要1个Atlas 800I A2(64G × 8)节点中的1张卡或1个Atlas 800 A3(64G × 16)节点中的1张卡:
需要1个Atlas 800I A2(64G × 8)节点中的2张卡或1个Atlas 800 A3(64G × 16)节点中的2张卡:
Qwen3-VL-32B-Instruct:下载模型权重
建议将模型权重下载到多节点的共享目录,例如 /root/.cache/。
4 安装¶
4.1 Docker镜像安装¶
根据您的机器类型选择镜像,并在节点上启动docker镜像,请参考使用docker。
A3系列:
在每个节点上启动docker镜像。
# Update the vllm-ascend image
export IMAGE=quay.io/ascend/vllm-ascend:v0.22.1rc1
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-p 8000:8000 \
-it $IMAGE bash
安装验证:
启动容器后,运行以下命令验证安装:
预期结果:容器被列出,状态为 Up。您还可以在容器内验证 vllm-ascend 版本:
预期结果:显示版本信息,与拉取的镜像版本匹配。
4.2 源码安装¶
如果您不想使用Docker镜像,可以从源码构建。首先从源码安装vLLM:
- 克隆并安装vLLM:
- 克隆并安装vLLM-Ascend仓库:
安装验证:
预期结果:显示两个包的版本信息,确认安装成功。
Note
如果部署多节点环境,请在每个节点上设置环境。
更多详情,请参考安装指南。
5 在线服务部署¶
5.1 单节点在线部署¶
运行docker容器以在单NPU上启动vLLM服务器:
vllm serve Qwen/Qwen3-VL-8B-Instruct \
--dtype bfloat16 \
--max_model_len 16384 \
--max-num-batched-tokens 16384
关键参数说明:
- 添加
--max_model_len选项以避免ValueError,即Qwen3-VL-8B-Instruct模型的最大序列长度(256000)大于KV缓存中可存储的最大token数。此值因不同NPU系列的片上内存大小而异。请根据您的NPU系列修改为合适的值。
如果您的服务启动成功,您将看到如下信息:
INFO: Started server process [2736]
INFO: Waiting for application startup.
INFO: Application startup complete.
6 功能验证¶
服务器启动后,您可以使用输入提示查询模型:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-VL-8B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "https://modelscope.oss-cn-beijing.aliyuncs.com/resource/qwen.png"}},
{"type": "text", "text": "What is the text in the illustration?"}
]}
]
}'
预期结果:
服务返回HTTP 200 OK。
{"id":"chatcmpl-d3270d4a16cb4b98936f71ee3016451f","object":"chat.completion","created":1764924127,"model":"Qwen/Qwen3-VL-8B-Instruct","choices":[{"index":0,"message":{"role":"assistant","content":"The text in the illustration is: **TONGYI Qwen**","refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null,"token_ids":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":107,"total_tokens":123,"completion_tokens":16,"prompt_tokens_details":null},"prompt_logprobs":null,"prompt_token_ids":null,"kv_transfer_params":null}
7 精度评估¶
使用语言模型评估工具¶
部分模型的精度已在我们的CI监控范围内,包括:
Qwen3-VL-8B-Instruct
以 mmmu_val 数据集作为测试数据集为例,在离线模式下运行 Qwen3-VL-8B-Instruct 的精度评估。
-
请参考使用lm_eval了解
lm_eval安装的更多详情。 -
运行
lm_eval执行精度评估。 -
执行后,您将获得结果,以下是
Qwen3-VL-8B-Instruct在vllm-ascend:0.11.0rc3中的结果,仅供参考。任务 值 标准错误输出 mmmu_val 0.5389 0.0159
8 性能评估¶
使用vLLM基准测试¶
更多详情请参考vLLM基准测试。
有三个 vllm bench 子命令:
latency:基准测试单批次请求的延迟。serve:基准测试在线服务吞吐量。throughput:基准测试离线推理吞吐量。
性能评估必须以在线模式进行。以 serve 为例,运行代码如下。
vllm bench serve --model Qwen/Qwen3-VL-8B-Instruct --dataset-name random --random-input 200 --num-prompts 200 --request-rate 1 --save-result --result-dir ./
大约几分钟后,您将获得性能评估结果。
9 性能调优¶
9.1 推荐配置¶
注意:以下配置在特定测试环境中验证,仅供参考。最佳配置取决于最大输入/输出长度、前缀缓存命中率、精度要求和部署机器比例等因素。建议参考第9.2节根据实际情况进行调优。
表1:场景概览¶
| 场景 | 部署模式 | *NPU总数 | 权重版本 | 关键考量 |
|---|---|---|---|---|
| 高吞吐量 (16K上下文) |
单节点混合 | 1(A3) | Qwen3-VL-8B-Instruct | 对高分辨率文本输入使用tp2 |
| 长上下文 (128K,无前缀缓存) |
单节点混合 | 1(A3) | Qwen3-VL-8B-Instruct | 对高分辨率文本输入使用tp2 |
| 长上下文 (128K,有前缀缓存) |
单节点混合 | 1(A3) | Qwen3-VL-8B-Instruct | 对高分辨率文本输入使用tp2 |
| 多模态 (1080P) |
单节点混合 | 1(A3) | Qwen3-VL-8B-Instruct | 对高分辨率视觉输入使用tp2 |
*Total NPUs表示所有节点使用的NPU总数。1个节点 = 1台Atlas 800 A3服务器(64G × 16 NPU)。
表2:详细节点配置¶
| 场景 | 配置 | NPU数 | TP | DP | 最大模型长度 | MTP推测数 | 权重版本 |
|---|---|---|---|---|---|---|---|
| High Throughput / Low Latency (16K) | Server / Single Machine | 1 | 1 | 1 | ~16K | 3 | Qwen3-VL-8B-Instruct |
| Long Context (128K, no cache) | Server / Single Machine | 1 | 1 | 1 | 128K | 3 | Qwen3-VL-8B-Instruct |
| Long Context (128K, with cache) | Server / Single Machine | 1 | 1 | 1 | 128K | 3 | Qwen3-VL-8B-Instruct |
| Multimodal (1080P) | Server / Single Machine | 1 | 1 | 1 | ~16K | 3 | Qwen3-VL-8B-Instruct |
完整的启动命令和参数说明请参考第5章中的部署示例。
注意:
max-model-len 和 max-num-seqs 需要根据实际使用场景设置。其他设置请参考 部署 章节。
9.2 调优指南¶
9.2.1 通用调优参考¶
调优方法请参考公共性能调优文档。
详细功能描述请参考功能指南。
10 常见问题解答¶
关于常见环境、安装和通用参数问题,请参考公共FAQ。