Skip to content

Latest commit

 

History

History
108 lines (81 loc) · 3.89 KB

contributing.md

File metadata and controls

108 lines (81 loc) · 3.89 KB

Contributing

Building and testing

It's recommended to set up a local development environment to build and test before you submit a PR.

Prepare environment and build

Theoretically, the vllm-ascend build is only supported on Linux because vllm-ascend dependency torch_npu only supports Linux.

But you can still set up dev env on Linux/Windows/macOS for linting and basic test as following commands:

# 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"

Testing

Although vllm-ascend CI provide integration test on Ascend, you can run it locally. The simplest way to run these integration tests locally is through a container:

# Under Ascend NPU environment
git clone https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend

IMAGE=vllm-ascend-dev-image
CONTAINER_NAME=vllm-ascend-dev
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 --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 --rm $IMAGE bash

cd vllm-ascend
pip install -r requirements-dev.txt

pytest tests/

DCO and Signed-off-by

When contributing changes to this project, you must agree to the DCO. Commits must include a Signed-off-by: header which certifies agreement with the terms of the DCO.

Using -s with git commit will automatically add this header.

PR Title and Classification

Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

  • [Attention] for new features or optimization in attention.
  • [Communicator] for new features or optimization in communicators.
  • [ModelRunner] for new features or optimization in model runner.
  • [Platform] for new features or optimization in platform.
  • [Worker] for new features or optimization in worker.
  • [Core] for new features or optimization in the core vllm-ascend logic (such as platform, attention, communicators, model runner)
  • [Kernel] changes affecting compute kernels and ops.
  • [Bugfix] for bug fixes.
  • [Doc] for documentation fixes and improvements.
  • [Test] for tests (such as unit tests).
  • [CI] for build or continuous integration improvements.
  • [Misc] for PRs that do not fit the above categories. Please use this sparingly.

:::{note} If the PR spans more than one category, please include all relevant prefixes. :::

Others

You may find more information about contributing to vLLM Ascend backend plugin on docs.vllm.ai. If you find any problem when contributing, you can feel free to submit a PR to improve the doc to help other developers.