Co-authored-by: Sugar920 <Sugar920@users.noreply.github.com> Co-authored-by: Claude Code <noreply@anthropic.com>
349 lines
12 KiB
YAML
349 lines
12 KiB
YAML
name: Full Test (NPU)
|
|
|
|
on:
|
|
# pull_request:
|
|
# branches:
|
|
# - main
|
|
# paths:
|
|
# - ".github/workflows/full-test-npu.yml"
|
|
workflow_dispatch:
|
|
inputs:
|
|
ref:
|
|
description: 'Git ref (branch, tag, or SHA) to test. If not provided, uses the default branch.'
|
|
required: false
|
|
type: string
|
|
default: ''
|
|
job_filter:
|
|
description: 'Select which job to run (leave empty or "all" to run all jobs)'
|
|
required: false
|
|
type: string
|
|
default: 'all'
|
|
image_a2:
|
|
description: 'The a2 running docker image of the test task.'
|
|
required: false
|
|
type: string
|
|
default: 'swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann9.0.0-910b'
|
|
image_a3:
|
|
description: 'The a3 running docker image of the test task. Must be an image with sglang preinstalled (e.g. lmsysorg/sglang:*a3*).'
|
|
required: false
|
|
type: string
|
|
default: 'swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann9.0.0-a3'
|
|
|
|
concurrency:
|
|
group: full-test-npu-${{ inputs.ref || github.ref }}
|
|
cancel-in-progress: ${{ github.event_name != 'workflow_call' }}
|
|
|
|
jobs:
|
|
set-image-config:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
ref: ${{ steps.set-vars.outputs.ref }}
|
|
job_filter: ${{ steps.set-vars.outputs.job_filter }}
|
|
image_a2: ${{ steps.set-vars.outputs.image_a2 }}
|
|
image_a3: ${{ steps.set-vars.outputs.image_a3 }}
|
|
steps:
|
|
# When triggered by PR, no inputs parameters are used. The latest community code is tested by default.
|
|
- name: Set image config
|
|
id: set-vars
|
|
run: |
|
|
if [ -z "${{ inputs.ref }}" ]; then
|
|
echo "ref=" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "ref=${{ inputs.ref }}" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
if [ -z "${{ inputs.job_filter }}" ]; then
|
|
echo "job_filter=all" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "job_filter=${{ inputs.job_filter }}" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
if [ -z "${{ inputs.image_a2 }}" ]; then
|
|
echo "image_a2=swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann9.0.0-910b" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "image_a2=${{ inputs.image_a2 }}" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
if [ -z "${{ inputs.image_a3 }}" ]; then
|
|
echo "image_a3=swr.cn-southwest-2.myhuaweicloud.com/base_image/dockerhub/lmsysorg/sglang:main-cann9.0.0-a3" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "image_a3=${{ inputs.image_a3 }}" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
nighly-test-npu:
|
|
needs: [set-image-config]
|
|
name: nightly-test-npu
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
uses: ./.github/workflows/nightly-test-npu.yml
|
|
with:
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
job_filter: ${{ needs.set-image-config.outputs.job_filter }}
|
|
image_a3: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
secrets: inherit
|
|
|
|
full-4-npu-a2:
|
|
name: full-4-npu-a2
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-single-node-test-stage.yml
|
|
with:
|
|
runner: linux-aarch64-a2-4
|
|
test_type: 'perf'
|
|
test_suite: full-4-npu-a2
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
image: ${{ needs.set-image-config.outputs.image_a2 }}
|
|
device_type_for_deps: '910b'
|
|
|
|
full-1-npu-a3:
|
|
name: full-1-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-1-npu-a3
|
|
runner_config: linux-aarch64-a3-2
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-2-npu-a3:
|
|
name: full-2-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-2-npu-a3
|
|
runner_config: linux-aarch64-a3-2
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-4-npu-a3:
|
|
name: full-4-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-4-npu-a3
|
|
runner_config: linux-aarch64-a3-4
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-8-npu-a3:
|
|
name: full-8-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-8-npu-a3
|
|
runner_config: linux-aarch64-a3-8
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-16-npu-a3:
|
|
name: full-16-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-16-npu-a3
|
|
runner_config: linux-aarch64-a3-16
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-acc-2-npu-a3:
|
|
name: full-acc-2-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-single-node-test-stage.yml
|
|
with:
|
|
runner: linux-aarch64-a3-2-
|
|
test_type: 'accuracy'
|
|
test_suite: full-acc-2-npu-a3
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
is_nightly_pipeline_job: true
|
|
install_sglang_deps: true
|
|
device_type_for_deps: 'a3'
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-acc-4-npu-a3:
|
|
name: full-acc-4-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-single-node-test-stage.yml
|
|
with:
|
|
runner: linux-aarch64-a3-4-
|
|
test_type: 'accuracy'
|
|
test_suite: full-acc-4-npu-a3
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
is_nightly_pipeline_job: true
|
|
install_sglang_deps: true
|
|
device_type_for_deps: 'a3'
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-acc-16-npu-a3:
|
|
name: full-acc-16-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-single-node-test-stage.yml
|
|
with:
|
|
runner: linux-aarch64-a3-16-
|
|
test_type: 'accuracy'
|
|
test_suite: full-acc-16-npu-a3
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
is_nightly_pipeline_job: true
|
|
install_sglang_deps: true
|
|
device_type_for_deps: 'a3'
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-perf-2-npu-a3:
|
|
name: full-perf-2-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-perf-2-npu-a3
|
|
runner_config: linux-aarch64-a3-800t-2
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-perf-4-npu-a3:
|
|
name: full-perf-4-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-perf-4-npu-a3
|
|
runner_config: linux-aarch64-a3-800t-4
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-perf-8-npu-a3:
|
|
name: full-perf-8-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-perf-8-npu-a3
|
|
runner_config: linux-aarch64-a3-800t-8
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-perf-16-npu-a3:
|
|
name: full-perf-16-npu-a3
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
uses: ./.github/workflows/_npu-pr-test-stage.yml
|
|
with:
|
|
self_name: full-perf-16-npu-a3
|
|
runner_config: linux-aarch64-a3-800t-16
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
run_timeout_minutes: '240'
|
|
timeout_per_file: '3600'
|
|
ref: ${{ needs.set-image-config.outputs.ref }}
|
|
is_nightly_pipeline_job: true
|
|
skip_pr_test_health_check: 'true'
|
|
secrets: inherit
|
|
|
|
full-poc-multi-node-mix-tests:
|
|
name: multi-node-mix-poc
|
|
if: ${{ (github.repository == 'sgl-project/sglang' || github.event_name == 'pull_request') }}
|
|
needs: [set-image-config]
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 1
|
|
matrix:
|
|
test_config:
|
|
# kimi_k2_6 performance tests
|
|
- name: kimi_k2_6_w4a8_16p_in64k_out1k_100ms_aime25
|
|
node_size: 2
|
|
test_case: test/registered/npu/accuracy/kimi_k2_6/test_npu_kimi_k2_6_w4a8_16p_in64k_out1k_100ms_aime25.py
|
|
test_type: 'accuracy'
|
|
uses: ./.github/workflows/nightly-test-npu-e2e-multi-node.yml
|
|
with:
|
|
runner: linux-amd64-cpu-4
|
|
test_type: ${{ matrix.test_config.test_type || 'perf' }}
|
|
test_config_name: ${{ matrix.test_config.name }}
|
|
node_size: ${{ matrix.test_config.node_size }}
|
|
test_case: ${{ matrix.test_config.test_case }}
|
|
image: ${{ needs.set-image-config.outputs.image_a3 }}
|
|
install_sglang_from_source: false
|
|
prefill_decode_deployment: 'mix'
|
|
transformers_version: ''
|
|
|
|
check-all-jobs:
|
|
if: github.repository == 'sgl-project/sglang' && always()
|
|
needs:
|
|
- nighly-test-npu
|
|
- full-4-npu-a2
|
|
- full-1-npu-a3
|
|
- full-2-npu-a3
|
|
- full-4-npu-a3
|
|
- full-8-npu-a3
|
|
- full-16-npu-a3
|
|
- full-acc-2-npu-a3
|
|
- full-acc-4-npu-a3
|
|
- full-acc-16-npu-a3
|
|
- full-perf-2-npu-a3
|
|
- full-perf-4-npu-a3
|
|
- full-perf-8-npu-a3
|
|
- full-perf-16-npu-a3
|
|
- full-poc-multi-node-mix-tests
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: docker.m.daocloud.io/ubuntu:22.04
|
|
steps:
|
|
- name: Check if any job failed
|
|
run: |
|
|
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
|
|
echo "One or more nightly test jobs failed"
|
|
exit 1
|
|
fi
|
|
if [[ "${{ contains(needs.*.result, 'cancelled') }}" == "true" ]]; then
|
|
echo "One or more nightly test jobs were cancelled"
|
|
exit 1
|
|
fi
|
|
echo "All nightly test jobs passed"
|