Qwen3.5-Dense (Qwen3.5-2B/4B/9B)#
1 引言#
Qwen3.5-2B、Qwen3.5-4B 和 Qwen3.5-9B 是 Qwen3.5 系列中的密集混合 Mamba-Transformer 语言模型。它们共享相同的混合注意力设计(GDN + 全注意力),适用于对话、内容创作和代码生成等通用文本生成任务。
本文档描述了在 Atlas 300I DUO 和 Atlas 200I Pro 上部署和验证这些模型的过程,包括环境准备、Docker 安装、单节点在线部署、功能验证和调优说明。
强烈建议使用 vllm-ascend 的最新候选版本(rc)或最新正式版本。从 vllm-ascend:v0.23.0rc1 开始支持在 Atlas 300I DUO 和 Atlas 200I Pro 上运行 Qwen3.5-2B/4B/9B。
2 支持的特性#
请参考支持特性列表了解模型支持矩阵。
请参考特性指南了解特性配置信息。
3 前提条件#
3.1 模型权重#
模型 |
版本 |
硬件要求 |
下载 |
|---|---|---|---|
Qwen3.5-2B |
FP16 |
Atlas 300I DUO 或 Atlas 200I Pro |
|
Qwen3.5-4B |
FP16 |
Atlas 300I DUO 或 Atlas 200I Pro |
|
Qwen3.5-9B |
FP16 |
Atlas 300I DUO 或 Atlas 200I Pro |
建议将模型权重下载到本地目录,例如 /root/.cache/ 或 /home/data/。
4 安装#
4.1 Docker 镜像安装#
根据您的机器类型选择镜像,并在节点上启动 docker 镜像,请参考使用 docker。
建议使用最新候选版本(rc)或最新正式版本的 vllm-ascend 镜像。作为最低版本要求,请使用 vllm-ascend:v0.23.0-310p(或更新的 -310p 镜像)。对于 openEuler 上的 Atlas 200I Pro,请使用对应的 -310p-openeuler 镜像。
在每个节点上启动docker镜像。
export IMAGE=m.daocloud.io/quay.io/ascend/vllm-ascend:v0.23.0-310p
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--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 8080:8080 \
-it $IMAGE bash
在每个节点上启动docker镜像。根据您要使用的NPU ID调整--device=/dev/davinci0。
export IMAGE=quay.io/ascend/vllm-ascend:v0.23.0-310p
docker run --rm \
--privileged \
--name vllm-ascend \
--shm-size=10g \
--device=/dev/davinci0:/dev/davinci0 \
--device=/dev/davinci_manager \
--device=/dev/ascend_manager \
--device=/dev/user_config \
-v /etc/sys_version.conf:/etc/sys_version.conf \
-v /etc/ld.so.conf.d/mind_so.conf:/etc/ld.so.conf.d/mind_so.conf \
-v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg \
-v /var/dmp_daemon:/var/dmp_daemon \
-v /usr/lib64/libmmpa.so:/usr/lib64/libmmpa.so \
-v /usr/lib64/libcrypto.so.1.1:/usr/lib64/libcrypto.so.1.1 \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/lib64/libstackcore.so:/usr/lib64/libstackcore.so \
-v /usr/lib/aarch64-linux-gnu/libyaml-0.so.2:/usr/lib64/libyaml-0.so.2 \
-v /etc/slog.conf:/etc/slog.conf \
-v /var/slogd:/var/slogd \
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
-v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so \
-v /root/.cache:/root/.cache \
-p 8080:8080 \
-it $IMAGE bash
export IMAGE=quay.io/ascend/vllm-ascend:v0.23.0-310p-openeuler
docker run --rm \
--privileged \
--name vllm-ascend \
--shm-size=10g \
--device=/dev/davinci0:/dev/davinci0 \
--device=/dev/davinci_manager \
--device=/dev/ascend_manager \
--device=/dev/user_config \
-v /etc/sys_version.conf:/etc/sys_version.conf \
-v /etc/ld.so.conf.d/mind_so.conf:/etc/ld.so.conf.d/mind_so.conf \
-v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg \
-v /var/dmp_daemon:/var/dmp_daemon \
-v /usr/lib64/libsemanage.so.2:/usr/lib64/libsemanage.so.2 \
-v /usr/lib64/libmmpa.so:/usr/lib64/libmmpa.so \
-v /usr/lib64/libcrypto.so.1.1:/usr/lib64/libcrypto.so.1.1 \
-v /usr/lib64/libyaml-0.so.2.0.9:/usr/lib64/libyaml-0.so.2 \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/lib64/libstackcore.so:/usr/lib64/libstackcore.so \
-v /etc/slog.conf:/etc/slog.conf \
-v /var/slogd:/var/slogd \
-v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 \
-v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so \
-v /root/.cache:/root/.cache \
-p 8080:8080 \
-it $IMAGE bash
Docker 运行成功后,可以通过执行 docker ps 命令来验证正在运行的容器服务。预期结果是容器 vllm-ascend 被列出且状态为 Up,确认 Docker 安装成功。
4.2 源码安装#
如果您不想使用上述 Docker 镜像,也可以从源码构建所有内容:
克隆仓库并从源码安装
vllm-ascend:git clone https://github.com/vllm-project/vllm-ascend.git cd vllm-ascend pip install -e .
完整的安装步骤,请参考安装。
备注
在 Atlas 300I DUO 和 Atlas 200I Pro 上,您可能需要卸载
triton-ascend和triton以避免依赖冲突:pip uninstall -y triton-ascend triton
要验证源码安装,请运行以下命令并确认显示的版本与您安装的版本一致:
pip show vllm-ascend
预期结果:显示 vllm-ascend 的版本信息,确认安装成功。
5 在线服务部署#
5.1 单节点在线部署#
单节点部署在同一节点内完成 Prefill 和 Decode。Qwen3.5-2B、Qwen3.5-4B 和 Qwen3.5-9B 可以部署在 Atlas 300I DUO 或 Atlas 200I Pro 上。
并行说明:这些平台目前支持 TP 场景。根据可用设备选择 TP=1 或 TP=2。在单个可见 NPU 的 Atlas 200I Pro 上,使用 TP=1。
以下示例使用 ModelScope 的 FP16 权重。如果需要,请将 MODEL_PATH 替换为您的本地目录。
启动命令:
#!/bin/sh
# Load model from ModelScope to speed up download
export VLLM_USE_MODELSCOPE=True
# Model weight path; can be a ModelScope model id or a local directory path
export MODEL_PATH=Qwen/Qwen3.5-2B
vllm serve $MODEL_PATH \
--host 127.0.0.1 \
--port 1025 \
--tensor-parallel-size 1 \
--served-model-name qwen3.5 \
--max-num-seqs 32 \
--max-model-len 16384 \
--trust-remote-code \
--gpu-memory-utilization 0.90 \
--mamba-ssm-cache-dtype float16 \
--dtype float16 \
--speculative-config '{"method": "qwen3_5_mtp","num_speculative_tokens":1}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [2,4,8,16]}' \
--additional-config '{"ascend_compilation_config": {"enable_npugraph_ex": false}}'
启动命令:
#!/bin/sh
# Load model from ModelScope to speed up download
export VLLM_USE_MODELSCOPE=True
# Model weight path; can be a ModelScope model id or a local directory path
export MODEL_PATH=Qwen/Qwen3.5-4B
vllm serve $MODEL_PATH \
--host 127.0.0.1 \
--port 1025 \
--tensor-parallel-size 1 \
--served-model-name qwen3.5 \
--max-num-seqs 32 \
--max-model-len 16384 \
--trust-remote-code \
--gpu-memory-utilization 0.90 \
--mamba-ssm-cache-dtype float16 \
--dtype float16 \
--speculative-config '{"method": "qwen3_5_mtp","num_speculative_tokens":1}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [2,4,8,16]}' \
--additional-config '{"ascend_compilation_config": {"enable_npugraph_ex": false}}'
启动命令:
#!/bin/sh
# Load model from ModelScope to speed up download
export VLLM_USE_MODELSCOPE=True
# Model weight path; can be a ModelScope model id or a local directory path
export MODEL_PATH=Qwen/Qwen3.5-9B
vllm serve $MODEL_PATH \
--host 127.0.0.1 \
--port 1025 \
--tensor-parallel-size 1 \
--served-model-name qwen3.5 \
--max-num-seqs 32 \
--max-model-len 16384 \
--trust-remote-code \
--gpu-memory-utilization 0.90 \
--mamba-ssm-cache-dtype float16 \
--dtype float16 \
--speculative-config '{"method": "qwen3_5_mtp","num_speculative_tokens":1}' \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY", "cudagraph_capture_sizes": [2,4,8,16]}' \
--additional-config '{"ascend_compilation_config": {"enable_npugraph_ex": false}}'
关键参数说明:
--tensor-parallel-size设置张量并行大小。在 Atlas 200I Pro 上优先使用 TP=1。在 Atlas 300I DUO 上,TP=1 和 TP=2 均受支持;请根据可用设备进行选择。--max-model-len表示上下文长度(单个请求的输入加输出)。在 Atlas 300I DUO 和 Atlas 200I Pro 上,请根据实际设备内存配置该值;设置过高可能导致 OOM。--max-num-seqs表示可以并发处理的最大请求数。在 Atlas 300I DUO 和 Atlas 200I Pro 上,请根据实际设备内存配置该值;设置过高可能导致 OOM。--gpu-memory-utilization表示 vLLM 将用于实际推理的 HBM 比例。在 Atlas 300I DUO 和 Atlas 200I Pro 上,请根据实际设备内存配置该值;设置过高可能导致 OOM。默认值为0.9。在 Atlas 300I DUO 和 Atlas 200I Pro 上必须设置
--dtype float16。这些设备仅支持 FP16 数据类型。--mamba-ssm-cache-dtype设置 Mamba SSM 缓存的数据类型。在 Atlas 300I DUO 和 Atlas 200I Pro 上,仅支持float16。--speculative-config对包含MTP头的Qwen3.5 Dense模型使用qwen3_5_mtp。建议将num_speculative_tokens设置为1。--compilation-config包含与aclgraph图模式相关的配置:"cudagraph_mode":建议使用"FULL_DECODE_ONLY"。"cudagraph_capture_sizes":当启用张量并行(TP)时,硬件事件 ID 限制最多允许两个捕获大小(例如[1, 8])。启用 MTP 后,每个捕获大小按n * (num_speculative_tokens + 1)计算,其中n是未启用 MTP 时的捕获大小。例如,当num_speculative_tokens为1时,非 MTP 的大小[1,2,4,8]变为[2,4,8,16]。
需要使用包含
"ascend_compilation_config": {"enable_npugraph_ex": false}的--additional-config,因为这些平台不支持enable_npugraph_ex。
常见问题提示:如果遇到问题,请参考公共FAQ进行故障排除。
服务验证:
如果服务启动成功,将显示以下启动日志:
(APIServer pid=<pid>) INFO: Started server process [<pid>]
(APIServer pid=<pid>) INFO: Waiting for application startup.
(APIServer pid=<pid>) INFO: Application startup complete.
6 功能验证#
服务启动后,可以通过发送提示词来调用模型。支持两个API接口:completions和chat.completions。使用您配置的--served-model-name(例如qwen3.5)。如果您使用了--port 1025或-p 8080:8080,请相应调整URL。
Completions API:
curl http://127.0.0.1:1025/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5",
"prompt": "The future of AI is",
"max_completion_tokens": 50,
"temperature": 0
}'
Chat Completions API:
curl http://127.0.0.1:1025/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5",
"messages": [
{"role": "user", "content": "The future of AI is"}
],
"max_completion_tokens": 1024,
"temperature": 0.7,
"top_p": 0.95
}'
预期结果:服务返回HTTP 200 OK。JSON响应中包含带有生成文本的choices字段。
7 精度评估#
使用AISBench#
详情请参考使用AISBench。
执行后,您可以获得结果。以下是
Qwen3.5-2B、Qwen3.5-4B和Qwen3.5-9B在 Atlas 300I DUO 上的精度结果,仅供参考。
精度评估配置文件:
# Example configuration: benchmarks/ais_bench/benchmark/configs/models/vllm_api/vllm_api_general_chat.py
from ais_bench.benchmark.models import VLLMCustomAPIChat
from ais_bench.benchmark.utils.model_postprocessors import extract_non_reasoning_content
models = [
dict(
attr="service",
type=VLLMCustomAPIChat,
abbr="vllm-api-general-chat",
path="your_model_path",
model="qwen3.5",
request_rate=0,
retry=2,
host_ip="127.0.0.1",
host_port=1025,
max_out_len=4096,
batch_size=16,
trust_remote_code=False,
generation_kwargs=dict(
temperature=0.0,
ignore_eos=False,
chat_template_kwargs = {"enable_thinking": False},
),
pred_postprocessor=dict(type=extract_non_reasoning_content)
)
]
模型 |
数据集 |
版本 |
指标 |
模式 |
vllm-api-general-chat |
|---|---|---|---|---|---|
Qwen3.5-2B |
gsm8k |
- |
精度 |
生成 |
77.71 |
Qwen3.5-2B |
textvqa |
- |
精度 |
生成 |
76.09 |
Qwen3.5-4B |
gsm8k |
- |
精度 |
生成 |
93.18 |
Qwen3.5-4B |
textvqa |
- |
精度 |
生成 |
79.08 |
Qwen3.5-9B |
gsm8k |
- |
精度 |
生成 |
95.30 |
Qwen3.5-9B |
textvqa |
- |
精度 |
生成 |
82.33 |
8 性能评估#
使用AISBench#
详情请参考使用AISBench进行性能评估。
9 性能调优#
9.1推荐配置#
注意:以下配置仅供参考。最佳配置取决于模型大小、最大输入/输出长度和实际设备内存。
Atlas 300I DUO / Atlas 200I Pro:目前仅支持 TP 场景。在 Atlas 200I Pro 上优先使用 TP=1。在 Atlas 300I DUO 上,TP=1 和 TP=2 均受支持;请根据可用设备进行选择。请根据实际设备内存配置
--max-model-len、--max-num-seqs和--gpu-memory-utilization;设置过高可能导致 OOM。
9.2调优指南#
调优方法请参考公共性能调优文档。
详细功能描述请参考功能矩阵。
10 常见问题#
关于常见环境、安装和通用参数问题,请参考vLLM-Ascend公共FAQ。