贡献指南#
构建与测试#
建议在提交PR前先设置本地开发环境进行构建和测试。
准备环境并构建#
理论上,vllm-ascend构建仅支持Linux系统,因为vllm-ascend依赖的torch_npu仅支持Linux平台。
但你仍然可以在Linux/Windows/macOS上设置开发环境用于代码检查和基础测试,命令如下:
# Choose a base dir (~/vllm-project/) and set up venv
cd ~/vllm-project/
python3 -m venv .venv
source ./.venv/bin/activate
# Clone vllm code and install
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -r requirements-build.txt
VLLM_TARGET_DEVICE="empty" pip install .
cd ..
# Clone vllm-ascend and install
git clone https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend
pip install -r requirements-dev.txt
# Then you can run lint and mypy test
bash format.sh
# Build:
# - only supported on Linux (torch_npu available)
# pip install -e .
# - build without deps for debugging in other OS
# pip install -e . --no-deps
# Commit changed files using `-s`
git commit -sm "your commit info"
测试#
虽然vllm-ascend CI在Ascend上提供了集成测试,您也可以在本地运行。在本地运行这些集成测试的最简单方法是通过容器:
# Under Ascend NPU environment
git clone https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend
export IMAGE=vllm-ascend-dev-image
export CONTAINER_NAME=vllm-ascend-dev
export DEVICE=/dev/davinci1
# The first build will take about 10 mins (10MB/s) to download the base image and packages
docker build -t $IMAGE -f ./Dockerfile .
# You can also specify the mirror repo via setting VLLM_REPO to speedup
# docker build -t $IMAGE -f ./Dockerfile . --build-arg VLLM_REPO=https://gitee.com/mirrors/vllm
docker run --rm --name $CONTAINER_NAME --network host --device $DEVICE \
--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/ \
-ti $IMAGE bash
cd vllm-ascend
pip install -r requirements-dev.txt
pytest tests/
开发者原创声明与签署确认#
向本项目提交变更时,您必须同意开发者原创证书(DCO)。提交的代码必须包含Signed-off-by:标头,以证明您同意DCO的条款。
使用-s参数配合git commit命令会自动添加这个头部信息。
PR标题与分类#
仅特定类型的PR会被审核。PR标题需添加适当前缀以表明变更类型。请使用以下前缀之一:
[Attention]用于注意力机制的新功能或优化。[Communicator]用于通信器的新功能或优化。[ModelRunner]用于模型运行器的新功能或优化。[Platform]用于平台新功能或优化。[Worker]用于worker中的新功能或优化。[核心]用于vllm-ascend核心逻辑的新功能或优化(如平台、注意力机制、通信器、模型运行器)[Kernel]影响计算内核和操作的变更。[Bug修复]用于修复错误。[文档]用于文档修正和改进。[Test]用于测试(如单元测试)。[CI]用于构建或持续集成改进。[杂项]用于不属于上述分类的PR。请谨慎使用此分类。
注意
如果该PR涉及多个类别,请包含所有相关前缀。
其他#
您可以在docs.vllm.ai上找到更多关于为vLLM Ascend后端插件贡献的信息。 如果在贡献过程中遇到任何问题,欢迎随时提交PR来改进文档以帮助其他开发者。