Ascend-SACT/Qwen3-Coder-Next
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Qwen3-Coder-Next 在昇腾910B上迁移部署指导

一、背景与模型介绍

背景

针对 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


二、准备运行环境

部署前置条件:

  • 系统驱动已正确安装
  • 昇腾 NPU 卡可被系统识别
  • 容器镜像中已包含可用版本的 CANN 与 Python

AI框架及版本

配套版本环境准备指导
Python3.11.14
查询命令:python -V
-
torch2.9.0+cpu
查询命令:pip list | grep torch
-
torch_npu2.9.0
查询命令:pip list | grep torch
-
triton_ascend3.2.0
查询命令:pip list | grep triton
-
vLLM Ascendv0.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 参数解决了此问题。


三、模型部署

1. 上传镜像

下载完成 vLLM Ascend 镜像后,将镜像上传到昇腾服务器并加载:

docker load -i xxx.tar

2. 上传模型权重

将 Qwen3-Coder-Next 模型权重上传到服务器,并解压至指定目录,例如:

/data/nvme01/llm_models

目录结构示例:

/data/nvme01/llm_models
 └── Qwen3-Coder-Next
      ├── config.json
      ├── tokenizer.json
      ├── model.safetensors
      └── ...

3. 启动容器并加载模型

通过脚本 start_Qwen3-Coder-Next.sh 启动 vLLM Ascend 容器,并在容器内调用 run.sh 启动模型服务。

start_Qwen3-Coder-Next.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

参数说明

1. --device /dev/davinciX

用于将昇腾 NPU 设备映射到容器中,使容器内部程序能够访问 NPU 进行计算。

设备编号说明:

davinci0 ~ davinci7

分别对应服务器中的 0~7号昇腾卡。


2. 模型目录挂载

-v /data/nvme01/llm_models:/opt/models

用于将宿主机的模型目录映射到容器中。

宿主机路径容器路径
/data/nvme01/llm_models/opt/models

3. 启动脚本挂载

-v /data/nvme01/start_bin/$SERVED_MODEL_NAME/run.sh:/opt/run.sh

用于让容器调用宿主机中的 run.sh 启动脚本。


4. 端口映射

-p 8002:8000

含义:

主机端口容器端口
80028000

用户通过 服务器 8002 端口访问模型服务。


4. 模型启动脚本 run.sh

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-sizeTensor Parallel 并行卡数
--max-num-seqs最大并发请求数
--max-model-len最大上下文长度
--dtype使用 bfloat16 精度
--distributed-executor-backend mp使用多进程并行执行
--gpu-memory-utilizationNPU显存使用比例
--enable-auto-tool-choice启用自动工具选择机制
--tool-call-parser qwen3_coder指定用于解析工具调用输出的专用解析器

5. (可选)进入容器

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

指定的名称完全一致。

五、压测结果

alt text