Skip to content

Nightly - Router Perf Test (Optimized Baseline 10k-1k) #1

Nightly - Router Perf Test (Optimized Baseline 10k-1k)

Nightly - Router Perf Test (Optimized Baseline 10k-1k) #1

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/