Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci-e2e-openshift.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,8 @@ jobs:
HPA_STABILIZATION_SECONDS: ${{ github.event.inputs.hpa_stabilization_seconds || '240' }}
SKIP_CLEANUP: ${{ github.event.inputs.skip_cleanup || 'false' }}
# Pin llm-d release for deterministic CI behavior
LLM_D_RELEASE: v0.7.0
LLM_D_RELEASE: v0.8.1
LLM_D_ROUTER_VERSION: v0.9.0
GAIE_VERSION: v1.5.0
# PR-specific namespaces for isolation between concurrent PR tests
LLMD_NAMESPACE: llm-d-autoscaler-pr-${{ needs.gate.outputs.pr_number || github.run_id }}
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/ci-pr-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -326,9 +326,10 @@ jobs:
USE_SIMULATOR: "true"
SCALE_TO_ZERO_ENABLED: "false"
CREATE_CLUSTER: "true"
# Emulated Kind: llm-d model serving is deployed by install-epp.sh (GAIE standalone chart + simulator).
# Emulated Kind: llm-d model serving is deployed by install-epp.sh (llm-d-router-standalone chart + simulator).
# Pin llm-d release for deterministic CI behavior
LLM_D_RELEASE: "v0.7.0"
LLM_D_RELEASE: "v0.8.1"
LLM_D_ROUTER_VERSION: "v0.9.0"
# Dual-controller smoke installs a secondary controller via Kustomize; overlay path must be explicit in CI.
WVA_E2E_SECONDARY_OVERLAY_PATH: ${{ github.workspace }}/test/e2e/testdata/secondary-controller
IMG: ${{ steps.build-image.outputs.image }}
Expand Down Expand Up @@ -424,7 +425,8 @@ jobs:
USE_SIMULATOR: "true"
SCALE_TO_ZERO_ENABLED: "true"
CREATE_CLUSTER: "true"
LLM_D_RELEASE: "v0.7.0"
LLM_D_RELEASE: "v0.8.1"
LLM_D_ROUTER_VERSION: "v0.9.0"
DEPLOY_LWS: "true"
IMG: ${{ steps.build-image.outputs.image }}
SKIP_BUILD: "true"
Expand Down
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ ENVIRONMENT ?= kind-emulator
USE_SIMULATOR ?= true
SCALE_TO_ZERO_ENABLED ?= false
SCALER_BACKEND ?= prometheus-adapter # prometheus-adapter (HPA), keda (ScaledObject), or none (skip, use pre-installed backend)
LLM_D_RELEASE ?= v0.7.0
LLM_D_RELEASE ?= v0.8.1
LLM_D_ROUTER_VERSION ?= v0.9.0
GAIE_VERSION ?= v1.5.0
KV_SPARE_TRIGGER ?=
QUEUE_SPARE_TRIGGER ?=
Expand Down Expand Up @@ -216,6 +217,7 @@ deploy-e2e-infra: ## Deploy e2e test infrastructure (WVA + EPP; no model server
fi
@ENVIRONMENT=$(ENVIRONMENT) \
LLM_D_RELEASE=$(LLM_D_RELEASE) \
LLM_D_ROUTER_VERSION=$(LLM_D_ROUTER_VERSION) \
GAIE_VERSION=$(GAIE_VERSION) \
LLMD_NS=$${LLMD_NS:-$(E2E_EMULATED_LLMD_NAMESPACE)} \
WVA_PROJECT=$(CURDIR) \
Expand Down
103 changes: 53 additions & 50 deletions config/samples/hpa/co-ordinator/model-a-epp-values.yaml
Original file line number Diff line number Diff line change
@@ -1,58 +1,61 @@
inferencePool:
# Values overlay for the llm-d-router-standalone chart (oci://ghcr.io/llm-d/charts/llm-d-router-standalone).
# Schema follows the chart's `router:` wrapper introduced with the project
# rebrand (Inference Scheduler β†’ llm-d Router) in llm-d v0.8.0 / chart v0.9.0.
router:
inferencePool:
failureMode: FailOpen
modelServers:
matchLabels:
llm-d.ai/model-id: model-a

