Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b3228a2dc | ||
|
|
4817d4a8e7 | ||
|
|
0378382a92 | ||
|
|
08580e7ccf | ||
|
|
8868aae6b1 | ||
|
|
fb8adc5c06 | ||
|
|
7351da512b | ||
|
|
1e78043b2c | ||
|
|
352c64f4c1 | ||
|
|
0922f5b435 | ||
|
|
5d9a48fc70 | ||
|
|
5d1579e361 | ||
|
|
0488b77d89 | ||
|
|
d3a962c33b | ||
|
|
105c125698 | ||
|
|
0a0ccfcb60 | ||
|
|
c8ce53c72c | ||
|
|
9618e799ba | ||
|
|
cb3f077dba | ||
|
|
69646b9e99 | ||
|
|
8b991a7ad7 | ||
|
|
dac05b62b3 | ||
|
|
d356c31675 | ||
|
|
80072047ab |
@@ -0,0 +1,71 @@
|
||||
name: CI | Sync vLLM version in READMEs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
paths:
|
||||
- "Dockerfile"
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
sync_version:
|
||||
runs-on: ubuntu-latest
|
||||
name: Check README version matches Dockerfile and update if needed
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract vLLM version from Dockerfile and sync READMEs
|
||||
run: |
|
||||
echo "Extracting vLLM version from Dockerfile..."
|
||||
dockerfile_version=$(grep -oP 'vllm(?:\[[\w,]+\])?==\K[\d.]+' Dockerfile | head -1)
|
||||
|
||||
if [ -z "$dockerfile_version" ]; then
|
||||
echo "ERROR: Could not extract vLLM version from Dockerfile."
|
||||
exit 1
|
||||
fi
|
||||
echo "Dockerfile vLLM version: $dockerfile_version"
|
||||
echo "VLLM_VERSION=$dockerfile_version" >> $GITHUB_ENV
|
||||
|
||||
updated=0
|
||||
for readme in README.md .runpod/README.md; do
|
||||
if [ ! -f "$readme" ]; then
|
||||
echo "Skipping $readme (not found)"
|
||||
continue
|
||||
fi
|
||||
|
||||
readme_version=$(grep -oP 'Current vLLM version: \[\K[\d.]+' "$readme" || echo "")
|
||||
echo "$readme current version: ${readme_version:-not found}"
|
||||
|
||||
if [ "$readme_version" = "$dockerfile_version" ]; then
|
||||
echo "$readme is already up to date."
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "Updating $readme from $readme_version to $dockerfile_version..."
|
||||
sed -i "s|Current vLLM version: \[${readme_version}\](https://github.com/vllm-project/vllm/releases/tag/v${readme_version})|Current vLLM version: [${dockerfile_version}](https://github.com/vllm-project/vllm/releases/tag/v${dockerfile_version})|g" "$readme"
|
||||
updated=1
|
||||
done
|
||||
|
||||
echo "UPDATED=$updated" >> $GITHUB_ENV
|
||||
|
||||
- name: Create Pull Request
|
||||
if: env.UPDATED == '1'
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: "docs: sync vLLM version to ${{ env.VLLM_VERSION }} in READMEs"
|
||||
title: "docs: sync vLLM version to ${{ env.VLLM_VERSION }} in READMEs"
|
||||
body: |
|
||||
The vLLM version in the Dockerfile has been updated to `${{ env.VLLM_VERSION }}`.
|
||||
|
||||
This PR syncs the version badge/link in:
|
||||
- `README.md`
|
||||
- `.runpod/README.md`
|
||||
branch: docs/sync-vllm-version-${{ env.VLLM_VERSION }}
|
||||
labels: documentation
|
||||
+12
-1
@@ -6,7 +6,7 @@ Run LLMs using [vLLM](https://docs.vllm.ai) with an OpenAI-compatible API
|
||||
|
||||
[](https://www.runpod.io/console/hub/runpod-workers/worker-vllm)
|
||||
|
||||
Current vLLM version: [0.20.2](https://github.com/vllm-project/vllm/releases/tag/v0.20.2)
|
||||
Current vLLM version: [0.22.1](https://github.com/vllm-project/vllm/releases/tag/v0.22.1)
|
||||
|
||||
---
|
||||
|
||||
@@ -33,6 +33,17 @@ All behaviour is controlled through environment variables:
|
||||
|
||||
**Pass any vLLM engine arg** not listed above by setting an env var with the **UPPERCASED** field name (e.g. `MAX_MODEL_LEN=4096`, `ENABLE_CHUNKED_PREFILL=true`). The worker auto-discovers all `AsyncEngineArgs` fields from env. See the [vLLM engine args docs](https://docs.vllm.ai/en/latest/configuration/engine_args) for all available options.
|
||||
|
||||
**Configuration file:** You can also supply a `config.yaml` instead of (or alongside) env vars. Mount it at `/vllm_config.yaml` in the container, or set `VLLM_CONFIG_FILE` to a custom path. Use the same key names as `vllm serve` — hyphens and underscores both work:
|
||||
|
||||
```yaml
|
||||
model: meta-llama/Llama-3.1-8B-Instruct
|
||||
max-model-len: 8192
|
||||
gpu-memory-utilization: 0.90
|
||||
quantization: awq
|
||||
```
|
||||
|
||||
Environment variables always override config file values.
|
||||
|
||||
For complete configuration options, see the [full configuration documentation](https://github.com/runpod-workers/worker-vllm/blob/main/docs/configuration.md).
|
||||
|
||||
### Specify Transformers Version
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@
|
||||
"input": {
|
||||
"prompt": "Write a short poem about artificial intelligence."
|
||||
},
|
||||
"timeout": 30000
|
||||
"timeout": 300000
|
||||
},
|
||||
{
|
||||
"name": "openai_messages_test",
|
||||
@@ -26,11 +26,11 @@
|
||||
"temperature": 0.1
|
||||
}
|
||||
},
|
||||
"timeout": 30000
|
||||
"timeout": 300000
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"gpuTypeId": "NVIDIA GeForce RTX 4090",
|
||||
"gpuTypeId": "NVIDIA L40",
|
||||
"gpuCount": 1,
|
||||
"env": [
|
||||
{
|
||||
@@ -38,6 +38,6 @@
|
||||
"value": "HuggingFaceTB/SmolLM2-135M-Instruct"
|
||||
}
|
||||
],
|
||||
"allowedCudaVersions": ["12.9", "12.8", "12.7", "12.6", "12.5"]
|
||||
"allowedCudaVersions": ["13.0"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ Deploy OpenAI-Compatible Blazing-Fast LLM Endpoints powered by the [vLLM](https:
|
||||
|
||||

|
||||
|
||||
Current vLLM version: [0.20.2](https://github.com/vllm-project/vllm/releases/tag/v0.20.2)
|
||||
Current vLLM version: [0.22.1](https://github.com/vllm-project/vllm/releases/tag/v0.22.1)
|
||||
|
||||
|
||||
> Check out our Load Balancer implementation here: [vLLM Load Balancer](https://github.com/runpod-workers/vllm-loadbalancer-ep)
|
||||
@@ -78,6 +78,20 @@ Configure worker-vllm using environment variables:
|
||||
|
||||
Any env var whose name matches a valid `AsyncEngineArgs` field (uppercased) is applied automatically. Backward-compat aliases: `MODEL_NAME`, `TOKENIZER_NAME`, `MAX_CONTEXT_LEN_TO_CAPTURE`. This lets you configure any vLLM option without waiting for explicit worker support.
|
||||
|
||||
### Configuration File (config.yaml)
|
||||
|
||||
As an alternative to environment variables, you can supply a `config.yaml` file using the same key names as `vllm serve` (hyphens or underscores both work):
|
||||
|
||||
```yaml
|
||||
model: meta-llama/Llama-3.1-8B-Instruct
|
||||
max-model-len: 8192
|
||||
gpu-memory-utilization: 0.90
|
||||
quantization: awq
|
||||
tensor-parallel-size: 2
|
||||
```
|
||||
|
||||
Mount the file into the container at `/vllm_config.yaml`, or point to a custom path with the `VLLM_CONFIG_FILE` env var. Environment variables always take precedence over config file values.
|
||||
|
||||
For the complete list of all available environment variables, examples, and detailed descriptions: **[Configuration](docs/configuration.md)**
|
||||
|
||||
### Specify Transformers Version
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
ray
|
||||
pandas
|
||||
pyarrow
|
||||
runpod==1.9.0
|
||||
runpod==1.9.1
|
||||
huggingface-hub
|
||||
lmcache==0.4.5
|
||||
packaging>=24.2
|
||||
@@ -11,5 +11,5 @@ pydantic-settings
|
||||
hf-transfer
|
||||
transformers>=5
|
||||
bitsandbytes>=0.45.0
|
||||
kernels
|
||||
kernels<0.15
|
||||
torch-c-dlpack-ext
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
model: meta-llama/Llama-3.1-8B-Instruct
|
||||
gpu-memory-utilization: 0.95
|
||||
max-model-len: 8192
|
||||
dtype: auto
|
||||
trust-remote-code: true
|
||||
quantization: fp8
|
||||
kv-cache-dtype: fp8
|
||||
enforce-eager: false
|
||||
enable-prefix-caching: true
|
||||
speculative-config: '{"model":"RedHatAI/Llama-3.1-8B-Instruct-speculator.eagle3","method":"eagle3","num_speculative_tokens":3}'
|
||||
@@ -0,0 +1,10 @@
|
||||
model: Qwen/Qwen3-8B
|
||||
gpu-memory-utilization: 0.95
|
||||
max-model-len: 8192
|
||||
dtype: auto
|
||||
trust-remote-code: true
|
||||
quantization: fp8
|
||||
kv-cache-dtype: fp8
|
||||
enforce-eager: false
|
||||
enable-prefix-caching: true
|
||||
speculative-config: '{"model":"RedHatAI/Qwen3-8B-speculator.eagle3","method":"eagle3","num_speculative_tokens":3}'
|
||||
@@ -404,6 +404,23 @@ def _resolve_cached_model_path(model_name: str) -> str:
|
||||
return resolved
|
||||
|
||||
|
||||
def _get_args_from_config_file() -> dict:
|
||||
"""Load engine args from a vLLM-style config.yaml.
|
||||
|
||||
Checks VLLM_CONFIG_FILE env var, then falls back to /vllm_config.yaml.
|
||||
Keys use the same long-form names as vllm serve (hyphens converted to underscores).
|
||||
"""
|
||||
import yaml
|
||||
path = os.getenv("VLLM_CONFIG_FILE", "/vllm_config.yaml")
|
||||
if not os.path.exists(path):
|
||||
return {}
|
||||
with open(path) as f:
|
||||
raw = yaml.safe_load(f) or {}
|
||||
normalized = {k.replace("-", "_"): v for k, v in raw.items()}
|
||||
logging.info("Loaded engine args from config file %s: %s", path, list(normalized.keys()))
|
||||
return normalized
|
||||
|
||||
|
||||
def get_local_args():
|
||||
"""
|
||||
Retrieve local arguments from a JSON file.
|
||||
@@ -429,6 +446,9 @@ def get_engine_args():
|
||||
# Start with worker custom defaults (only where we differ from vLLM)
|
||||
args = dict(DEFAULT_ARGS)
|
||||
|
||||
# Config file values sit above defaults but below env vars
|
||||
args.update(_get_args_from_config_file())
|
||||
|
||||
# Auto-discover: every AsyncEngineArgs field from env UPPERCASED (e.g. MAX_MODEL_LEN)
|
||||
args.update(_get_args_from_env_auto_discover())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user