针对 Qwen3-Coder-Next 模型在 昇腾 910B 平台上的部署与适配需求,本文提供一套完整的部署参考流程。
Qwen3-Coder-Next 是阿里云通义千问团队发布的代码智能体模型,基于 Qwen3-Next-80B-A3B-Base 架构构建,专门针对 代码生成、软件工程任务以及智能体工具调用能力进行了优化。
该模型采用 混合注意力(Hybrid Attention)+ MoE(Mixture-of-Experts) 架构,并通过大量可验证的编程任务训练,使模型能够从真实执行环境的反馈中持续学习。
Hugging Face(官方源)
https://huggingface.co/Qwen/Qwen3-Coder-Next
ModelScope(国内加速源)
https://modelers.cn/models/Qwen-AI/Qwen3-Coder-Next
HF-Mirror(国内镜像)
https://hf-mirror.com/Qwen/Qwen3-Coder-Next
部署前置条件:
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| Python | 3.11.14 查询命令: python -V | - |
| torch | 2.9.0+cpu 查询命令: pip list | grep torch | - |
| torch_npu | 2.9.0 查询命令: pip list | grep torch | - |
| triton_ascend | 3.2.0 查询命令: pip list | grep triton | - |
| vLLM Ascend | v0.17.0rc1 查询方法: docker images | https://quay.io/repository/ascend/vllm-ascend |
下载镜像:
docker pull quay.io/ascend/vllm-ascend:v0.17.0rc1注意:
vllm-ascend:v0.14.0rc1 版本部署 Qwen3-Coder-Next 在调用 function calling 的时候会因为格式问题报错,在
vllm-ascend:v0.17.0rc1 版本增加了 --tool-call-parser qwen3_coder 参数解决了此问题。
下载完成 vLLM Ascend 镜像后,将镜像上传到昇腾服务器并加载:
docker load -i xxx.tar将 Qwen3-Coder-Next 模型权重上传到服务器,并解压至指定目录,例如:
/data/nvme01/llm_models目录结构示例:
/data/nvme01/llm_models
└── Qwen3-Coder-Next
├── config.json
├── tokenizer.json
├── model.safetensors
└── ...通过脚本 start_Qwen3-Coder-Next.sh 启动 vLLM Ascend 容器,并在容器内调用 run.sh 启动模型服务。
export IMAGE=quay.io/ascend/vllm-ascend:v0.17.0rc1
export SERVED_MODEL_NAME=Qwen3-Coder-Next
docker run --rm \
--name $SERVED_MODEL_NAME \
--shm-size=256g \
--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/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
-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 /data/nvme01/llm_models:/opt/models \
-v /data/nvme01/start_bin/$SERVED_MODEL_NAME/run.sh:/opt/run.sh \
-p 8002:8000 \
-it $IMAGE bash /opt/run.sh--device /dev/davinciX用于将昇腾 NPU 设备映射到容器中,使容器内部程序能够访问 NPU 进行计算。
设备编号说明:
davinci0 ~ davinci7分别对应服务器中的 0~7号昇腾卡。
-v /data/nvme01/llm_models:/opt/models用于将宿主机的模型目录映射到容器中。
| 宿主机路径 | 容器路径 |
|---|---|
| /data/nvme01/llm_models | /opt/models |
-v /data/nvme01/start_bin/$SERVED_MODEL_NAME/run.sh:/opt/run.sh用于让容器调用宿主机中的 run.sh 启动脚本。
-p 8002:8000含义:
| 主机端口 | 容器端口 |
|---|---|
| 8002 | 8000 |
用户通过 服务器 8002 端口访问模型服务。
export VLLM_USE_V1=1
export SERVED_MODEL_NAME=Qwen3-Coder-Next
export LOCAL_CKPT_DIR=/opt/models/$SERVED_MODEL_NAME
export HOST=0.0.0.0
export PORT=8000
export TP=4
vllm serve $LOCAL_CKPT_DIR \
--served-model-name $SERVED_MODEL_NAME \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--tensor-parallel-size $TP \
--trust-remote-code \
--host $HOST \
--port $PORT \
--max-num-seqs 16 \
--max-model-len 150000 \
--dtype bfloat16 \
--distributed-executor-backend mp \
--gpu-memory-utilization 0.8 \
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'| 参数 | 说明 |
|---|---|
VLLM_USE_V1=1 | 启用 vLLM V1 推理引擎 |
--tensor-parallel-size | Tensor Parallel 并行卡数 |
--max-num-seqs | 最大并发请求数 |
--max-model-len | 最大上下文长度 |
--dtype | 使用 bfloat16 精度 |
--distributed-executor-backend mp | 使用多进程并行执行 |
--gpu-memory-utilization | NPU显存使用比例 |
--enable-auto-tool-choice | 启用自动工具选择机制 |
--tool-call-parser qwen3_coder | 指定用于解析工具调用输出的专用解析器 |
docker exec -i Qwen3-Coder-Next bash说明:
Qwen3-Coder-Next 为容器名称docker ps 查询 Container ID 登录。使用以下 curl 命令验证模型服务是否正常:
curl http://172.19.57.3:8002/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-Coder-Next",
"messages": [
{"role": "user", "content": "使用python写一个快排序"}
],
"temperature": 0.6,
"top_p": 0.95,
"top_k": 20,
"max_completion_tokens": 8000
}'模型会返回标准 OpenAI ChatCompletion 格式:
{
"id": "chatcmpl-xxxx",
"object": "chat.completion",
"model": "Qwen3-Coder-Next",
"choices": [
{
"message": {
"role": "assistant",
"content": "..."
}
}
]
}1️⃣ model
"model": "Qwen3-Coder-Next"必须与 run.sh 中
--served-model-name指定的名称完全一致。
