| 环境配置 | 配置说明 |
|---|---|
| 硬件配置 | Atlas 800T A2 910B2(64G) |
| 驱动版本 | 25.2.3 |
| CANN版本 | 8.3.RC2 |
| 推理框架 | vllm-ascend |
| 推理镜像 | quay.io/ascend/vllm-ascend:v0.11.0rc3 |
| 部署方式 | 单机4卡 |
参考示例如下(v0.11.0rc3 为镜像TAG,可以按需修改):
# 获取方式1:
docker pull quay.io/ascend/vllm-ascend:v0.11.0rc3
# 获取方式2:
docker pull m.daocloud.io/quay.io/ascend/vllm-ascend:v0.11.0rc3
# 获取方式3:
docker pull quay.nju.edu.cn/ascend/vllm-ascend:v0.11.0rc3
指定架构可以参考如下:
docker pull --platform arm64 quay.io/ascend/vllm-ascend:v0.11.0rc3| 配套 | 版本 |
|---|---|
| python | 3.11.13 |
| torch | 2.7.1 |
| torch_npu | 2.7.1 |
| vllm | 0.11.0 |
| vllm-ascend | 0.11.0rc3 |
可以从下面示例中任选一种下载权重
# 获取地址1:
https://huggingface.co/Qwen/Qwen2.5-72B-Instruct/tree/main
# 获取地址2:
https://modelscope.cn/models/Qwen/Qwen2.5-72B-Instruct
# 获取地址3:
https://modelers.cn/models/MindSDK/Qwen2.5-72B-Instruct
本文使用W8A8量化权重,量化工具为msModelSlim,官方参考文档:
安装指南请参考msModelSlim安装
关键操作如下:
# 1.git clone msmodelslim代码
git clone https://gitcode.com/Ascend/msit.git
# 2.进入到msit/msmodelslim的目录并运行安装脚本
cd msit/msmodelslim
bash install.shexport ASCEND_RT_VISIBLE_DEVICES=0,1,2,3
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
python3 quant_qwen.py --model_path {浮点权重路径} --save_directory {W8A8量化权重路径} --calib_file ../common/boolq.jsonl --w_bit 8 --a_bit 8 --device_type npu --trust_remote_code True
# 设置容器名称
export CONTAINER_NAME=Qwen2.5-72B-W8A8
# 选择镜像
export IMAGE=quay.io/ascend/vllm-ascend:v0.11.0rc3
# device 可按需挂载。示例为0-3卡
# 挂载目录需包含权重所在路径,如/root/.cache
docker run --rm \
--name $CONTAINER_NAME \
--shm-size=256g \
--net=host \
--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/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 /root/.cache:/root/.cache \
-it $IMAGE bash进入推理容器后,执行以下操作,启动推理服务
export VLLM_USE_MODELSCOPE=True
export PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256
export VLLM_USE_V1=1
export LD_PRELOAD=/usr/lib/"$(uname -i)"-linux-gnu/libjemalloc.so.2:$LD_PRELOAD
export TASK_QUEUE_ENABLE=1
export CPU_AFFINITY_CONF=1
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=10
export HCCL_OP_EXPANSION_MODE="AIV"
export VLLM_ASCEND_ENABLE_TOPK_OPTIMIZE=1
export VLLM_ASCEND_ENABLE_FLASHCOMM=1
export VLLM_ASCEND_ENABLE_DENSE_OPTIMIZE=1
export VLLM_ASCEND_ENABLE_PREFETCH_MLP=1
LOCAL_CKPT_DIR=/root/.cache/models/Qwen2.5-72B-Instruct-W8A8
vllm serve "$LOCAL_CKPT_DIR" \
--host 0.0.0.0 \
--port 8000 \
--dtype bfloat16 \
--tensor-parallel-size 4 \
--served-model-name Qwen2.5-72B-w8a8 \
--max-num-seqs 64 \
--max_model_len 98304 \
--rope-scaling '{"rope_type":"yarn","factor":3.0,"original_max_position_embeddings":32768}' \
--enable-auto-tool-choice \
--tool-call-parser hermes \
--gpu-memory-utilization 0.9 \
--quantization ascend \
--trust-remote-code \
--distributed_executor_backend "mp" \
--async-scheduling \
--compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}'说明:
1)rope-scaling:modelscope说明内容。
当前模型的 config.json 设置为上下文长度最高可达 32,768 tokens。为了处理超过 32,768 tokens 的大量输入,可以利用 YaRN,这是一种增强模型长度外推的技术,确保在长文本上的最佳性能。
目前,vLLM 仅支持静态 YARN,这意味着无论输入长度如何,缩放因子都保持不变,这可能会影响较短文本的性能。建议仅在需要处理长上下文时添加 rope_scaling 配置。
--rope-scaling '{"rope_type":"yarn","factor":3.0,"original_max_position_embeddings":32768}'2)需要使用function call功能,可添加如下配置
--enable-auto-tool-choice
--tool-call-parser hermescurl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen2.5-72B-W8A8",
"prompt": "你好,你是谁",
"max_tokens": 50,
"temperature": 0,
"stream": false
}'