Nightly - Router Perf Test (Optimized Baseline 10k-1k) #11
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: Nightly - Router Perf Test (Optimized Baseline 10k-1k) | |
| on: | |
| schedule: | |
| - cron: '0 9 * * *' # Run daily at 09:00 UTC | |
| workflow_dispatch: # Enable manual triggering from UI | |
| inputs: | |
| gcp_project_id: | |
| description: 'GCP Project ID' | |
| default: 'llm-d-scale' | |
| required: true | |
| type: string | |
| gke_cluster_name: | |
| description: 'GKE Cluster Name' | |
| default: 'llm-d-ap-usc1-router-perf' | |
| required: true | |
| type: string | |
| gke_cluster_zone: | |
| description: 'GKE Cluster Zone/Region' | |
| default: 'us-central1' | |
| required: true | |
| type: string | |
| sim_replicas: | |
| description: 'Number of simulator replicas' | |
| default: '10' | |
| required: true | |
| type: string | |
| router_config: | |
| description: 'Path to consolidated router Helm values configuration' | |
| default: 'test/perf/config/router-configs/optimized-baseline.yaml' | |
| required: true | |
| type: string | |
| test_name: | |
| description: 'Test identifier name' | |
| default: 'optimized-baseline-job1' | |
| required: true | |
| type: string | |
| perf_job: | |
| description: 'Performance job configuration path' | |
| default: 'test/perf/config/shared_prefix_job1.yaml' | |
| required: true | |
| type: string | |
| gcs_bucket: | |
| description: 'GCS bucket name for storing performance test results' | |
| default: 'llm-d-router-perf-results' | |
| required: true | |
| type: string | |
| permissions: | |
| contents: read | |
| actions: read | |
| jobs: | |
| run-perf-benchmark: | |
| runs-on: ubuntu-latest | |
| env: | |
| # This cluster must have the Gateway API Inference Extension CRDs | |
| # already installed in it. | |
| GCP_PROJECT_ID: ${{ inputs.gcp_project_id || 'llm-d-scale' }} | |
| GKE_CLUSTER_NAME: ${{ inputs.gke_cluster_name || 'llm-d-ap-usc1-router-perf' }} | |
| GKE_CLUSTER_ZONE: ${{ inputs.gke_cluster_zone || 'us-central1' }} | |
| SIM_REPLICAS: ${{ inputs.sim_replicas || '10' }} | |
| ROUTER_CONFIG: ${{ inputs.router_config || 'test/perf/config/router-configs/optimized-baseline.yaml' }} | |
| TEST_NAME: ${{ inputs.test_name || 'optimized-baseline-job1' }} | |
| PERF_JOB: ${{ inputs.perf_job || 'test/perf/config/shared_prefix_job1.yaml' }} | |
| GCS_BUCKET: ${{ inputs.gcs_bucket || 'llm-d-router-perf-results' }} | |
| HF_TOKEN: ${{ secrets.HF_TOKEN }} | |
| steps: | |
| - name: Checkout llm-d/llm-d-router | |
| uses: actions/checkout@v7 | |
| - name: Checkout kubernetes-sigs/inference-perf | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: kubernetes-sigs/inference-perf | |
| path: inference-perf | |
| - name: Authenticate to Google Cloud | |
| uses: google-github-actions/auth@v3 | |
| with: | |
| credentials_json: ${{ secrets.GKE_SA_KEY }} | |
| - name: Set up gcloud CLI and kubectl | |
| uses: google-github-actions/setup-gcloud@v3 | |
| with: | |
| project_id: ${{ env.GCP_PROJECT_ID }} | |
| install_components: 'kubectl,gke-gcloud-auth-plugin' | |
| - name: Get GKE credentials | |
| run: | | |
| gcloud container clusters get-credentials "${{ env.GKE_CLUSTER_NAME }}" \ | |
| --zone "${{ env.GKE_CLUSTER_ZONE }}" \ | |
| --project "${{ env.GCP_PROJECT_ID }}" | |
| - name: Install helm | |
| run: | | |
| curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | |
| - name: Set up Python | |
| uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.10" | |
| - name: Install Graphviz | |
| run: | | |
| sudo apt-get update && sudo apt-get install -y graphviz | |
| - name: Install Python dependencies | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install pyyaml | |
| - name: Run Performance Test Script | |
| run: | | |
| python3 test/perf/run_nightly_perf.py \ | |
| --router-config ${{ env.ROUTER_CONFIG }} \ | |
| --test-name ${{ env.TEST_NAME }} \ | |
| --perf-chart ${{ github.workspace }}/inference-perf/deploy/inference-perf \ | |
| --perf-job ${{ env.PERF_JOB }} \ | |
| --sim-replicas ${{ env.SIM_REPLICAS }} \ | |
| --results-dir test/perf/results/optimized-baseline \ | |
| --router-machine-family e2 \ | |
| --gcp-project ${{ env.GCP_PROJECT_ID }} \ | |
| --collect-pprof-profiles \ | |
| --gcs-bucket ${{ env.GCS_BUCKET }} | |
| - name: Upload Performance Results Artifact | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: epp-perf-results | |
| path: test/perf/results/optimized-baseline/ |