Skip to content

Commit 69e5e60

Browse files
committed
Merge remote-tracking branch 'upstream/main' into flowcontrol/unify-on-priority-queue
2 parents c461eb6 + d46a87e commit 69e5e60

350 files changed

Lines changed: 56370 additions & 3726 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/check-typos.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ jobs:
2020
uses: actions/checkout@v7
2121

2222
- name: Check typos
23-
uses: crate-ci/typos@v1.47.2
23+
uses: crate-ci/typos@v1.48.0
2424

.github/workflows/ci-dev.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ permissions:
1414

1515
jobs:
1616
set-params:
17+
if: github.event.repository.fork != true
1718
runs-on: ubuntu-latest
1819
outputs:
1920
epp_name: ${{ steps.version.outputs.epp_name }}
@@ -33,6 +34,7 @@ jobs:
3334
echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
3435
3536
build-and-push:
37+
if: github.event.repository.fork != true
3638
needs: set-params
3739
uses: ./.github/workflows/ci-build-images.yaml
3840
with:

.github/workflows/ci-pr-checks.yaml

Lines changed: 1 addition & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -306,66 +306,6 @@ jobs:
306306
retention-days: 1
307307
compression-level: 0
308308

309-
e2e-gaie:
310-
needs:
311-
- check-changes
312-
- e2e-image-common
313-
if: ${{ needs.check-changes.outputs.src == 'true' }}
314-
runs-on: ubuntu-latest
315-
timeout-minutes: 60
316-
strategy:
317-
fail-fast: false
318-
matrix:
319-
suite:
320-
- name: traffic
321-
label-filter: "!GAIEMetrics && !GAIELeaderElection"
322-
- name: metrics
323-
label-filter: "GAIEMetrics"
324-
name: e2e-gaie (${{ matrix.suite.name }})
325-
steps:
326-
- name: Checkout source
327-
uses: actions/checkout@v7
328-
329-
- name: Set up e2e runner
330-
id: e2e-setup
331-
uses: ./.github/actions/e2e-runner-setup
332-
333-
- name: Download builder image
334-
uses: actions/download-artifact@v8
335-
with:
336-
name: e2e-image-builder
337-
path: ${{ runner.temp }}/e2e-images
338-
339-
- name: Download EPP image
340-
uses: actions/download-artifact@v8
341-
with:
342-
name: e2e-image-epp
343-
path: ${{ runner.temp }}/e2e-images
344-
345-
- name: Download simulator image
346-
uses: actions/download-artifact@v8
347-
with:
348-
name: e2e-image-simulator
349-
path: ${{ runner.temp }}/e2e-images
350-
351-
- name: Load e2e images
352-
shell: bash
353-
run: |
354-
for image in "${RUNNER_TEMP}"/e2e-images/*.tar; do
355-
docker load --input "$image"
356-
done
357-
358-
- name: Run e2e-gaie (${{ matrix.suite.name }})
359-
shell: bash
360-
env:
361-
GO_MOD_CACHE_VOL: ${{ steps.e2e-setup.outputs.go-mod-cache }}
362-
GO_BUILD_CACHE_VOL: ${{ steps.e2e-setup.outputs.go-build-cache }}
363-
E2E_LABEL_FILTER: ${{ matrix.suite.label-filter }}
364-
PULL_SIDECAR_IMAGE: "false"
365-
PULL_VLLM_RENDER_IMAGE: "false"
366-
HF_TOKEN: ${{ secrets.HF_TOKEN }}
367-
run: make test-e2e-gaie-run
368-
369309
e2e-router:
370310
needs:
371311
- check-changes
@@ -452,4 +392,4 @@ jobs:
452392
LOAD_VLLM_RENDER_IMAGE: ${{ matrix.suite.needs-renderer }}
453393
PULL_VLLM_RENDER_IMAGE: "false"
454394
HF_TOKEN: ${{ secrets.HF_TOKEN }}
455-
run: make test-e2e-router-run
395+
run: make test-e2e-run

.github/workflows/md-link-check.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,38 @@ concurrency:
1818
cancel-in-progress: true
1919

2020
jobs:
21+
22+
check-for-markdown-files:
23+
runs-on: ubuntu-latest
24+
outputs:
25+
src: ${{ steps.filter.outputs.src }}
26+
steps:
27+
- name: Checkout source
28+
uses: actions/checkout@v7
29+
- uses: dorny/paths-filter@v4
30+
id: filter
31+
with:
32+
filters: |
33+
src:
34+
- '**/*.md'
35+
2136
lychee:
2237
name: Check Markdown Links
38+
needs: check-for-markdown-files
2339
# pull_request_target fires even when GITHUB_TOKEN creates the PR (e.g. the
2440
# release-notes bot). pull_request does not. We register pull_request_target
2541
# so bot-created PRs get a "skipped" conclusion that satisfies branch
2642
# protection, but we skip all real work: pull_request already covers human
2743
# PRs, and running twice would cause the concurrency group to cancel one run.
28-
if: github.event_name != 'pull_request_target'
44+
if: github.event_name != 'pull_request_target' && needs.check-for-markdown-files.outputs.src == 'true'
2945
runs-on: ubuntu-latest
3046

3147
steps:
3248
- name: Checkout code
3349
uses: actions/checkout@v7
3450