inferenceExtension:
image:
registry: ghcr.io
repository: llm-d/llm-d-inference-scheduler
tag: v0.8.0
replicas: 1
failureMode: FailOpen
flags:
v: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
extraServicePorts:
- name: http
port: 80
protocol: TCP
targetPort: 8081
monitoring:
prometheus:
enabled: true
auth:
enabled: false
pluginsConfigFile: model-a-plugins.yaml
pluginsCustomConfig:
model-a-plugins.yaml: |
apiVersion: inference.networking.x-k8s.io/v1alpha1
kind: EndpointPickerConfig
featureGates:
- flowControl
plugins:
- type: queue-scorer
- type: kv-cache-utilization-scorer
- type: prefix-cache-scorer
- type: no-hit-lru-scorer
schedulingProfiles:
- name: default
- name: http
port: 80
protocol: TCP
targetPort: 8081
epp:
image:
registry: ghcr.io
repository: llm-d/llm-d-router-endpoint-picker
tag: v0.9.0
replicas: 1
flags:
v: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
monitoring:
prometheus:
enabled: true
auth:
enabled: false
pluginsConfigFile: model-a-plugins.yaml
pluginsCustomConfig:
model-a-plugins.yaml: |
apiVersion: llm-d.ai/v1alpha1
kind: EndpointPickerConfig
featureGates:
- flowControl
plugins:
- pluginRef: queue-scorer
weight: 2
- pluginRef: kv-cache-utilization-scorer
weight: 2
- pluginRef: prefix-cache-scorer
weight: 3
- pluginRef: no-hit-lru-scorer
weight: 2
sidecar:
- type: queue-scorer
- type: kv-cache-utilization-scorer
- type: prefix-cache-scorer
- type: no-hit-lru-scorer
schedulingProfiles:
- name: default
plugins:
- pluginRef: queue-scorer
weight: 2
- pluginRef: kv-cache-utilization-scorer
weight: 2
- pluginRef: prefix-cache-scorer
weight: 3
- pluginRef: no-hit-lru-scorer
weight: 2
proxy:
args:
- --service-node
- envoy-sidecar
Expand Down
103 changes: 53 additions & 50 deletions config/samples/hpa/co-ordinator/model-b-epp-values.yaml
Original file line number Diff line number Diff line change
@@ -1,58 +1,61 @@
inferencePool:
# Values overlay for the llm-d-router-standalone chart (oci://ghcr.io/llm-d/charts/llm-d-router-standalone).
# Schema follows the chart's `router:` wrapper introduced with the project
# rebrand (Inference Scheduler β†’ llm-d Router) in llm-d v0.8.0 / chart v0.9.0.
router:
inferencePool:
failureMode: FailOpen
modelServers:
matchLabels:
llm-d.ai/model-id: model-b

inferenceExtension:
image:
registry: ghcr.io
repository: llm-d/llm-d-inference-scheduler
tag: v0.8.0
replicas: 1
failureMode: FailOpen
flags:
v: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
extraServicePorts:
- name: http
port: 80
protocol: TCP
targetPort: 8081
monitoring:
prometheus:
enabled: true
auth:
enabled: false
pluginsConfigFile: model-b-plugins.yaml
pluginsCustomConfig:
model-b-plugins.yaml: |
apiVersion: inference.networking.x-k8s.io/v1alpha1
kind: EndpointPickerConfig
featureGates:
- flowControl
plugins:
- type: queue-scorer
- type: kv-cache-utilization-scorer
- type: prefix-cache-scorer
- type: no-hit-lru-scorer
schedulingProfiles:
- name: default
- name: http
port: 80
protocol: TCP
targetPort: 8081
epp:
image:
registry: ghcr.io
repository: llm-d/llm-d-router-endpoint-picker
tag: v0.9.0
replicas: 1
flags:
v: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
monitoring:
prometheus:
enabled: true
auth:
enabled: false
pluginsConfigFile: model-b-plugins.yaml
pluginsCustomConfig:
model-b-plugins.yaml: |
apiVersion: llm-d.ai/v1alpha1
kind: EndpointPickerConfig
featureGates:
- flowControl
plugins:
- pluginRef: queue-scorer
weight: 2
- pluginRef: kv-cache-utilization-scorer
weight: 2
- pluginRef: prefix-cache-scorer
weight: 3
- pluginRef: no-hit-lru-scorer
weight: 2
sidecar:
- type: queue-scorer
- type: kv-cache-utilization-scorer
- type: prefix-cache-scorer
- type: no-hit-lru-scorer
schedulingProfiles:
- name: default
plugins:
- pluginRef: queue-scorer
weight: 2
- pluginRef: kv-cache-utilization-scorer
weight: 2
- pluginRef: prefix-cache-scorer
weight: 3
- pluginRef: no-hit-lru-scorer
weight: 2
proxy:
args:
- --service-node
- envoy-sidecar
Expand Down
10 changes: 6 additions & 4 deletions config/samples/hpa/co-ordinator/poc.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ POC_DIR := config/samples/hpa/co-ordinator
POC_WVA_NS := workload-variant-autoscaler-system
POC_MON_NS := workload-variant-autoscaler-monitoring
GAIE_VERSION ?= v1.5.0
LLM_D_RELEASE ?= v0.8.1

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this used? looks like only LLM_D_ROUTER_VERSION is used

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's used to select the right guides to deploy from the llm-d repo (it's used in the script infra_epp.sh).

