Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
547af56
feat: add external vLLM endpoint support with auto-detection
maryamtahhan Mar 30, 2026
05bc193
fix: skip DUT connection entirely in external mode
maryamtahhan Mar 30, 2026
ed772ae
feat: add vLLM deployment mode to test metadata
maryamtahhan Mar 30, 2026
aa398e8
docs: clarify load generator configuration required in external mode
maryamtahhan Mar 30, 2026
1c775f5
feat: add environment variable support for vLLM API key
maryamtahhan Mar 30, 2026
a671ee8
fix: resolve external mode issues with DUT connection and model name
maryamtahhan Mar 30, 2026
53dc1a4
fix: address PR review comments
maryamtahhan Mar 30, 2026
7124ec1
fix: resolve __AUTO_DETECT__ in paths and metadata for external mode
maryamtahhan Mar 30, 2026
f0e2dbc
feat: add automatic metrics detection and dashboard support for exter…
maryamtahhan Apr 3, 2026
6160356
feat: enhance Client Metrics dashboard with advanced comparison metho…
maryamtahhan Apr 3, 2026
353a1f1
feat: add external endpoint support to Server Metrics dashboard
maryamtahhan Apr 3, 2026
5361c93
fix: copy guidellm.log to final results and cleanup temp directory
maryamtahhan Apr 3, 2026
2aae448
fix: enable unbuffered output for metrics collector logs
maryamtahhan Apr 3, 2026
8fd1a91
fix: add graceful shutdown for metrics collector
maryamtahhan Apr 3, 2026
5538605
fix: remove undefined variable references in concurrent load validation
maryamtahhan Apr 7, 2026
28370b1
feat: add API key support for external vLLM endpoints in GuideLLM
maryamtahhan Apr 7, 2026
fdfee00
fix: correct API key source type matching in setup task
maryamtahhan Apr 7, 2026
c18d6c1
fix: address Coderabbit AI review comments for PR #85
maryamtahhan Apr 7, 2026
6d7c3fc
fix: address additional Coderabbit AI review comments
maryamtahhan Apr 7, 2026
bd28800
fix: use endpoint URL instead of 'unknown' in external mode legend
maryamtahhan Apr 7, 2026
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
40 changes: 39 additions & 1 deletion automation/test-execution/ansible/inventory/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ export LOADGEN_HOSTNAME=192.168.1.200
export ANSIBLE_SSH_USER=ec2-user
export ANSIBLE_SSH_KEY=~/.ssh/my-key.pem
export HF_TOKEN=hf_xxxxx # If using gated models

# Optional: Use external vLLM endpoint instead of managed container
export VLLM_ENDPOINT_MODE=external
export VLLM_ENDPOINT_URL=http://my-vllm-instance.example.com:8000
export VLLM_API_KEY_ENABLED=true # If endpoint requires authentication
export VLLM_API_KEY=your-api-key
```

The inventory file automatically uses these environment variables with sensible defaults if not set.
Expand Down Expand Up @@ -198,6 +204,38 @@ The framework will automatically skip token setup for these models.

### Scenario 3: External vLLM Endpoint (AWS/K8s)

**Option A: Environment Variables (Recommended)**

```bash
# Load generator connection (required - GuideLLM runs here)
export LOADGEN_HOSTNAME=192.168.1.200 # or your load generator hostname/IP
export ANSIBLE_SSH_USER=ec2-user
export ANSIBLE_SSH_KEY=~/.ssh/my-key.pem

# External vLLM endpoint (replaces DUT configuration)
export VLLM_ENDPOINT_MODE=external
export VLLM_ENDPOINT_URL=http://my-vllm-lb.example.com:8000

# Optional: If endpoint requires API key authentication
export VLLM_API_KEY_ENABLED=true
export VLLM_API_KEY=your-api-key

# Optional: HuggingFace token (if needed)
export HF_TOKEN=hf_xxxxx
```

**Note:** In external mode, you only need load generator access. DUT connection is not required since vLLM is already running externally.

Then run tests **without specifying `test_model`** - it will be auto-detected from the endpoint:

```bash
ansible-playbook -i inventory/hosts.yml llm-benchmark-concurrent-load.yml \
-e "base_workload=chat" \
-e "requested_cores=16"
```

**Option B: Edit Configuration File**

```yaml
# group_vars/all/endpoints.yml
vllm_endpoint:
Expand All @@ -210,7 +248,7 @@ vllm_endpoint:
env_var: "VLLM_API_KEY"
```

Then run tests normally - playbooks will skip vLLM container management.
Then run tests normally - playbooks will skip vLLM container management and connect to your external endpoint.

### Scenario 4: Host-Based Execution (No Containers)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,25 @@ vllm_endpoint:
# Mode: "managed" (default) or "external"
# - managed: Ansible starts/stops vLLM container on DUT (traditional behavior)
# - external: Use existing vLLM endpoint (skip container management)
mode: "managed"
# Can be set via environment variable: export VLLM_ENDPOINT_MODE=external
mode: "{{ lookup('env', 'VLLM_ENDPOINT_MODE') | default('managed', true) }}"

# External endpoint configuration (only used when mode=external)
external:
# Full URL to vLLM endpoint (required when mode=external)
# Can be set via environment variable:
# export VLLM_ENDPOINT_URL=http://my-vllm-instance.example.com:8000
# Examples:
# - http://my-vllm-instance.example.com:8000
# - https://vllm-prod.company.com
# - http://10.0.1.50:8000 (direct IP)
# - http://vllm-lb.k8s.local:8000 (Kubernetes LoadBalancer)
url: null
url: "{{ lookup('env', 'VLLM_ENDPOINT_URL') | default(None, true) }}"

# Optional API key authentication for secured endpoints
api_key:
enabled: false
# Can be enabled via environment variable: export VLLM_API_KEY_ENABLED=true
enabled: "{{ lookup('env', 'VLLM_API_KEY_ENABLED') | default('false', true) | bool }}"
source: "env" # Options: env, file, vault, prompt
env_var: "VLLM_API_KEY" # Used when source=env
file_path: null # Used when source=file (e.g., /etc/secrets/vllm-key)
Expand Down
Loading
Loading