3551
- name: Run lychee link checker
36-
uses: lycheeverse/lychee-action@v2.8.0
52+
uses: lycheeverse/lychee-action@v2.9.0
3753
with:
3854
# Exclude release-notes.d/ — fragments are sourced verbatim from
3955
# PR bodies; let the original PR's link check be authoritative.
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
name: Nightly - Router Perf Test (Optimized Baseline 10k-1k)
2+
3+
on:
4+
schedule:
5+
- cron: '0 9 * * *' # Run daily at 09:00 UTC
6+
workflow_dispatch: # Enable manual triggering from UI
7+
inputs:
8+
gcp_project_id:
9+
description: 'GCP Project ID'
10+
default: 'llm-d-scale'
11+
required: true
12+
type: string
13+
gke_cluster_name:
14+
description: 'GKE Cluster Name'
15+
default: 'llm-d-ap-usc1-router-perf'
16+
required: true
17+
type: string
18+
gke_cluster_zone:
19+
description: 'GKE Cluster Zone/Region'
20+
default: 'us-central1'
21+
required: true
22+
type: string
23+
sim_replicas:
24+
description: 'Number of simulator replicas'
25+
default: '10'
26+
required: true
27+
type: string
28+
router_config:
29+
description: 'Path to consolidated router Helm values configuration'
30+
default: 'test/perf/config/router-configs/optimized-baseline.yaml'
31+
required: true
32+
type: string
33+
test_name:
34+
description: 'Test identifier name'
35+
default: 'optimized-baseline-job1'
36+
required: true
37+
type: string
38+
perf_job:
39+
description: 'Performance job configuration path'
40+
default: 'test/perf/config/shared_prefix_job1.yaml'
41+
required: true
42+
type: string
43+
44+
permissions:
45+
contents: write
46+
actions: read
47+
48+
jobs:
49+
run-perf-benchmark:
50+
runs-on: ubuntu-latest
51+
env:
52+
# This cluster must have the Gateway API Inference Extension CRDs
53+
# already installed in it.
54+
GCP_PROJECT_ID: ${{ inputs.gcp_project_id || 'llm-d-scale' }}
55+
GKE_CLUSTER_NAME: ${{ inputs.gke_cluster_name || 'llm-d-ap-usc1-router-perf' }}
56+
GKE_CLUSTER_ZONE: ${{ inputs.gke_cluster_zone || 'us-central1' }}
57+
SIM_REPLICAS: ${{ inputs.sim_replicas || '10' }}
58+
ROUTER_CONFIG: ${{ inputs.router_config || 'test/perf/config/router-configs/optimized-baseline.yaml' }}
59+
TEST_NAME: ${{ inputs.test_name || 'optimized-baseline-job1' }}
60+
PERF_JOB: ${{ inputs.perf_job || 'test/perf/config/shared_prefix_job1.yaml' }}
61+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
62+
steps:
63+
- name: Checkout llm-d/llm-d-router
64+
uses: actions/checkout@v6
65+
66+
- name: Checkout kubernetes-sigs/inference-perf
67+
uses: actions/checkout@v6
68+
with:
69+
repository: kubernetes-sigs/inference-perf
70+
path: inference-perf
71+
72+
- name: Authenticate to Google Cloud
73+
uses: google-github-actions/auth@v2
74+
with:
75+
credentials_json: ${{ secrets.GKE_SA_KEY }}
76+
77+
- name: Set up gcloud CLI and kubectl
78+
uses: google-github-actions/setup-gcloud@v2
79+
with:
80+
project_id: ${{ env.GCP_PROJECT_ID }}
81+
install_components: 'kubectl,gke-gcloud-auth-plugin'
82+
83+
- name: Get GKE credentials
84+
run: |
85+
gcloud container clusters get-credentials "${{ env.GKE_CLUSTER_NAME }}" \
86+
--zone "${{ env.GKE_CLUSTER_ZONE }}" \
87+
--project "${{ env.GCP_PROJECT_ID }}"
88+
89+
- name: Install helm
90+
run: |
91+
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
92+
93+
- name: Set up Python
94+
uses: actions/setup-python@v5
95+
with:
96+
python-version: "3.10"
97+
98+
- name: Install Python dependencies
99+
run: |
100+
python3 -m pip install --upgrade pip
101+
python3 -m pip install pyyaml
102+
103+
- name: Run Performance Test Script
104+
run: |
105+
python3 test/perf/run_nightly_perf.py \
106+
--router-config ${{ env.ROUTER_CONFIG }} \
107+
--test-name ${{ env.TEST_NAME }} \
108+
--perf-chart ${{ github.workspace }}/inference-perf/deploy/inference-perf \
109+
--perf-job ${{ env.PERF_JOB }} \
110+
--sim-replicas ${{ env.SIM_REPLICAS }} \
111+
--results-dir test/perf/results/optimized-baseline \
112+
--router-machine-family e2 \
113+
--gcp-project ${{ env.GCP_PROJECT_ID }}
114+
115+
- name: Upload Performance Results
116+
uses: actions/upload-artifact@v4
117+
if: always()
118+
with:
119+
name: epp-perf-results
120+
path: test/perf/results/optimized-baseline/
121+
122+
- name: Commit and push updated results
123+
if: success() && github.ref == 'refs/heads/main'
124+
run: |
125+
git config --global user.name "github-actions[bot]"
126+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
127+
git add test/perf/results/optimized-baseline/
128+
git commit -m "Auto-update EPP nightly performance results [skip ci]" || exit 0
129+
git pull --rebase origin main
130+
git push

0 commit comments

Comments
 (0)