
环境搭建流程
单卡环境搭建
镜像环境检查
使用vllm-ascend项目自带的
collect_env.py检查环境,我当前的环境如下:1
2
3
4
5
6
7
8
9Ascend 910B NPU
openEuler操作系统(容器自带)
Python 3.11(容器自带)
CANN 8.5.1(容器自带)
torch 2.9.0(容器自带)
torch-npu 2.9.0rc1(容器自带环境,后续需要重新install成torch-npu 2.9.0以解决兼容性问题)
Triton-Ascend 3.2.0(需要自行安装)
vLLM-Ascend `0.1.dev1+gce9effc33.d20260507`(最新github main分支的版本)
vLLM `0.19.2rc1.dev17+gd886c26d4`(和vllm-ascend最新main分支兼容版本)虚拟环境搭建
启动虚拟环境
1
python3 -m venv --system-site-packages .venv # 使用 --system-site-packages 继承系统环境
这里对
--system-site-packages做一点小拓展:- 如果用户需要安装依赖包,且该依赖包系统环境已有,会默认跳过
- 这种情况用户需要强制使用:
pip install --ignore-installed <包名>==<版本>来强制安装 - :warning:由于虚拟环境路径优先,新安装的包会遮蔽系统包
- :warning:会跳过依赖检查,有风险
基础工具链安装
1
dnf install -y git gcc gcc-c++ cmake numactl-devel wget curl jq ninja-build python3-pip
1
2
3
4
5
6
7
8
9python -m pip install \
cmake \
ninja \
packaging \
"setuptools>=77,<81" \
setuptools-scm \
pybind11
pip install torchvision==0.24.0 torchaudio==2.9.0 # 参考:http://pytorch.org/get-started/previous-versions/1
2For torch-npu dev version or x86 machine
pip config set global.extra-index-url "https://download.pytorch.org/whl/cpu/"
源码安装vllm
clone并切到对应版本
1
2git clone --recursive git@github.com:vllm-project/vllm.git
git checkout d886c26d4d4fef7d079696beb4ece1cfb4b008a8vllm版本具体参考 vllm-ascend Dokerfile。
源码安装
这里的核心要点是,一定使用
--no-deps --no-build-isolation,以防止vllm 下载并安装默认torch(2.10.0版本,存在兼容性问题)。1
2VLLM_TARGET_DEVICE=empty \
python -m pip install -v --no-deps --no-build-isolation -e .
源码安装vllm-ascend
1
2进入 vllm-ascend目录
python -m pip install -v --no-deps --no-build-isolation -e .解决版本兼容性问题
torch-npu必须是torch-npu2.9.0
1
2python -m pip install --no-cache-dir --force-reinstall --no-deps \
"https://vllm-ascend.obs.cn-north-4.myhuaweicloud.com/vllm-ascend/torch_npu-2.9.0.post1%2Bgitdc51c2d-cp311-cp311-manylinux_2_28_x86_64.whl"triton-ascend必须是3.2.0
1
2
3python -m pip install --no-cache-dir --force-reinstall --ignore-installed --no-deps \
-i https://pypi.org/simple \
"triton-ascend==3.2.0"
最终测试
使用如下qwen3-0.6B测试。
1 | from vllm import LLM, SamplingParams |
如下结果即为初步构建成功。

CI test
首先需要补充如下python包:
1 | pip install pytest |
然后运行:
1 | cd /vllm-workspace/vllm-ascend/ |
但是目前的branch不支持mooncace,所以使用:
1 | pytest -sv tests/ut --ignore=tests/ut/kv_connector/test_mooncake_connector.py --ignore=tests/ut/kv_connector/test_mooncake_layerwise_connector.py |
问题
镜像相关
python 版本问题
检查 Python:
1 | which python |
期望 Python 来自:
1 | /usr/local/python3.11.14/bin/python |
昇腾容器有两条python环境,需要自行export一下。
OpenEuler相关
1 | dnf install -y 包名 |
vLLM相关
vLLM或是vLLM-ascend出现module缺失
这种情况就是版本没有对齐。参考 https://docs.vllm.ai/projects/vllm-ascend-cn/zh-cn/latest/community/versioning_policy.html 版本管理矩阵对齐。如果是用的github最新的main分支,那么vllm等依赖版本通过Dockerfile来对齐即可。
torch_air 缺失 bug
1 | python - <<'PY' |
运行上述脚本,has register_replacement:会返回false,原因是算力广场提供的pytorch镜像使用的是torch-npu2.9.0rc1,而不是官方要求的torch-npu2.9.0。重新构建好 torch-npu2.9.0即可。
缺少triton
1 | (.venv) [root@179581a576fc vllm-ascend-dly]# python check.py |
1 | AttributeError: '_OpNamespace' 'vllm' object has no attribute 'qkv_rmsnorm_rope' |
相关issue:https://github.com/vllm-project/vllm-ascend/issues/6737
重新构建triton-ascend:
1 | python -m pip install --no-cache-dir --force-reinstall --ignore-installed --no-deps \ |
测试如下脚本,只要qkv_rmsnorm_rope存在即可。
1 | python - <<'PY' |