AI

版本:25.03

vllm部署指南

高吞吐、低内存占用大语言模型(LLM)推理与服务引擎,支持CPU 计算加速,提供高效的算子下发机制,包括:

  • Schedule(调度):优化任务分发,提高并行计算效率
  • Prepare Input(准备数据):高效的数据预处理,加速输入构建
  • Ray 框架:利用分布式计算提升推理吞吐
  • Sample(模型后处理):优化采样策略,提升生成质量
  • 框架后处理:融合多种优化策略,提升整体推理性能

该引擎结合高效计算调度与优化策略,为 LLM 推理提供更快、更稳定、更可扩展的解决方案。

环境准备

服务器型号Atlas 800T/I A2 训练/推理服务器
操作系统openEuler 22.03 LTS及以上
NPU驱动版本Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run
固件版本Ascend-hdk-910b-firmware_7.5.0.1.129.run

安装驱动固件

  • 创建驱动运行用户HwHiAiUser(运行驱动进程的用户),安装驱动时无需指定运行用户,默认即为HwHiAiUser。
shell
groupadd -g 1000 HwHiAiUser
useradd -g HwHiAiUser -u 1000 -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
  • 将驱动包和固件包上传到服务器任意目录如“/home”。
  • 执行如下命令,增加驱动和固件包的可执行权限。
shell
chmod +x Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run
chmod +x Ascend-hdk-910b-firmware_7.5.0.1.129.run
  • 安装驱动
shell
./Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run --full --install-for-all

# 若执行上述安装命令出现类似如下回显信息
# [ERROR]The list of missing tools: lspci,ifconfig,
# 请执行yum install -y net-tools pciutils

# 若系统出现如下关键回显信息,则表示驱动安装成功。
# Driver package installed successfully!
  • 安装固件
shell
./Ascend-hdk-910b-firmware_7.5.0.1.129.run --full

# 若系统出现如下关键回显信息,表示固件安装成功。
# Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect
  • 执行reboot命令重启系统。
  • 执行npu-smi info查看驱动加载是否成功。

容器部署场景

部署Ascend-Docker(容器引擎插件)

  • 参考版本:"Ascend-docker-runtime_6.0.RC3.1_linux-aarch64.run"
shell
# 将软件包”Ascend-docker-runtime_6.0.RC3.1_linux-aarch64.run”上传到服务器任意目录(如“/home”)。
chmod +x Ascend-docker-runtime_6.0.RC3.1_linux-aarch64.run
shell
./Ascend-docker-runtime_6.0.RC3.1_linux-aarch64.run --install
# 安装完成后,若显示类似如下信息,则说明软件安装成功:
xxx install success
  • 执行systemctl restart docker命令重启docker,使容器引擎插件在docker配置文件中添加的内容生效。

容器场景vllm搭建

shell
docker pull hub.oepkgs.net/neocopilot/vllm@sha256:c72a0533b8f34ebd4d352ddac3a969d57638c3d0c9c4af9b78c88400c6edff7a

# /home路径不要全部映射,防止覆盖/home/HwHiAiUser
docker run -itd \
    -p 1111:22 \
    --name vllm_oe \
    --shm-size 16G \
    --device /dev/davinci0 \
    --device /dev/davinci1 \
    --device /dev/davinci2 \
    --device /dev/davinci3 \
    --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/bin/npu-smi:/usr/local/bin/npu-smi \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
    -w /home \
    hub.oepkgs.net/neocopilot/vllm:0.6.6-aarch64-910B-oe2203-sp3 bash
    
# 启动vllm,模型自行下载
vllm serve /home/models/DeepSeek-R1-Distill-Llama-70B --distributed-executor-backend ray --tensor-parallel-size 8 --block-size 32 --preemption_mode swap

物理机部署场景

cann安装

Ascend-cann-toolkitAscend-cann-toolkit_8.0.RC3_linux-aarch64.run
Ascend-cann-kernelsAscend-cann-kernels-910b_8.0.RC3_linux-aarch64.run
shell
# 安装第三方依赖
yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel gcc-gfortran
# 可执行如下命令检查系统是否安装满足要求的Python开发环境(要求python3.7.5~3.7.11、python3.8.0~3.8.11、python3.9.0~3.9.7和python3.10.0~3.10.12)。
python3 --version
pip3 --version
# 安装相关依赖
pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py wheel typing_extensions

chmod +x Ascend-cann-toolkit_8.0.RC3_linux-aarch64.run
chmod +x Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64.run

# 安装toolkit
./Ascend-cann-toolkit_8.0.RC3_linux-aarch64.run --install --install-for-all --quiet
# 等待回显xxx install success

vi ~/.bashrc 
# 文件最后一行加入
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# wq!退出
source ~/.bashrc

# 安装二进制算子包
./Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64.run --install --install-for-all --quiet
# 等待回显xxx install success

物理机场景vllm搭建

shell
# 拉取代码
https://gitee.com/qmzznbxhl/sysHAX_oe
cd sysHAX_oe
git checkout npu_support

# 安装第三方依赖
yum install gcc make
VLLM_TARGET_DEVICE=npu pip install -e .
# 等待安装完成
pip install ray

# 启动vllm,模型自行下载
vllm serve /home/models/DeepSeek-R1-Distill-Llama-70B --distributed-executor-backend ray --tensor-parallel-size 8 --block-size 32 --preemption_mode swap