基于vllm-ascend的华为atlas大模型部署

发布于:2025-05-15 ⋅ 阅读:(18) ⋅ 点赞:(0)

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 中文站