基于vllm-ascend的华为atlas大模型部署
vllm-ascend介绍:
vLLM 昇腾插件 (vllm-ascend) 是一个让vLLM在Ascend NPU无缝运行的后端插件。
此插件是 vLLM 社区中支持昇腾后端的推荐方式。它遵循[RFC]: Hardware pluggable所述原则:通过解耦的方式提供了vLLM对Ascend NPU的支持。
使用 vLLM 昇腾插件,可以让类Transformer、混合专家(MOE)、嵌入、多模态等流行的大语言模型在 Ascend NPU 上无缝运行。
支持的NPU系列:
- Atlas A2 Training series (Atlas 800T A2, Atlas 900 A2 PoD, Atlas 200T A2 Box16, Atlas 300T A2)
- Atlas 800I A2 Inference series (Atlas 800I A2)
部署:
1、拉取镜像,
docker pull vllm-ascend-dev-image:latest
启动容器,
docker run -itd \
--name vllm-tool \
--device /dev/davinci2 \
--device /dev/davinci5 \
--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 \
-v /data:/data \
-p 8000:8000 \
-e VLLM_USE_MODELSCOPE=True \
-e PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256 \
quay.io/ascend/vllm-ascend:v0.8.5rc1 bash
其中,/dev/davinci2根据自己的显卡设置,比如我的是/dev/davinci2、/dev/davinci5
模型文件存储在/data/models/目录下,所以挂载了data目录。
2、利用vllm进行部署模型:
进入容器,
docker exec -it vllm-tool /bin/bash
利用vllm进行部署,
vllm serve /data/models/Qwen3-0.6B --trust-remote-code --tensor-parallel-size 1 --dtype half
或者,gpu-memory-utilization取值0-1之间,默认取值0.9,之所以增加gpu-memory-utilization参数,是因为DeepSeek 的"max_position_embeddings": 131072,远远大于qwen3的"max_position_embeddings": 40960。
vllm serve /data/models/DeepSeek-R1-Distill-Qwen-7B --trust-remote-code --tensor-parallel-size 2 --dtype half --gpu-memory-utilization 0.99
--tensor-parallel-size
张量并行通过将单个张量的计算分割成更小的块,分配到多个 GPU上。这样可以提高计算的吞吐量,特别是当单个张量的数据量很大时,张量并行可以让多个 GPU 协同完成一个操作。
解释:比如跑Qwen3-8B 模型,--tensor-parallel-size=2 表示将一个层中的计算任务分成2份,在2个 GPU 之间并行执行。例如,假设模型的线性层需要矩阵乘法操作,张量并行会将这个矩阵分割到2个 GPU 上并行计算,最终合并结果。
适用场景:张量并行适用于那些计算量大的层(如注意力层和前馈层),它能帮助缓存。
出现以下信息即可:
3、利用curl请求进行对话(在宿主机):
查看模型列表:
curl http://localhost:8000/v1/models | python3 -m json.tool
请求服务,
curl http://172.17.1.1:8000/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "/data/models/Qwen2.5-7B-Instruct","messages": [{"role": "user", "content": "你好,请介绍一下你自己"}],"temperature": 0.7,"max_tokens": 512}'
实测效果:
模型 | 显存占用 |
Qwen3-0.6B | 25G |
Qwen3-1.7B | 24G |
Qwen3-4B | 21G |
Qwen3-8B | 用了2张卡,1张卡23G,,一共46G |
DeepSeek-R1-Distill-Qwen-7B | 用了2张卡,1张卡16G,,一共32G |
Qwen2.5-7B-Instruct | 用了2张卡,1张卡24G,,一共48G |
华为atlas比英伟达的显存占用高出很多。
参考链接:
Quickstart — vllm-ascend
vllm-ascend: vllm_ascend
欢迎来到 vLLM! | vLLM 中文站