[HiCache] feat: Add detailed cache hit breakdown for HiCache in sglext and Prometheus metrics
#47482
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: false | |
| jobs: | |
| # ==================== Check Changes ==================== # | |
| check-changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| main_package: ${{ steps.filter.outputs.main_package || steps.run-mode.outputs.run_all_tests}} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| 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)/**" | |
| - "python/pyproject_cpu.toml" | |
| - "test/**" | |
| # Only trigger on CPU-specific sgl-kernel changes | |
| - "sgl-kernel/pyproject_cpu.toml" | |
| - "sgl-kernel/csrc/cpu/**" | |
| - "sgl-kernel/python/**" | |
| - "sgl-kernel/include/**" | |
| - "sgl-kernel/tests/**" | |
| - ".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: xeon-gnr | |
| env: | |
| HF_HOME: /home/sdp/.cache/huggingface | |
| strategy: | |
| matrix: | |
| build_type: ['all'] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| 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 ${HF_HOME}:/root/.cache/huggingface \ | |
| --name ci_sglang_xeon \ | |
| sglang_xeon | |
| - name: Check AMX support | |
| id: check_amx | |
| timeout-minutes: 5 | |
| run: | | |
| docker exec -w /sglang-checkout/ ci_sglang_xeon \ | |
| bash -c "source /opt/.venv/bin/activate && python3 -c 'import torch; import sgl_kernel; assert torch._C._cpu._is_amx_tile_supported(); assert hasattr(torch.ops.sgl_kernel, \"convert_weight_packed\"); '" | |
| - name: Run unit tests | |
| timeout-minutes: 36 | |
| run: | | |
| docker exec -w /sglang-checkout/ ci_sglang_xeon \ | |
| bash -c "source /opt/.venv/bin/activate && cd ./test/srt && python3 run_suite.py --suite per-commit-cpu --timeout-per-file 1500" | |
| - name: Change permission | |
| timeout-minutes: 2 | |
| run: | | |
| docker exec -u root ci_sglang_xeon 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_xeon || true |