### What this PR does / why we need it?
- Fixes https://github.com/vllm-project/vllm-ascend/issues/1533
### How was this patch tested?
1. Run the image
```
docker run \
--name cann_container \
--device /dev/davinci6 \
--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/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-it quay.io/ascend/cann:8.1.rc1-910b-openeuler22.03-py3.11 bash
```
2. Install package
torch=2.5.1
torch-npu=2.5.1.post1.dev20250619
vllm=0.9.1
vllm-ascend=vllm_ascend-0.1.dev1+g02ac443-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Artifact download URL:
https://github.com/vllm-project/vllm-ascend/actions/runs/16039661265/artifacts/3454481370
3. Test offline script
```
from vllm import LLM, SamplingParams
import os
os.environ["VLLM_USE_V1"] = "1"
prompts = [
"Hello, my name is",
]
llm = LLM(model="Qwen3/Qwen3-1.7B")
outputs = llm.generate(prompts)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
```
4. Results

- vLLM version: v0.9.2
- vLLM main:
b942c094e3
---------
Signed-off-by: Icey <1790571317@qq.com>
132 lines
3.7 KiB
YAML
132 lines
3.7 KiB
YAML
#
|
|
# Copyright (c) 2025 Huawei Technologies Co., Ltd. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# This file is a part of the vllm-ascend project.
|
|
#
|
|
|
|
name: build / wheel
|
|
|
|
on:
|
|
schedule:
|
|
# Runs at 23:00 UTC (7:00 AM Beijing) every day
|
|
- cron: '0 23 * * *'
|
|
pull_request:
|
|
branches:
|
|
- 'main'
|
|
- '*-dev'
|
|
paths:
|
|
- '.github/workflows/release_whl.yml'
|
|
- '.github/Dockerfile.buildwheel'
|
|
- 'vllm_ascend/**'
|
|
- 'setup.py'
|
|
- 'pyproject.toml'
|
|
- 'requirements.txt'
|
|
- 'cmake/**'
|
|
- 'CMakeLists.txt'
|
|
- 'csrc/**'
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
- '*-dev'
|
|
tags:
|
|
- 'v*'
|
|
paths:
|
|
- '.github/workflows/release_whl.yml'
|
|
- '.github/Dockerfile.buildwheel'
|
|
- 'vllm_ascend/**'
|
|
- 'setup.py'
|
|
- 'pyproject.toml'
|
|
- 'requirements.txt'
|
|
- 'cmake/**'
|
|
- 'CMakeLists.txt'
|
|
- 'csrc/**'
|
|
|
|
jobs:
|
|
build:
|
|
name: build and release wheel
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-24.04, ubuntu-24.04-arm]
|
|
# PR only trigger latest version
|
|
python-version: ${{ fromJSON(
|
|
(github.event_name == 'pull_request' && '["3.11"]') ||
|
|
'["3.9", "3.10", "3.11"]'
|
|
) }}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
|
|
- name: Print
|
|
run: |
|
|
lscpu
|
|
|
|
- name: Build wheel
|
|
run: |
|
|
ls
|
|
docker build -f ./.github/Dockerfile.buildwheel \
|
|
--build-arg PY_VERSION=${{ matrix.python-version }} \
|
|
-t wheel:v1 .
|
|
docker run --rm \
|
|
-u $(id -u):$(id -g) \
|
|
-v $(pwd):/outpwd \
|
|
wheel:v1 \
|
|
bash -c "cp -r /workspace/vllm-ascend/dist /outpwd"
|
|
ls dist
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Repair wheels with auditwheel
|
|
run: |
|
|
python3 -m pip install auditwheel
|
|
python3 -m pip install patchelf
|
|
mkdir -p dist/repaired
|
|
for whl in dist/*.whl; do
|
|
auditwheel repair "$whl" -w dist/repaired/ \
|
|
--exclude libplatform.so \
|
|
--exclude libregister.so \
|
|
--exclude libge_common_base.so \
|
|
--exclude libc10.so \
|
|
--exclude libc_sec.so \
|
|
--exclude "libascend*.so" \
|
|
--exclude "libtorch*.so"
|
|
done
|
|
rm -f dist/*.whl
|
|
mv dist/repaired/*.whl dist/
|
|
rmdir dist/repaired
|
|
ls dist
|
|
|
|
- name: Verify automatic platform tags
|
|
run: |
|
|
cd dist
|
|
for wheel in *.whl; do
|
|
echo "verification file: $wheel"
|
|
auditwheel show "$wheel"
|
|
done
|
|
|
|
- name: Archive wheel
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: vllm-ascend-${{ matrix.os }}-py${{ matrix.python-version }}-wheel
|
|
path: dist/*
|
|
|
|
- name: Release
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
run: |
|
|
python3 -m pip install twine
|
|
python3 -m twine upload --verbose dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }}
|