LLM_D_ROUTER_VERSION ?= v0.9.0

.PHONY: poc-install
poc-install: ## [POC] Install per-model EPPs, sim workloads, gateway, and Prometheus Adapter rules
Expand All @@ -26,16 +28,16 @@ poc-install: ## [POC] Install per-model EPPs, sim workloads, gateway, and Promet
@echo ""
@echo "--- Step 2: Install model-a EPP (flowControl enabled) ---"
@helm upgrade --install model-a \
oci://registry.k8s.io/gateway-api-inference-extension/charts/standalone \
--version $(GAIE_VERSION) \
oci://ghcr.io/llm-d/charts/llm-d-router-standalone \
--version $(LLM_D_ROUTER_VERSION) \
--namespace $(POC_NS) \
-f $(POC_DIR)/model-a-epp-values.yaml
@echo ""
@echo "--- Step 3: Install model-b EPP (flowControl enabled) ---"
@kubectl delete configmap envoy -n $(POC_NS) --ignore-not-found=true 2>/dev/null; true
@helm upgrade --install model-b \
oci://registry.k8s.io/gateway-api-inference-extension/charts/standalone \
--version $(GAIE_VERSION) \
oci://ghcr.io/llm-d/charts/llm-d-router-standalone \
--version $(LLM_D_ROUTER_VERSION) \
--namespace $(POC_NS) \
-f $(POC_DIR)/model-b-epp-values.yaml
@echo ""
Expand Down
6 changes: 3 additions & 3 deletions deploy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ Options:
-h, --help Show help
```

**llm-d stack** (gateway, EPP, ModelService): deploy using the [llm-d guides](https://github.com/llm-d/llm-d/tree/main/guides/optimized-baseline) directly. For EPP-only setup (GAIE standalone chart + tokenreview RBAC), use `deploy/install-epp.sh` after `install.sh`.
**llm-d stack** (gateway, EPP, ModelService): deploy using the [llm-d guides](https://github.com/llm-d/llm-d/tree/main/guides/optimized-baseline) directly. For EPP-only setup (llm-d-router-standalone chart + tokenreview RBAC), use `deploy/install-epp.sh` after `install.sh`.

**Environment variables** (see [Configuration Reference](#configuration-reference)):

Expand Down Expand Up @@ -214,8 +214,8 @@ export DEPLOY_OPERATIONAL_DASHBOARD=true # Deploy Grafana and operational das

```bash
./deploy/install.sh -e kubernetes
# EPP (GAIE standalone chart + RBAC):
LLM_D_RELEASE=v0.7.0 GAIE_VERSION=v1.5.0 LLMD_NS=llm-d-optimized-baseline \
# EPP (llm-d-router-standalone chart + RBAC):
LLM_D_RELEASE=v0.8.1 LLM_D_ROUTER_VERSION=v0.9.0 GAIE_VERSION=v1.5.0 LLMD_NS=llm-d-optimized-baseline \
./deploy/install-epp.sh
# Model server: follow llm-d/llm-d guides/optimized-baseline
```
Expand Down
3 changes: 2 additions & 1 deletion deploy/ci-e2e-openshift/deploy-infrastructure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@ kubectl patch deployment "$MODELSERVICE" -n "$LLMD_NAMESPACE" --type=json \
[ -n "${VLLM_MAX_NUM_SEQS:-}" ] && kubectl patch deployment "$MODELSERVICE" -n "$LLMD_NAMESPACE" --type=json \
-p="[{\"op\":\"add\",\"path\":\"/spec/template/spec/containers/0/args/-\",\"value\":\"--max-num-seqs=$VLLM_MAX_NUM_SEQS\"}]"

# EPP / scheduler via install-epp.sh (handles GAIE standalone chart +
# EPP / scheduler via install-epp.sh (handles llm-d-router-standalone chart +
# flowControl feature gate + tokenreview RBAC). llm-d is already
# checked out at $GITHUB_WORKSPACE/llm-d so the script reuses it.
WVA_PROJECT="$GITHUB_WORKSPACE" \
LLMD_NS="$LLMD_NAMESPACE" \
GAIE_VERSION="$GAIE_VERSION" \
LLM_D_RELEASE="$LLM_D_RELEASE" \
LLM_D_ROUTER_VERSION="$LLM_D_ROUTER_VERSION" \
ENVIRONMENT=openshift \
ENABLE_SCALE_TO_ZERO=true \
SKIP_CLUSTER_CRDS=true \
Expand Down
15 changes: 12 additions & 3 deletions deploy/install-epp.sh
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
#!/usr/bin/env bash
#
# EPP infrastructure setup for all environments (kind-emulator, kubernetes, openshift).
# Installs Gateway API CRDs, GAIE CRDs, and the GAIE standalone chart (EPP + InferencePool).
# Installs Gateway API CRDs, GAIE CRDs, and the llm-d-router-standalone chart (EPP + InferencePool).
# Three independent version axes:
# - LLM_D_RELEASE pins the upstream llm-d/llm-d release whose guide
# values files we fetch (router/base.values.yaml etc.)
# - LLM_D_ROUTER_VERSION pins the llm-d-router chart + EPP image (released
# from llm-d/llm-d-router on its own cadence)
# - GAIE_VERSION pins the kubernetes-sigs Gateway API Inference
# Extension CRDs (separate project)
# For llm-d model serving, see the llm-d project guides at https://github.com/llm-d/llm-d.
#
# Usage:
# LLM_D_RELEASE=v0.8.0 GAIE_VERSION=v1.5.0 LLMD_NS=llm-d-sim ./deploy/install-epp.sh
# LLM_D_RELEASE=v0.8.1 LLM_D_ROUTER_VERSION=v0.9.0 GAIE_VERSION=v1.5.0 \
# LLMD_NS=llm-d-sim ./deploy/install-epp.sh
#

set -e
set -o pipefail

WVA_PROJECT=${WVA_PROJECT:-$PWD}
LLM_D_RELEASE=${LLM_D_RELEASE:-v0.8.0}
LLM_D_RELEASE=${LLM_D_RELEASE:-v0.8.1}
LLM_D_ROUTER_VERSION=${LLM_D_ROUTER_VERSION:-v0.9.0}
GAIE_VERSION=${GAIE_VERSION:-v1.5.0}
LLMD_NS=${LLMD_NS:-llm-d-sim}
ENVIRONMENT=${ENVIRONMENT:-kind-emulator}
Expand Down
2 changes: 1 addition & 1 deletion deploy/kind-emulator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ This deploys:

- Kind cluster with 3 nodes, emulated GPUs (mixed vendors)
- WVA controller
- llm-d EPP (GAIE standalone)
- llm-d EPP (llm-d-router-standalone chart)
- Prometheus monitoring + Prometheus Adapter

To also deploy a simulator model service for manual testing:
Expand Down
2 changes: 1 addition & 1 deletion deploy/kind-emulator/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# Configuration (Kind emulator). EPP deploy is via deploy/install-epp.sh β€” set LLM_D_RELEASE / GAIE_VERSION / LLMD_NS there or in Makefile.
# Configuration (Kind emulator). EPP deploy is via deploy/install-epp.sh β€” set LLM_D_RELEASE / LLM_D_ROUTER_VERSION / GAIE_VERSION / LLMD_NS there or in Makefile.
WVA_PROJECT=${WVA_PROJECT:-$PWD}
NAMESPACE_SUFFIX="sim"

Expand Down
2 changes: 1 addition & 1 deletion deploy/kubernetes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ This script automates the complete deployment process on kubernetes cluster incl
export HF_TOKEN="your-hf-token-here"

# Optional: Customize deployment (basename under llm-d guides/; llm-d main uses optimized-baseline)
export GUIDE_NAME="optimized-baseline" # Default for LLM_D_RELEASE v0.7.0+
export GUIDE_NAME="optimized-baseline" # Default for LLM_D_RELEASE v0.7.0+ (current default v0.8.1)
export MODEL_ID="unsloth/Meta-Llama-3.1-8B" # Default
export WVA_IMAGE_REPO="ghcr.io/llm-d/llm-d-workload-variant-autoscaler" # Default
export WVA_IMAGE_TAG="latest" # Default
Expand Down
Loading
Loading