[Router] Add bounded-load consistent hashing policy #115017
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PR Test (Xeon) | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| workflow_dispatch: | |
| workflow_call: | |
| inputs: | |
| ref: | |
| description: 'Git ref (branch, tag, or SHA) to test. If not provided, uses the default branch.' | |
| required: false | |
| type: string | |
| default: '' | |
| run_all_tests: | |
| description: "Run all tests (for releasing or testing purpose)" | |
| required: false | |
| type: boolean | |
| default: false | |
| concurrency: | |
| group: pr-test-xeon-${{ inputs.ref || github.ref }} | |
| cancel-in-progress: ${{ github.event_name != 'workflow_call' }} | |
| jobs: | |
| # ==================== Check Changes ==================== # | |
| check-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| main_package: ${{ steps.filter.outputs.main_package || steps.run-mode.outputs.run_all_tests}} | |
| env: | |
| PYTHONDONTWRITEBYTECODE: 1 | |
| steps: | |
| - name: clean up | |
| run: | | |
| sudo rm -rf ${{ github.workspace }} || true | |
| sudo mkdir -p ${{ github.workspace }} | |
| sudo chown -R $(id -u):$(id -g) ${{ github.workspace }} | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| clean: false | |
| ref: ${{ inputs.ref || github.ref }} | |
| - name: Determine run mode | |
| id: run-mode | |
| run: | | |
| # Run all tests for workflow_call (when ref input is provided) | |
| # Note: github.event_name is inherited from caller, so we detect workflow_call by checking inputs.ref | |
| if [[ "${{ inputs.run_all_tests }}" == "true" ]]; then | |
| echo "run_all_tests=true" >> $GITHUB_OUTPUT | |
| echo "Run mode: ALL TESTS (run_all_tests=${{ inputs.run_all_tests }})" | |
| else | |
| echo "run_all_tests=false" >> $GITHUB_OUTPUT | |
| echo "Run mode: FILTERED (triggered by ${{ github.event_name }})" | |
| fi | |
| - name: Detect file changes | |
| id: filter | |
| uses: dorny/paths-filter@v3 | |
| if: steps.run-mode.outputs.run_all_tests != 'true' | |
| with: | |
| filters: | | |
| main_package: | |
| - "python/sglang/!(multimodal_gen)/**/!(*.md)" | |
| - "python/pyproject_cpu.toml" | |
| - "test/**/!(*.md)" | |
| - "python/sglang/kernels/aot/**/!(*.md|THIRDPARTYNOTICES.txt|LICENSE)" | |
| - ".github/workflows/pr-test-xeon.yml" | |
| - "docker/xeon.Dockerfile" | |
| # ==================== PR Gate ==================== # | |
| pr-gate: | |
| needs: check-changes | |
| if: needs.check-changes.outputs.main_package == 'true' | |
| uses: ./.github/workflows/pr-gate.yml | |
| secrets: inherit | |
| build-test: | |
| needs: [check-changes, pr-gate] | |
| if: needs.check-changes.outputs.main_package == 'true' | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| matrix: | |
| include: | |
| - runner: xeon-gnr | |
| suite: base-b-test-cpu | |
| partition_args: "" | |
| steps: | |
| - name: Cleanup workspace | |
| run: | | |
| sudo rm -rf ${{ github.workspace }} || true | |
| sudo mkdir -p ${{ github.workspace }} | |
| sudo chown $(id -u):$(id -g) ${{ github.workspace }} | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| clean: false | |
| ref: ${{ inputs.ref || github.ref }} | |
| - name: Build and Push | |
| run: | | |
| version=$(cat python/sglang/version.py | cut -d'"' -f2) | |
| tag=v${version}-xeon | |
| PR_REPO=${{ github.event.pull_request.head.repo.clone_url }} | |
| PR_HEAD_REF=${{ github.head_ref }} | |
| docker build \ | |
| ${PR_REPO:+--build-arg SGLANG_REPO=$PR_REPO} \ | |
| ${PR_HEAD_REF:+--build-arg VER_SGLANG=$PR_HEAD_REF} \ | |
| . -f docker/xeon.Dockerfile -t sglang_xeon --no-cache | |
| - name: Run container | |
| run: | | |
| docker run -dt \ | |
| -v ${{ github.workspace }}:/sglang-checkout/ --ipc=host \ | |
| -v $HOME/.cache/huggingface:/root/.cache/huggingface \ | |
| -e HF_TOKEN="$(cat ~/huggingface_token.txt)" \ | |
| --name ci_sglang_${{ matrix.runner }} \ | |
| sglang_xeon | |
| - name: Check AMX support | |
| id: check_amx | |
| timeout-minutes: 5 | |
| run: | | |
| docker exec -w /sglang-checkout/ ci_sglang_${{ matrix.runner }} \ | |
| bash -c "source /opt/.venv/bin/activate && python3 -c 'import torch; import sgl_kernel; assert torch.cpu._is_amx_tile_supported(); assert hasattr(torch.ops.sgl_kernel, \"convert_weight_packed\"); '" | |
| - name: Run unit tests | |
| timeout-minutes: 120 | |
| run: | | |
| docker exec -w /sglang-checkout/ ci_sglang_${{ matrix.runner }} \ | |
| bash -c "source /opt/.venv/bin/activate && cd ./test && python3 run_suite.py --hw cpu --suite ${{ matrix.suite }} ${{ matrix.partition_args }}" | |
| - name: Change permission | |
| timeout-minutes: 2 | |
| run: | | |
| docker exec -u root ci_sglang_${{ matrix.runner }} bash -c " | |
| rm -rf /tmp/ci-home && | |
| chown -R $(id -u):$(id -g) /sglang-checkout/ 2>/dev/null || true | |
| " | |
| - name: Cleanup container | |
| if: always() | |
| run: | | |
| docker rm -f ci_sglang_${{ matrix.runner }} || true |