安装指南
本文档将介绍vLLM-MindSpore插件的版本配套,vLLM-MindSpore插件的安装步骤,与快速验证用例,用于验证安装是否成功。其中安装步骤分为两种安装方式:
版本配套
OS:Linux-aarch64
Python:3.9 / 3.10 / 3.11
软件版本配套
软件
配套版本与下载链接
CANN
MindSpore
MSAdapter
MindSpore Transformers
Golden Stick
vLLM
注:vLLM软件包使用vLLM 0.8.3分支,并加入数据并行功能。
docker安装
在本章节中,我们推荐用docker创建的方式,以快速部署vLLM-MindSpore插件环境,以下是部署docker的步骤介绍:
构建镜像
用户可执行以下命令,拉取vLLM-MindSpore插件代码仓库,并构建镜像:
git clone -b r0.3.0 https://gitee.com/mindspore/vllm-mindspore.git
bash build_image.sh
构建成功后,用户可以得到以下信息:
Successfully built e40bcbeae9fc
Successfully tagged vllm_ms_20250726:latest
其中,e40bcbeae9fc
为镜像id,vllm_ms_20250726:latest
为镜像名与tag。用户可执行以下命令,确认docker镜像创建成功:
docker images
新建容器
用户在完成构建镜像后,设置DOCKER_NAME
与IMAGE_NAME
以设置容器名与镜像名,并执行以下命令,以新建容器:
export DOCKER_NAME=vllm-mindspore-container # your container name
export IMAGE_NAME=vllm_ms_20250726:latest # your image name
docker run -itd --name=${DOCKER_NAME} --ipc=host --network=host --privileged=true \
--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/sbin/:/usr/local/sbin/ \
-v /var/log/npu/slog/:/var/log/npu/slog \
-v /var/log/npu/profiling/:/var/log/npu/profiling \
-v /var/log/npu/dump/:/var/log/npu/dump \
-v /var/log/npu/:/usr/slog \
-v /etc/hccn.conf:/etc/hccn.conf \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /etc/vnpu.cfg:/etc/vnpu.cfg \
--shm-size="250g" \
${IMAGE_NAME} \
bash
新建容器后成功后,将返回容器ID。用户可执行以下命令,确认容器是否创建成功:
docker ps
进入容器
用户在完成新建容器后,使用已定义的环境变量DOCKER_NAME
,启动并进入容器:
docker exec -it $DOCKER_NAME bash
源码安装
CANN安装
CANN安装方法与环境配套,请参考CANN社区版软件安装,若用户在安装CANN过程中遇到问题,可参考昇腾常见问题进行解决。
CANN默认安装路径为/usr/local/Ascend
。用户在安装CANN完毕后,使用如下命令,为CANN配置环境变量:
LOCAL_ASCEND=/usr/local/Ascend # the root directory of run package
source ${LOCAL_ASCEND}/ascend-toolkit/set_env.sh
export ASCEND_CUSTOM_PATH=${LOCAL_ASCEND}/ascend-toolkit
vLLM前置依赖安装
vLLM的环境配置与安装方法,请参考vLLM安装教程。其依赖gcc/g++ >= 12.3.0
版本,可通过以下命令完成安装:
yum install -y gcc gcc-c++
vLLM-MindSpore插件安装
vLLM-MindSpore插件有以下两种安装方式。vLLM-MindSpore插件快速安装适用于用户快速使用与部署的场景。vLLM-MindSpore插件手动安装适用于用户对组件有自定义修改的场景。
vLLM-MindSpore插件快速安装
采用快速安装脚本来安装vLLM-MindSpore插件,需要在拉取vLLM-MindSpore插件源码后,执行以下命令,安装依赖包:
git clone -b r0.3.0 https://gitee.com/mindspore/vllm-mindspore.git cd vllm-mindspore bash install_depend_pkgs.sh
编译安装vLLM-MindSpore插件:
pip install .
上述命令执行完毕之后,将在
vllm-mindspore/install_depend_pkgs
目录下生成mindformers
文件夹,将其加入到环境变量中:export PYTHONPATH=$MF_PATH:$PYTHONPATH
vLLM-MindSpore插件手动安装
若用户对组件有修改,或者需使用其他版本,则用户需要按照特定顺序,手动安装组件。vLLM-MindSpore插件软件配套下载地址可以参考版本配套,且对组件的安装顺序要求如下:
安装vLLM
pip install /path/to/vllm-*.whl
卸载torch相关组件
pip uninstall torch torch-npu torchvision torchaudio -y
安装MindSpore
pip install /path/to/mindspore-*.whl
引入MindSpore Transformers仓,加入到
PYTHONPATH
中git clone https://gitee.com/mindspore/mindformers.git export PYTHONPATH=$MF_PATH:$PYTHONPATH
安装Golden Stick
pip install /path/to/mindspore_gs-*.whl
安装MSAdapter
pip install /path/to/msadapter-*.whl
安装vLLM-MindSpore插件
需要先拉取vLLM-MindSpore插件源码,再执行安装
git clone https://gitee.com/mindspore/vllm-mindspore.git cd vllm-mindspore pip install .
快速验证
用户可以创建一个简单的离线推理场景,验证安装是否成功。下面以Qwen2.5-7B 为例。首先用户需要执行以下命令,设置环境变量:
export vLLM_MODEL_BACKEND=MindFormers # use MindSpore Transformers as model backend.
export MINDFORMERS_MODEL_CONFIG=$YAML_PATH # Set the corresponding MindSpore Transformers model's YAML file.
关于环境变量的具体含义,可参考这里。
用户可以使用如下Python脚本,进行模型的离线推理:
import vllm_mindspore # Add this line on the top of script.
from vllm import LLM, SamplingParams
# Sample prompts.
prompts = [
"I am",
"Today is",
"Llama is"
]
# Create a sampling params object.
sampling_params = SamplingParams(temperature=0.0, top_p=0.95)
# Create a LLM
llm = LLM(model="Qwen2.5-7B-Instruct")
# Generate texts from the prompts. The output is a list of RequestOutput objects
# that contain the prompt, generated text, and other information.
outputs = llm.generate(prompts, sampling_params)
# Print the outputs.
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}. Generated text: {generated_text!r}")
若成功执行,则可以获得类似的执行结果:
Prompt: 'I am'. Generated text: ' trying to create a virtual environment for my Python project, but I am encountering some'
Prompt: 'Today is'. Generated text: ' the 100th day of school. To celebrate, the teacher has'
Prompt: 'Llama is'. Generated text: ' a 100% natural, biodegradable, and compostable alternative'