Qwen3-Next#
简介#
Qwen3-Next 模型是一个具有高稀疏性的稀疏 MoE(专家混合)模型。与 Qwen3 的 MoE 架构相比,它在混合注意力机制和多令牌预测机制等方面引入了关键改进,提升了模型在长上下文和大总参数量规模下的训练和推理效率。
本文档将介绍该模型的核心验证步骤,包括支持的功能、环境准备以及精度和性能评估。Qwen3 Next 目前使用处于实验阶段的 Triton Ascend。在后续版本中,其与稳定性和精度相关的表现可能会发生变化,性能将持续优化。
Qwen3-Next 模型首次在 vllm-ascend:v0.10.2rc1 中得到支持。
支持的功能#
请参考支持的功能以获取模型支持的功能矩阵。
请参考特性指南以获取功能的配置信息。
权重准备#
Qwen3-Next-80B-A3B-Instruct 模型权重下载链接:下载模型权重
部署#
如果机器环境是 Atlas 800I A3(64G*16),部署方法保持不变。
运行 Docker 容器#
# Update the vllm-ascend image
# For Atlas A2 machines:
# export IMAGE=quay.io/ascend/vllm-ascend:v0.18.0
# For Atlas A3 machines:
export IMAGE=quay.io/ascend/vllm-ascend:v0.18.0-a3
docker run --rm \
--shm-size=1g \
--name vllm-ascend-qwen3 \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--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
Qwen3 Next 正在使用目前处于实验阶段的 Triton Ascend。在未来的版本中,可能会有与稳定性、精度和性能改进相关的行为变化。
推理#
运行以下脚本在多 NPU 上启动 vLLM 服务器:
vllm serve Qwen/Qwen3-Next-80B-A3B-Instruct --tensor-parallel-size 4 --max-model-len 32768 --gpu-memory-utilization 0.8 --max-num-batched-tokens 4096 --compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'
服务器启动后,您可以使用输入提示词查询模型。
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen3-Next-80B-A3B-Instruct",
"messages": [
{"role": "user", "content": "Who are you?"}
],
"temperature": 0.6,
"top_p": 0.95,
"top_k": 20,
"max_completion_tokens": 32
}'
运行以下脚本在多 NPU 上执行离线推理:
import gc
import torch
from vllm import LLM, SamplingParams
from vllm.distributed.parallel_state import (destroy_distributed_environment,
destroy_model_parallel)
def clean_up():
destroy_model_parallel()
destroy_distributed_environment()
gc.collect()
torch.npu.empty_cache()
if __name__ == '__main__':
prompts = [
"Who are you?",
]
sampling_params = SamplingParams(temperature=0.6, top_p=0.95, top_k=40, max_tokens=32)
llm = LLM(model="Qwen/Qwen3-Next-80B-A3B-Instruct",
tensor_parallel_size=4,
enforce_eager=True,
distributed_executor_backend="mp",
gpu_memory_utilization=0.7,
max_model_len=4096)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
del llm
clean_up()
如果成功运行此脚本,您将看到如下信息:
Prompt: 'Who are you?', Generated text: ' What do you know about me?\n\nHello! I am Qwen, a large-scale language model independently developed by the Tongyi Lab under Alibaba Group. I am'
精度评估#
使用 AISBench#
详情请参考使用 AISBench。
执行后,您可以获得结果,以下是
vllm-ascend:0.13.0rc1中Qwen3-Next-80B-A3B-Instruct的结果,仅供参考。
数据集 |
版本 |
指标 |
模式 |
vllm-api-general-chat |
|---|---|---|---|---|
gsm8k |
- |
准确率 |
生成 |
95.53 |
性能#
使用 AISBench#
详情请参考使用 AISBench 进行性能评估。
使用 vLLM Benchmark#
以运行 Qwen3-Next 的性能评估为例。
更多详情请参考 vllm benchmark。
vllm bench 有三个子命令:
latency:对单批请求的延迟进行基准测试。serve:对在线服务吞吐量进行基准测试。throughput:对离线推理吞吐量进行基准测试。
以 serve 为例。按如下方式运行代码。
export VLLM_USE_MODELSCOPE=True
vllm bench serve --model Qwen/Qwen3-Next-80B-A3B-Instruct --dataset-name random --random-input 200 --num-prompts 200 --request-rate 1 --save-result --result-dir ./
大约几分钟后,您将获得性能评估结果。
性能结果如下:
硬件:A3-752T,2 节点
部署:TP4 + 仅全解码
输入/输出:2k/2k
并发数:32
性能:580tps,TPOT 54ms