[Nightly][Refactor]Migrate nightly single-node model tests from .py to .yaml (#6503)
### What this PR does / why we need it? This PR refactors the nightly single-node model test by migrating test configurations from Python scripts to a more maintainable `YAML-based` format. | Original PR | Python (`.py`) | YAML (`.yaml`) | | :--- | :--- | :--- | | [#3568](https://github.com/vllm-project/vllm-ascend/pull/3568) | `test_deepseek_r1_0528_w8a8_eplb.py` | `DeepSeek-R1-0528-W8A8.yaml` | | [#3631](https://github.com/vllm-project/vllm-ascend/pull/3631) | `test_deepseek_r1_0528_w8a8.py` | `DeepSeek-R1-0528-W8A8.yaml` | | [#5874](https://github.com/vllm-project/vllm-ascend/pull/5874) | `test_deepseek_r1_w8a8_hbm.py` | `DeepSeek-R1-W8A8-HBM.yaml` | | [#3908](https://github.com/vllm-project/vllm-ascend/pull/3908) | `test_deepseek_v3_2_w8a8.py` | `DeepSeek-V3.2-W8A8.yaml` | | [#5682](https://github.com/vllm-project/vllm-ascend/pull/5682) | `test_kimi_k2_thinking.py` | `Kimi-K2-Thinking.yaml` | | [#4111](https://github.com/vllm-project/vllm-ascend/pull/4111) | `test_mtpx_deepseek_r1_0528_w8a8.py` | `MTPX-DeepSeek-R1-0528-W8A8.yaml` | | [#3733](https://github.com/vllm-project/vllm-ascend/pull/3733) | `test_prefix_cache_deepseek_r1_0528_w8a8.py` | `Prefix-Cache-DeepSeek-R1-0528-W8A8.yaml` | | [#6543](https://github.com/vllm-project/vllm-ascend/pull/6543) | `test_qwen3_235b_w8a8.py` | `Qwen3-235B-A22B-W8A8.yaml` | | [#6543](https://github.com/vllm-project/vllm-ascend/pull/6543) | `test_qwen3_235b_a22b_w8a8_eplb.py` | `Qwen3-235B-A22B-W8A8.yaml` | | [#3973](https://github.com/vllm-project/vllm-ascend/pull/3973) | `test_qwen3_30b_w8a8.py` | `Qwen3-30B-A3B-W8A8.yaml` | | [#3541](https://github.com/vllm-project/vllm-ascend/pull/3541) | `test_qwen3_32b_int8.py` | `Qwen3-32B-Int8.yaml` | | [#3757](https://github.com/vllm-project/vllm-ascend/pull/3757) | `test_qwq_32b.py` | `QwQ-32B.yaml` | | [#5616](https://github.com/vllm-project/vllm-ascend/pull/5616) | `test_qwen3_next_w8a8.py` | `Qwen3-Next-80B-A3B-Instruct-W8A8.yaml` | | [#3541](https://github.com/vllm-project/vllm-ascend/pull/3541) | `test_qwen2_5_vl_7b.py` | `Qwen2.5-VL-7B-Instruct.yaml` | | [#5301](https://github.com/vllm-project/vllm-ascend/pull/5301) | `test_qwen2_5_vl_7b_epd.py` | `Qwen2.5-VL-7B-Instruct-EPD.yaml` | | [#3707](https://github.com/vllm-project/vllm-ascend/pull/3707) | `test_qwen2_5_vl_32b.py` | `Qwen2.5-VL-32B-Instruct.yaml` | | [#3676](https://github.com/vllm-project/vllm-ascend/pull/3676) | `test_qwen3_32b_int8_a3_feature_stack3.py` | `Qwen3-32B-Int8-A3-Feature-Stack3.yaml` | | [#3709](https://github.com/vllm-project/vllm-ascend/pull/3709) | `test_prefix_cache_qwen3_32b_int8.py` | `Prefix-Cache-Qwen3-32B-Int8.yaml` | | [#5395](https://github.com/vllm-project/vllm-ascend/pull/5395) | `test_qwen3_next.py` | `Qwen3-Next-80B-A3B-Instruct-A2.yaml` | | [#3474](https://github.com/vllm-project/vllm-ascend/pull/3474) | `test_qwen3_32b.py` | `Qwen3-32B.yaml` | | [#3541](https://github.com/vllm-project/vllm-ascend/pull/3541) | `test_qwen3_32b_int8.py` | `Qwen3-32B-Int8-A2.yaml` | ### Does this PR introduce _any_ user-facing change? ### How was this patch tested? - vLLM version: v0.15.0 - vLLM main: https://github.com/vllm-project/vllm/commit/v0.15.0 --------- Signed-off-by: MrZ20 <2609716663@qq.com>
This commit is contained in:
36
.github/workflows/_e2e_nightly_single_node.yaml
vendored
36
.github/workflows/_e2e_nightly_single_node.yaml
vendored
@@ -28,7 +28,10 @@ on:
|
||||
type: string
|
||||
default: "swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/cann:8.5.1-910b-ubuntu22.04-py3.11"
|
||||
tests:
|
||||
required: true
|
||||
required: false
|
||||
type: string
|
||||
config_file_path:
|
||||
required: false
|
||||
type: string
|
||||
name:
|
||||
required: false
|
||||
@@ -44,12 +47,12 @@ defaults:
|
||||
# only cancel in-progress runs of the same workflow
|
||||
# and ignore the lint / 1 card / 4 cards test type
|
||||
concurrency:
|
||||
group: ascend-nightly-${{ github.workflow_ref }}-${{ github.ref }}-${{ inputs.tests }}
|
||||
group: ascend-nightly-${{ github.workflow_ref }}-${{ github.ref }}-${{ inputs.config_file_path || inputs.tests }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
e2e-nightly:
|
||||
name: ${{ inputs.tests }}
|
||||
name: ${{ inputs.name || inputs.config_file_path || inputs.tests }}
|
||||
runs-on: ${{ inputs.runner }}
|
||||
timeout-minutes: 600
|
||||
container:
|
||||
@@ -114,14 +117,33 @@ jobs:
|
||||
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 20
|
||||
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 20
|
||||
|
||||
- name: Run vllm-project/vllm-ascend test
|
||||
- name: Validate Inputs
|
||||
run: |
|
||||
if [[ -z "${{ inputs.tests }}" && -z "${{ inputs.config_file_path }}" ]]; then
|
||||
echo "Error: Either 'tests' or 'config_file_path' must be provided."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Run Pytest (py-driven)
|
||||
if: ${{ inputs.tests != '' }}
|
||||
env:
|
||||
VLLM_WORKER_MULTIPROC_METHOD: spawn
|
||||
VLLM_USE_MODELSCOPE: True
|
||||
VLLM_CI_RUNNER: ${{ inputs.runner }}
|
||||
BENCHMARK_HOME: /vllm-workspace/vllm-ascend/benchmark
|
||||
working-directory: /vllm-workspace/vllm-ascend
|
||||
run: |
|
||||
# ignore test_dispatch_ffn_combine until the test is fixed
|
||||
pytest -sv ${{ inputs.tests }} \
|
||||
echo "Running pytest with tests path: ${{ inputs.tests }}"
|
||||
pytest -sv "${{ inputs.tests }}" \
|
||||
--ignore=tests/e2e/nightly/single_node/ops/singlecard_ops/test_fused_moe.py
|
||||
|
||||
- name: Run Pytest (YAML-driven)
|
||||
if: ${{ always() && inputs.config_file_path != '' }}
|
||||
env:
|
||||
VLLM_WORKER_MULTIPROC_METHOD: spawn
|
||||
VLLM_USE_MODELSCOPE: True
|
||||
VLLM_CI_RUNNER: ${{ inputs.runner }}
|
||||
CONFIG_YAML_PATH: ${{ inputs.config_file_path }}
|
||||
working-directory: /vllm-workspace/vllm-ascend
|
||||
run: |
|
||||
echo "Running YAML-driven test with config: ${{ inputs.config_file_path }}"
|
||||
pytest -sv tests/e2e/nightly/single_node/models/scripts/test_single_node.py
|
||||
|
||||
34
.github/workflows/schedule_nightly_test_a2.yaml
vendored
34
.github/workflows/schedule_nightly_test_a2.yaml
vendored
@@ -49,15 +49,6 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test_config:
|
||||
- name: qwen3-next
|
||||
os: linux-aarch64-a2b3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_next.py
|
||||
- name: qwen3-32b
|
||||
os: linux-aarch64-a2b3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_32b.py
|
||||
- name: qwen3-32b-in8-a2
|
||||
os: linux-aarch64-a2b3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_32b_int8.py
|
||||
- name: test_custom_op
|
||||
os: linux-aarch64-a2b3-1
|
||||
tests: tests/e2e/nightly/single_node/ops/singlecard_ops
|
||||
@@ -71,10 +62,33 @@ jobs:
|
||||
name: ${{ matrix.test_config.name }}
|
||||
image: 'swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/vllm-ascend:nightly-a2'
|
||||
|
||||
single-node-yaml-tests:
|
||||
name: single-node
|
||||
if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test_config:
|
||||
- name: qwen3-32b
|
||||
os: linux-aarch64-a2b3-4
|
||||
config_file_path: Qwen3-32B.yaml
|
||||
- name: qwen3-next-80b-a3b-instruct
|
||||
os: linux-aarch64-a2b3-4
|
||||
config_file_path: Qwen3-Next-80B-A3B-Instruct-A2.yaml
|
||||
- name: qwen3-32b-int8
|
||||
os: linux-aarch64-a2b3-4
|
||||
config_file_path: Qwen3-32B-Int8-A2.yaml
|
||||
uses: ./.github/workflows/_e2e_nightly_single_node.yaml
|
||||
with:
|
||||
runner: ${{ matrix.test_config.os }}
|
||||
image: 'swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/vllm-ascend:nightly-a2'
|
||||
config_file_path: ${{ matrix.test_config.config_file_path }}
|
||||
name: ${{ matrix.test_config.name }}
|
||||
|
||||
multi-node-tests:
|
||||
name: multi-node
|
||||
if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||
needs: single-node-tests
|
||||
needs: [single-node-tests, single-node-yaml-tests]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 1
|
||||
|
||||
120
.github/workflows/schedule_nightly_test_a3.yaml
vendored
120
.github/workflows/schedule_nightly_test_a3.yaml
vendored
@@ -109,65 +109,11 @@ jobs:
|
||||
single-node-tests:
|
||||
name: single-node
|
||||
if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||
needs: multi-node-tests
|
||||
needs: [multi-node-tests]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test_config:
|
||||
- name: qwen3-32b-in8-a3
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_32b_int8.py
|
||||
- name: qwen3-32b-int8-a3-feature-stack3
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_32b_int8_a3_feature_stack3.py
|
||||
- name: qwen3-235b-a22b-w8a8-eplb
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_235b_a22b_w8a8_eplb.py
|
||||
- name: deepseek-r1-w8a8-eplb
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_deepseek_r1_0528_w8a8_eplb.py
|
||||
- name: deepseek-r1-w8a8-mtpx
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_mtpx_deepseek_r1_0528_w8a8.py
|
||||
- name: qwen2-5-vl-7b
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen2_5_vl_7b.py
|
||||
- name: qwen2-5-vl-7b-epd
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen2_5_vl_7b_epd.py
|
||||
- name: qwen2-5-vl-32b
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen2_5_vl_32b.py
|
||||
- name: qwen3-32b-int8-prefix-cache
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_prefix_cache_qwen3_32b_int8.py
|
||||
- name: deepseek-r1-0528-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_deepseek_r1_0528_w8a8.py
|
||||
- name: deepseek-r1-0528-w8a8-prefix-cache
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_prefix_cache_deepseek_r1_0528_w8a8.py
|
||||
- name: qwq-32b-a3
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwq_32b.py
|
||||
- name: qwen3-30b-w8a8
|
||||
os: linux-aarch64-a3-2
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_30b_w8a8.py
|
||||
- name: qwen3-235b-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_235b_w8a8.py
|
||||
- name: qwen3-next-w8a8
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/nightly/single_node/models/test_qwen3_next_w8a8.py
|
||||
- name: kimi-k2-thinking
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_kimi_k2_thinking.py
|
||||
- name: deepseek-r1-w8a8-hbm
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_deepseek_r1_w8a8_hbm.py
|
||||
- name: deepseek3_2-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
tests: tests/e2e/nightly/single_node/models/test_deepseek_v3_2_w8a8.py
|
||||
- name: qwen3-30b-acc
|
||||
os: linux-aarch64-a3-4
|
||||
tests: tests/e2e/weekly/single_node/models/test_qwen3_30b_acc.py
|
||||
@@ -178,6 +124,70 @@ jobs:
|
||||
tests: ${{ matrix.test_config.tests }}
|
||||
name: ${{ matrix.test_config.name }}
|
||||
|
||||
single-node-yaml-tests:
|
||||
name: single-node
|
||||
if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||
needs: [multi-node-tests]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test_config:
|
||||
# YAML-driven tests
|
||||
- name: deepseek-r1-0528-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: DeepSeek-R1-0528-W8A8.yaml
|
||||
- name: deepseek-r1-w8a8-hbm
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: DeepSeek-R1-W8A8-HBM.yaml
|
||||
- name: deepseek-v3-2-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: DeepSeek-V3.2-W8A8.yaml
|
||||
- name: kimi-k2-thinking
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: Kimi-K2-Thinking.yaml
|
||||
- name: mtpx-deepseek-r1-0528-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: MTPX-DeepSeek-R1-0528-W8A8.yaml
|
||||
- name: qwen3-235b-a22b-w8a8
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: Qwen3-235B-A22B-W8A8.yaml
|
||||
- name: qwen3-30b-a3b-w8a8
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen3-30B-A3B-W8A8.yaml
|
||||
- name: qwen3-next-80b-a3b-instruct-w8a8
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen3-Next-80B-A3B-Instruct-W8A8.yaml
|
||||
- name: qwq-32b
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: QwQ-32B.yaml
|
||||
- name: qwen3-32b-int8
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen3-32B-Int8.yaml
|
||||
- name: qwen2-5-vl-7b
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen2.5-VL-7B-Instruct.yaml
|
||||
- name: qwen2-5-vl-7b-epd
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen2.5-VL-7B-Instruct-EPD.yaml
|
||||
- name: qwen2-5-vl-32b
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen2.5-VL-32B-Instruct.yaml
|
||||
- name: qwen3-32b-int8-a3-feature-stack3
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Qwen3-32B-Int8-A3-Feature-Stack3.yaml
|
||||
- name: qwen3-32b-int8-prefix-cache
|
||||
os: linux-aarch64-a3-4
|
||||
config_file_path: Prefix-Cache-Qwen3-32B-Int8.yaml
|
||||
- name: deepseek-r1-0528-w8a8-prefix-cache
|
||||
os: linux-aarch64-a3-16
|
||||
config_file_path: Prefix-Cache-DeepSeek-R1-0528-W8A8.yaml
|
||||
uses: ./.github/workflows/_e2e_nightly_single_node.yaml
|
||||
with:
|
||||
runner: ${{ matrix.test_config.os }}
|
||||
image: 'swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/vllm-ascend:nightly-a3'
|
||||
config_file_path: ${{ matrix.test_config.config_file_path }}
|
||||
name: ${{ matrix.test_config.name }}
|
||||
|
||||
custom-ops-tests:
|
||||
name: test ops
|
||||
if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
||||
|
||||
Reference in New Issue
Block a user