Compare commits

..
43 Commits
Author SHA1 Message Date
Marut PandyaandGitHub ce47c41f4a Merge pull request #125 from runpod-workers/up-0.6.3
update vllm
2024-10-15 17:04:20 -07:00
pandyamarut c03ecc42fe update vllm
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-10-15 16:49:41 -07:00
Dean QuiñanolaandGitHub ae56b9f43d Merge pull request #123 from runpod-workers/dependency-update-refactored 2024-10-13 20:23:33 -07:00
Dean QuiñanolaandGitHub 891699be1e Merge pull request #124 from runpod-workers/readme-correction 2024-10-13 20:23:05 -07:00
Dean QuiñanolaandGitHub c28aa02576 Update README.md
v1.5.0 not v15
2024-10-12 17:11:59 -07:00
Dean QuiñanolaandGitHub eba20c0704 Update CI-runpod_dep.yml
Dependency has changed to `runpod~=<version>` and not `runpod==<version>`
2024-10-12 16:47:31 -07:00
Dean QuiñanolaandGitHub 850c686538 Merge pull request #120 from runpod-workers/runpod-v1.7-and-up
Update requirements.txt to support runpod-python 1.7.*
2024-10-08 10:52:20 -07:00
Dean QuiñanolaandGitHub de2876e659 Update requirements.txt 2024-10-08 10:48:10 -07:00
Marut PandyaandGitHub d3ee3236c0 Merge pull request #118 from runpod-workers/up-wc
update worker-config
2024-10-01 11:23:02 -07:00
pandyamarut 0781e93054 update worker-config
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-10-01 11:21:27 -07:00
Marut PandyaandGitHub 251e807012 Update README.md 2024-10-01 11:17:30 -07:00
Marut PandyaandGitHub 29346769ed Merge pull request #117 from runpod-workers/up-0.6.2
update vllm
2024-10-01 11:05:40 -07:00
pandyamarut 1420091588 update vll
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-27 19:23:50 -07:00
Marut PandyaandGitHub d46adeaee9 Merge pull request #110 from runpod-workers/up-0.6.1
update vllm v0.6.1
2024-09-16 15:12:50 -07:00
pandyamarut 5c0dca44bd update
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-16 15:01:21 -07:00
pandyamarut cc301ac123 update
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-16 15:00:01 -07:00
pandyamarut 2ac6a0108f update vllm v0.6.0
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-16 14:55:40 -07:00
Marut PandyaandGitHub b1554ea10f Merge pull request #109 from runpod-workers/0.5.5-update
[Update] Docs, bug fix.
2024-09-06 12:36:09 -07:00
pandyamarut 0d794a3914 fix
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-06 12:26:09 -07:00
pandyamarut 3dad3a754c update vllm
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-06 12:21:34 -07:00
Marut PandyaandGitHub 44cef385df Merge pull request #108 from runpod-workers/cmpl-htf
[Bug]fix oai completion api error
2024-09-06 11:06:33 -07:00
pandyamarut 814f50af38 fix oai completion api error
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-09-06 11:03:47 -07:00
Marut PandyaandGitHub f3a530b7fe Merge pull request #107 from runpod-workers/pandyamarut-patch-1
Update README.md
2024-08-28 23:32:48 -07:00
Marut PandyaandGitHub cdf78e7c89 Update README.md 2024-08-28 23:32:36 -07:00
Marut PandyaandGitHub ab40d9c9a8 Merge pull request #106 from runpod-workers/up-0.5.5
update vllm version 0.5.5
2024-08-28 23:31:15 -07:00
pandyamarut 3293245c81 update tags
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-08-28 23:28:39 -07:00
pandyamarut 5e1c8c8128 update vllm version 0.5.5
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-08-28 22:46:45 -07:00
Marut PandyaandGitHub 286d6ba702 Merge pull request #102 from carlson-svg/main
Add human readable worker-config.json
2024-08-26 20:22:47 -07:00
carlson-svg 8d734f8340 Merge branch 'add-worker-config' 2024-08-26 01:25:09 -07:00
carlson-svg 4fa4a8e0e6 added to worker config docs to table of contents + added side note 2024-08-26 01:20:18 -07:00
carlson-svg 39ce8a64c0 initial documentation for worker-config.json 2024-08-22 15:40:54 -07:00
carlson-svg 825ef25b60 changed to minimumCudaVersion to camel case 2024-08-21 12:47:48 -07:00
carlson-svg 1e9aeb6e8f adding "minimum_cuda_version" to each version 2024-08-21 12:44:45 -07:00
carlson-svg e6172dddd4 took out space in imageName from version 0.5.4 2024-08-19 15:17:20 -07:00
carlson-svg 21a1e138b4 updated version of human readable config 2024-08-18 23:57:19 -07:00
carlson-svg a40e7803ee converted to human readable format 2024-08-18 23:24:40 -07:00
CarlsonandGitHub 5e245793bc Merge pull request #1 from carlson-svg/add-worker-config
v0 worker-config
2024-08-13 20:43:47 -07:00
Marut PandyaandGitHub 2111c9e7a5 Update README.md 2024-08-12 21:02:43 -07:00
carlson-svg 0ae11ea6df v0 worker-config 2024-08-09 15:10:08 -07:00
Marut PandyaandGitHub 7f46582949 Merge pull request #96 from runpod-workers/rel-v0.5.4
update vllm version 0.5.4
2024-08-09 15:01:16 -07:00
Marut PandyaandGitHub 571ef2b805 Update README.md 2024-08-09 14:58:46 -07:00
pandyamarut 967eaba573 change to float
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-08-09 14:41:07 -07:00
pandyamarut 9cb9336cf5 update vllm version 0.5.4
Signed-off-by: pandyamarut <pandyamarut@gmail.com>
2024-08-09 12:01:42 -07:00
8 changed files with 1086 additions and 32 deletions
+27 -10
View File
@@ -19,32 +19,49 @@ jobs:
- name: Check for new package version and update
run: |
# Get current version
current_version=$(grep -oP 'runpod==\K[^"]+' ./builder/requirements.txt)
echo "Fetching the current runpod version from requirements.txt..."
# Get current version, allowing both == and ~= in the search pattern
current_version=$(grep -oP 'runpod[~=]{1,2}\K[^"]+' ./builder/requirements.txt)
echo "Current version: $current_version"
# Get new version
# Extract major and minor from current version
current_major_minor=$(echo $current_version | cut -d. -f1,2)
echo "Current major.minor: $current_major_minor"
echo "Fetching the latest runpod version from PyPI..."
# Get new version from PyPI
new_version=$(curl -s https://pypi.org/pypi/runpod/json | jq -r .info.version)
echo "NEW_VERSION_ENV=$new_version" >> $GITHUB_ENV
echo "New version: $new_version"
# Extract major and minor from new version
new_major_minor=$(echo $new_version | cut -d. -f1,2)
echo "New major.minor: $new_major_minor"
if [ -z "$new_version" ]; then
echo "Failed to fetch the new version."
echo "ERROR: Failed to fetch the new version from PyPI."
exit 1
fi
# Check if the version is already up-to-date
if [ "$current_version" = "$new_version" ]; then
echo "The package version is already up-to-date."
# Check if the major or minor version is different
if [ "$current_major_minor" = "$new_major_minor" ]; then
echo "No update needed. The new version ($new_major_minor) is within the allowed range (~= $current_major_minor)."
exit 0
fi
# Update requirements.txt
sed -i "s/runpod==.*/runpod==$new_version/" ./builder/requirements.txt
echo "New major/minor detected ($new_major_minor). Updating requirements.txt..."
# Update requirements.txt, preserving the existing constraint type (~= or ==)
sed -i "s/runpod[~=][^ ]*/runpod~=$new_version/" ./builder/requirements.txt
echo "requirements.txt has been updated."
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Update package version
commit-message: Update runpod package version
title: Update runpod package version
body: The package version has been updated to ${{ env.NEW_VERSION_ENV }}
branch: runpod-package-update
+1 -1
View File
@@ -12,7 +12,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
python3 -m pip install --upgrade -r /requirements.txt
# Install vLLM (switching back to pip installs since issues that required building fork are fixed and space optimization is not as important since caching) and FlashInfer
RUN python3 -m pip install vllm==0.5.3.post1 && \
RUN python3 -m pip install vllm==0.6.3 && \
python3 -m pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.3
# Setup for Option 2: Building the Image with the Model included
+91 -3
View File
@@ -18,8 +18,9 @@ Deploy OpenAI-Compatible Blazing-Fast LLM Endpoints powered by the [vLLM](https:
### 1. UI for Deploying vLLM Worker on RunPod console:
![Demo of Deploying vLLM Worker on RunPod console with new UI](media/ui_demo.gif)
### 2. Worker vLLM `v1.1` with vLLM `0.5.3` now available under `stable` tags
Update v1.1 is now available, use the image tag `runpod/worker-v1-vllm:stable-cuda12.1.0`.
### 2. Worker vLLM `v1.5.0` with vLLM `0.6.2` now available under `stable` tags
Update v1.5.0 is now available, use the image tag `runpod/worker-v1-vllm:v1.5.0stable-cuda12.1.0`.
### 3. OpenAI-Compatible [Embedding Worker](https://github.com/runpod-workers/worker-infinity-embedding) Released
Deploy your own OpenAI-compatible Serverless Endpoint on RunPod with multiple embedding models and fast inference for RAG and more!
@@ -57,6 +58,10 @@ Worker vLLM is now cached on all RunPod machines, resulting in near-instant depl
- [Input Request Parameters](#input-request-parameters)
- [Text Input Formats](#text-input-formats)
- [Sampling Parameters](#sampling-parameters)
- [Worker Config](#worker-config)
- [Writing your worker-config.json](#writing-your-worker-configjson)
- [Example of schema](#example-of-schema)
- [Example of versions](#example-of-versions)
# Setting up the Serverless Worker
@@ -77,7 +82,7 @@ Below is a summary of the available RunPod Worker images, categorized by image s
| CUDA Version | Stable Image Tag | Development Image Tag | Note |
|--------------|-----------------------------------|-----------------------------------|----------------------------------------------------------------------|
| 12.1.0 | `runpod/worker-v1-vllm:stable-cuda12.1.0` | `runpod/worker-v1-vllm:dev-cuda12.1.0` | When creating an Endpoint, select CUDA Version 12.3, 12.2 and 12.1 in the filter. |
| 12.1.0 | `runpod/worker-v1-vllm:v1.5.0stable-cuda12.1.0` | `runpod/worker-v1-vllm:v1.5.0dev-cuda12.1.0` | When creating an Endpoint, select CUDA Version 12.3, 12.2 and 12.1 in the filter. |
@@ -513,3 +518,86 @@ Your list can contain any number of messages, and each message usually can have
]
```
</details>
# Worker Config
The worker config is a JSON file that is used to build the form that helps users configure their serverless endpoint on the RunPod Web Interface.
Note: This is a new feature and only works for workers that use one model
## Writing your worker-config.json
The JSON consists of two main parts, schema and versions.
- `schema`: Here you specify the form fields that will be displayed to the user.
- `env_var_name`: The name of the environment variable that is being set using the form field.
- `value`: This is the default value of the form field. It will be shown in the UI as such unless the user changes it.
- `title`: This is the title of the form field in the UI.
- `description`: This is the description of the form field in the UI.
- `required`: This is a boolean that specifies if the form field is required.
- `type`: This is the type of the form field. Options are:
- `text`: Environment variable is a string so user inputs text in form field.
- `select`: User selects one option from the dropdown. You must provide the `options` key value pair after type if using this.
- `toggle`: User toggles between true and false.
- `number`: User inputs a number in the form field.
- `options`: Specify the options the user can select from if the type is `select`. DO NOT include this unless the `type` is `select`.
- `versions`: This is where you call the form fields specified in `schema` and organize them into categories.
- `imageName`: This is the name of the Docker image that will be used to run the serverless endpoint.
- `minimumCudaVersion`: This is the minimum CUDA version that is required to run the serverless endpoint.
- `categories`: This is where you call the keys of the form fields specified in `schema` and organize them into categories. Each category is a toggle list of forms on the Web UI.
- `title`: This is the title of the category in the UI.
- `settings`: This is the array of settings schemas specified in `schema` associated with the category.
## Example of schema
```json
{
"schema": {
"TOKENIZER": {
"env_var_name": "TOKENIZER",
"value": "",
"title": "Tokenizer",
"description": "Name or path of the Hugging Face tokenizer to use.",
"required": false,
"type": "text"
},
"TOKENIZER_MODE": {
"env_var_name": "TOKENIZER_MODE",
"value": "auto",
"title": "Tokenizer Mode",
"description": "The tokenizer mode.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "slow", "label": "slow" }
]
},
...
}
}
```
## Example of versions
```json
{
"versions": {
"0.5.4": {
"imageName": "runpod/worker-v1-vllm:v1.2.0stable-cuda12.1.0",
"minimumCudaVersion": "12.1",
"categories": [
{
"title": "LLM Settings",
"settings": [
"TOKENIZER", "TOKENIZER_MODE", "OTHER_SETTINGS_SCHEMA_KEYS_YOU_HAVE_SPECIFIED_0", ...
]
},
{
"title": "Tokenizer Settings",
"settings": [
"OTHER_SETTINGS_SCHEMA_KEYS_0", "OTHER_SETTINGS_SCHEMA_KEYS_1", ...
]
},
...
]
}
}
}
```
+3 -2
View File
@@ -1,10 +1,11 @@
ray
pandas
pyarrow
runpod==1.7.0
runpod~=1.7.0
huggingface-hub
packaging
typing-extensions==4.7.1
pydantic
pydantic-settings
hf-transfer
hf-transfer
transformers
+11 -7
View File
@@ -11,6 +11,7 @@ from vllm import AsyncLLMEngine
from vllm.entrypoints.openai.serving_chat import OpenAIServingChat
from vllm.entrypoints.openai.serving_completion import OpenAIServingCompletion
from vllm.entrypoints.openai.protocol import ChatCompletionRequest, CompletionRequest, ErrorResponse
from vllm.entrypoints.openai.serving_engine import BaseModelPath
from utils import DummyRequest, JobInput, BatchSize, create_error_response
from constants import DEFAULT_MAX_CONCURRENCY, DEFAULT_BATCH_SIZE, DEFAULT_BATCH_SIZE_GROWTH_FACTOR, DEFAULT_MIN_BATCH_SIZE
@@ -121,14 +122,16 @@ class OpenAIvLLMEngine(vLLMEngine):
self.response_role = os.getenv("OPENAI_RESPONSE_ROLE") or "assistant"
asyncio.run(self._initialize_engines())
self.raw_openai_output = bool(int(os.getenv("RAW_OPENAI_OUTPUT", 1)))
async def _initialize_engines(self):
self.model_config = await self.llm.get_model_config()
self.base_model_paths = [
BaseModelPath(name=self.engine_args.model, model_path=self.engine_args.model)
]
self.chat_engine = OpenAIServingChat(
engine=self.llm,
engine_client=self.llm,
model_config=self.model_config,
served_model_names=[self.served_model_name],
base_model_paths=self.base_model_paths,
response_role=self.response_role,
chat_template=self.tokenizer.tokenizer.chat_template,
lora_modules=None,
@@ -136,9 +139,9 @@ class OpenAIvLLMEngine(vLLMEngine):
request_logger=None
)
self.completion_engine = OpenAIServingCompletion(
engine=self.llm,
engine_client=self.llm,
model_config=self.model_config,
served_model_names=[self.served_model_name],
base_model_paths=self.base_model_paths,
lora_modules=[],
prompt_adapters=None,
request_logger=None
@@ -176,7 +179,8 @@ class OpenAIvLLMEngine(vLLMEngine):
yield create_error_response(str(e)).model_dump()
return
response_generator = await generator_function(request, raw_request=None)
dummy_request = DummyRequest()
response_generator = await generator_function(request, raw_request=dummy_request)
if not openai_request.openai_input.get("stream") or isinstance(response_generator, ErrorResponse):
yield response_generator.model_dump()
+8 -7
View File
@@ -13,9 +13,9 @@ RENAME_ARGS_MAP = {
}
DEFAULT_ARGS = {
"disable_log_stats": True,
"disable_log_requests": True,
"gpu_memory_utilization": 0.9,
"disable_log_stats": os.getenv('DISABLE_LOG_STATS', 'False').lower() == 'true',
"disable_log_requests": os.getenv('DISABLE_LOG_REQUESTS', 'False').lower() == 'true',
"gpu_memory_utilization": float(os.getenv('GPU_MEMORY_UTILIZATION', 0.95)),
"pipeline_parallel_size": int(os.getenv('PIPELINE_PARALLEL_SIZE', 1)),
"tensor_parallel_size": int(os.getenv('TENSOR_PARALLEL_SIZE', 1)),
"served_model_name": os.getenv('SERVED_MODEL_NAME', None),
@@ -88,7 +88,8 @@ DEFAULT_ARGS = {
"typical_acceptance_sampler_posterior_alpha": float(os.getenv('TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA', 0)) or None,
"qlora_adapter_name_or_path": os.getenv('QLORA_ADAPTER_NAME_OR_PATH', None),
"disable_logprobs_during_spec_decoding": os.getenv('DISABLE_LOGPROBS_DURING_SPEC_DECODING', None),
"otlp_traces_endpoint": os.getenv('OTLP_TRACES_ENDPOINT', None)
"otlp_traces_endpoint": os.getenv('OTLP_TRACES_ENDPOINT', None),
"use_v2_block_manager": os.getenv('USE_V2_BLOCK_MANAGER', 'true')
}
def match_vllm_args(args):
@@ -162,8 +163,8 @@ def get_engine_args():
args["max_seq_len_to_capture"] = int(os.getenv("MAX_CONTEXT_LEN_TO_CAPTURE"))
logging.warning("Using MAX_CONTEXT_LEN_TO_CAPTURE is deprecated. Please use MAX_SEQ_LEN_TO_CAPTURE instead.")
if "gemma-2" in args.get("model", "").lower():
os.environ["VLLM_ATTENTION_BACKEND"] = "FLASHINFER"
logging.info("Using FLASHINFER for gemma-2 model.")
# if "gemma-2" in args.get("model", "").lower():
# os.environ["VLLM_ATTENTION_BACKEND"] = "FLASHINFER"
# logging.info("Using FLASHINFER for gemma-2 model.")
return AsyncEngineArgs(**args)
+9 -2
View File
@@ -3,6 +3,7 @@ import logging
from http import HTTPStatus
from functools import wraps
from time import time
from vllm.entrypoints.openai.protocol import RequestResponseMetadata
try:
from vllm.utils import random_uuid
@@ -47,11 +48,17 @@ class JobInput:
self.min_batch_size = int(min_batch_size) if min_batch_size else None
self.openai_route = job.get("openai_route")
self.openai_input = job.get("openai_input")
class DummyState:
def __init__(self):
self.request_metadata = None
class DummyRequest:
def __init__(self):
self.headers = {}
self.state = DummyState()
async def is_disconnected(self):
return False
class BatchSize:
def __init__(self, max_batch_size, min_batch_size, batch_size_growth_factor):
self.max_batch_size = max_batch_size
+936
View File
@@ -0,0 +1,936 @@
{
"versions": {
"0.6.2": {
"imageName": "runpod/worker-v1-vllm:v1.5.0stable-cuda12.1.0",
"minimumCudaVersion": "12.1",
"categories": [
{
"title": "LLM Settings",
"settings": [
"TOKENIZER", "TOKENIZER_MODE", "SKIP_TOKENIZER_INIT", "TRUST_REMOTE_CODE",
"DOWNLOAD_DIR", "LOAD_FORMAT", "DTYPE", "KV_CACHE_DTYPE", "QUANTIZATION_PARAM_PATH",
"MAX_MODEL_LEN", "GUIDED_DECODING_BACKEND", "DISTRIBUTED_EXECUTOR_BACKEND",
"WORKER_USE_RAY", "RAY_WORKERS_USE_NSIGHT", "PIPELINE_PARALLEL_SIZE",
"TENSOR_PARALLEL_SIZE", "MAX_PARALLEL_LOADING_WORKERS", "ENABLE_PREFIX_CACHING",
"DISABLE_SLIDING_WINDOW", "USE_V2_BLOCK_MANAGER", "NUM_LOOKAHEAD_SLOTS",
"SEED", "NUM_GPU_BLOCKS_OVERRIDE", "MAX_NUM_BATCHED_TOKENS", "MAX_NUM_SEQS",
"MAX_LOGPROBS", "DISABLE_LOG_STATS", "QUANTIZATION", "ROPE_SCALING", "ROPE_THETA",
"TOKENIZER_POOL_SIZE", "TOKENIZER_POOL_TYPE", "TOKENIZER_POOL_EXTRA_CONFIG",
"ENABLE_LORA", "MAX_LORAS", "MAX_LORA_RANK", "LORA_EXTRA_VOCAB_SIZE",
"LORA_DTYPE", "LONG_LORA_SCALING_FACTORS", "MAX_CPU_LORAS", "FULLY_SHARDED_LORAS",
"DEVICE", "SCHEDULER_DELAY_FACTOR", "ENABLE_CHUNKED_PREFILL", "SPECULATIVE_MODEL",
"NUM_SPECULATIVE_TOKENS", "SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE",
"SPECULATIVE_MAX_MODEL_LEN", "SPECULATIVE_DISABLE_BY_BATCH_SIZE",
"NGRAM_PROMPT_LOOKUP_MAX", "NGRAM_PROMPT_LOOKUP_MIN", "SPEC_DECODING_ACCEPTANCE_METHOD",
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD", "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA",
"MODEL_LOADER_EXTRA_CONFIG", "PREEMPTION_MODE", "PREEMPTION_CHECK_PERIOD",
"PREEMPTION_CPU_CAPACITY", "MAX_LOG_LEN", "DISABLE_LOGGING_REQUEST"
]
},
{
"title": "Tokenizer Settings",
"settings": [
"TOKENIZER_NAME", "TOKENIZER_REVISION", "CUSTOM_CHAT_TEMPLATE"
]
},
{
"title": "System Settings",
"settings": [
"GPU_MEMORY_UTILIZATION", "MAX_PARALLEL_LOADING_WORKERS", "BLOCK_SIZE",
"SWAP_SPACE", "ENFORCE_EAGER", "MAX_SEQ_LEN_TO_CAPTURE", "DISABLE_CUSTOM_ALL_REDUCE"
]
},
{
"title": "Streaming Settings",
"settings": [
"DEFAULT_BATCH_SIZE", "DEFAULT_MIN_BATCH_SIZE", "DEFAULT_BATCH_SIZE_GROWTH_FACTOR"
]
},
{
"title": "OpenAI Settings",
"settings": [
"RAW_OPENAI_OUTPUT", "OPENAI_RESPONSE_ROLE", "OPENAI_SERVED_MODEL_NAME_OVERRIDE"
]
},
{
"title": "Serverless Settings",
"settings": [
"MAX_CONCURRENCY", "DISABLE_LOG_STATS", "DISABLE_LOG_REQUESTS"
]
}
]
},
"0.6.1": {
"imageName": "runpod/worker-v1-vllm:v1.4.0stable-cuda12.1.0",
"minimumCudaVersion": "12.1",
"categories": [
{
"title": "LLM Settings",
"settings": [
"TOKENIZER", "TOKENIZER_MODE", "SKIP_TOKENIZER_INIT", "TRUST_REMOTE_CODE",
"DOWNLOAD_DIR", "LOAD_FORMAT", "DTYPE", "KV_CACHE_DTYPE", "QUANTIZATION_PARAM_PATH",
"MAX_MODEL_LEN", "GUIDED_DECODING_BACKEND", "DISTRIBUTED_EXECUTOR_BACKEND",
"WORKER_USE_RAY", "RAY_WORKERS_USE_NSIGHT", "PIPELINE_PARALLEL_SIZE",
"TENSOR_PARALLEL_SIZE", "MAX_PARALLEL_LOADING_WORKERS", "ENABLE_PREFIX_CACHING",
"DISABLE_SLIDING_WINDOW", "USE_V2_BLOCK_MANAGER", "NUM_LOOKAHEAD_SLOTS",
"SEED", "NUM_GPU_BLOCKS_OVERRIDE", "MAX_NUM_BATCHED_TOKENS", "MAX_NUM_SEQS",
"MAX_LOGPROBS", "DISABLE_LOG_STATS", "QUANTIZATION", "ROPE_SCALING", "ROPE_THETA",
"TOKENIZER_POOL_SIZE", "TOKENIZER_POOL_TYPE", "TOKENIZER_POOL_EXTRA_CONFIG",
"ENABLE_LORA", "MAX_LORAS", "MAX_LORA_RANK", "LORA_EXTRA_VOCAB_SIZE",
"LORA_DTYPE", "LONG_LORA_SCALING_FACTORS", "MAX_CPU_LORAS", "FULLY_SHARDED_LORAS",
"DEVICE", "SCHEDULER_DELAY_FACTOR", "ENABLE_CHUNKED_PREFILL", "SPECULATIVE_MODEL",
"NUM_SPECULATIVE_TOKENS", "SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE",
"SPECULATIVE_MAX_MODEL_LEN", "SPECULATIVE_DISABLE_BY_BATCH_SIZE",
"NGRAM_PROMPT_LOOKUP_MAX", "NGRAM_PROMPT_LOOKUP_MIN", "SPEC_DECODING_ACCEPTANCE_METHOD",
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD", "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA",
"MODEL_LOADER_EXTRA_CONFIG", "PREEMPTION_MODE", "PREEMPTION_CHECK_PERIOD",
"PREEMPTION_CPU_CAPACITY", "MAX_LOG_LEN", "DISABLE_LOGGING_REQUEST"
]
},
{
"title": "Tokenizer Settings",
"settings": [
"TOKENIZER_NAME", "TOKENIZER_REVISION", "CUSTOM_CHAT_TEMPLATE"
]
},
{
"title": "System Settings",
"settings": [
"GPU_MEMORY_UTILIZATION", "MAX_PARALLEL_LOADING_WORKERS", "BLOCK_SIZE",
"SWAP_SPACE", "ENFORCE_EAGER", "MAX_SEQ_LEN_TO_CAPTURE", "DISABLE_CUSTOM_ALL_REDUCE"
]
},
{
"title": "Streaming Settings",
"settings": [
"DEFAULT_BATCH_SIZE", "DEFAULT_MIN_BATCH_SIZE", "DEFAULT_BATCH_SIZE_GROWTH_FACTOR"
]
},
{
"title": "OpenAI Settings",
"settings": [
"RAW_OPENAI_OUTPUT", "OPENAI_RESPONSE_ROLE", "OPENAI_SERVED_MODEL_NAME_OVERRIDE"
]
},
{
"title": "Serverless Settings",
"settings": [
"MAX_CONCURRENCY", "DISABLE_LOG_STATS", "DISABLE_LOG_REQUESTS"
]
}
]
},
"0.5.5": {
"imageName": "runpod/worker-v1-vllm:v1.3.1stable-cuda12.1.0",
"minimumCudaVersion": "12.1",
"categories": [
{
"title": "LLM Settings",
"settings": [
"TOKENIZER", "TOKENIZER_MODE", "SKIP_TOKENIZER_INIT", "TRUST_REMOTE_CODE",
"DOWNLOAD_DIR", "LOAD_FORMAT", "DTYPE", "KV_CACHE_DTYPE", "QUANTIZATION_PARAM_PATH",
"MAX_MODEL_LEN", "GUIDED_DECODING_BACKEND", "DISTRIBUTED_EXECUTOR_BACKEND",
"WORKER_USE_RAY", "RAY_WORKERS_USE_NSIGHT", "PIPELINE_PARALLEL_SIZE",
"TENSOR_PARALLEL_SIZE", "MAX_PARALLEL_LOADING_WORKERS", "ENABLE_PREFIX_CACHING",
"DISABLE_SLIDING_WINDOW", "USE_V2_BLOCK_MANAGER", "NUM_LOOKAHEAD_SLOTS",
"SEED", "NUM_GPU_BLOCKS_OVERRIDE", "MAX_NUM_BATCHED_TOKENS", "MAX_NUM_SEQS",
"MAX_LOGPROBS", "DISABLE_LOG_STATS", "QUANTIZATION", "ROPE_SCALING", "ROPE_THETA",
"TOKENIZER_POOL_SIZE", "TOKENIZER_POOL_TYPE", "TOKENIZER_POOL_EXTRA_CONFIG",
"ENABLE_LORA", "MAX_LORAS", "MAX_LORA_RANK", "LORA_EXTRA_VOCAB_SIZE",
"LORA_DTYPE", "LONG_LORA_SCALING_FACTORS", "MAX_CPU_LORAS", "FULLY_SHARDED_LORAS",
"DEVICE", "SCHEDULER_DELAY_FACTOR", "ENABLE_CHUNKED_PREFILL", "SPECULATIVE_MODEL",
"NUM_SPECULATIVE_TOKENS", "SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE",
"SPECULATIVE_MAX_MODEL_LEN", "SPECULATIVE_DISABLE_BY_BATCH_SIZE",
"NGRAM_PROMPT_LOOKUP_MAX", "NGRAM_PROMPT_LOOKUP_MIN", "SPEC_DECODING_ACCEPTANCE_METHOD",
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD", "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA",
"MODEL_LOADER_EXTRA_CONFIG", "PREEMPTION_MODE", "PREEMPTION_CHECK_PERIOD",
"PREEMPTION_CPU_CAPACITY", "MAX_LOG_LEN", "DISABLE_LOGGING_REQUEST"
]
},
{
"title": "Tokenizer Settings",
"settings": [
"TOKENIZER_NAME", "TOKENIZER_REVISION", "CUSTOM_CHAT_TEMPLATE"
]
},
{
"title": "System Settings",
"settings": [
"GPU_MEMORY_UTILIZATION", "MAX_PARALLEL_LOADING_WORKERS", "BLOCK_SIZE",
"SWAP_SPACE", "ENFORCE_EAGER", "MAX_SEQ_LEN_TO_CAPTURE", "DISABLE_CUSTOM_ALL_REDUCE"
]
},
{
"title": "Streaming Settings",
"settings": [
"DEFAULT_BATCH_SIZE", "DEFAULT_MIN_BATCH_SIZE", "DEFAULT_BATCH_SIZE_GROWTH_FACTOR"
]
},
{
"title": "OpenAI Settings",
"settings": [
"RAW_OPENAI_OUTPUT", "OPENAI_RESPONSE_ROLE", "OPENAI_SERVED_MODEL_NAME_OVERRIDE"
]
},
{
"title": "Serverless Settings",
"settings": [
"MAX_CONCURRENCY", "DISABLE_LOG_STATS", "DISABLE_LOG_REQUESTS"
]
}
]
},
"0.5.4": {
"imageName": "runpod/worker-v1-vllm:v1.2.0stable-cuda12.1.0",
"minimumCudaVersion": "12.1",
"categories": [
{
"title": "LLM Settings",
"settings": [
"TOKENIZER", "TOKENIZER_MODE", "SKIP_TOKENIZER_INIT", "TRUST_REMOTE_CODE",
"DOWNLOAD_DIR", "LOAD_FORMAT", "DTYPE", "KV_CACHE_DTYPE", "QUANTIZATION_PARAM_PATH",
"MAX_MODEL_LEN", "GUIDED_DECODING_BACKEND", "DISTRIBUTED_EXECUTOR_BACKEND",
"WORKER_USE_RAY", "RAY_WORKERS_USE_NSIGHT", "PIPELINE_PARALLEL_SIZE",
"TENSOR_PARALLEL_SIZE", "MAX_PARALLEL_LOADING_WORKERS", "ENABLE_PREFIX_CACHING",
"DISABLE_SLIDING_WINDOW", "USE_V2_BLOCK_MANAGER", "NUM_LOOKAHEAD_SLOTS",
"SEED", "NUM_GPU_BLOCKS_OVERRIDE", "MAX_NUM_BATCHED_TOKENS", "MAX_NUM_SEQS",
"MAX_LOGPROBS", "DISABLE_LOG_STATS", "QUANTIZATION", "ROPE_SCALING", "ROPE_THETA",
"TOKENIZER_POOL_SIZE", "TOKENIZER_POOL_TYPE", "TOKENIZER_POOL_EXTRA_CONFIG",
"ENABLE_LORA", "MAX_LORAS", "MAX_LORA_RANK", "LORA_EXTRA_VOCAB_SIZE",
"LORA_DTYPE", "LONG_LORA_SCALING_FACTORS", "MAX_CPU_LORAS", "FULLY_SHARDED_LORAS",
"DEVICE", "SCHEDULER_DELAY_FACTOR", "ENABLE_CHUNKED_PREFILL", "SPECULATIVE_MODEL",
"NUM_SPECULATIVE_TOKENS", "SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE",
"SPECULATIVE_MAX_MODEL_LEN", "SPECULATIVE_DISABLE_BY_BATCH_SIZE",
"NGRAM_PROMPT_LOOKUP_MAX", "NGRAM_PROMPT_LOOKUP_MIN", "SPEC_DECODING_ACCEPTANCE_METHOD",
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD", "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA",
"MODEL_LOADER_EXTRA_CONFIG", "PREEMPTION_MODE", "PREEMPTION_CHECK_PERIOD",
"PREEMPTION_CPU_CAPACITY", "MAX_LOG_LEN", "DISABLE_LOGGING_REQUEST"
]
},
{
"title": "Tokenizer Settings",
"settings": [
"TOKENIZER_NAME", "TOKENIZER_REVISION", "CUSTOM_CHAT_TEMPLATE"
]
},
{
"title": "System Settings",
"settings": [
"GPU_MEMORY_UTILIZATION", "MAX_PARALLEL_LOADING_WORKERS", "BLOCK_SIZE",
"SWAP_SPACE", "ENFORCE_EAGER", "MAX_SEQ_LEN_TO_CAPTURE", "DISABLE_CUSTOM_ALL_REDUCE"
]
},
{
"title": "Streaming Settings",
"settings": [
"DEFAULT_BATCH_SIZE", "DEFAULT_MIN_BATCH_SIZE", "DEFAULT_BATCH_SIZE_GROWTH_FACTOR"
]
},
{
"title": "OpenAI Settings",
"settings": [
"RAW_OPENAI_OUTPUT", "OPENAI_RESPONSE_ROLE", "OPENAI_SERVED_MODEL_NAME_OVERRIDE"
]
},
{
"title": "Serverless Settings",
"settings": [
"MAX_CONCURRENCY", "DISABLE_LOG_STATS", "DISABLE_LOG_REQUESTS"
]
}
]
}
},
"schema": {
"TOKENIZER": {
"env_var_name": "TOKENIZER",
"value": "",
"title": "Tokenizer",
"description": "Name or path of the Hugging Face tokenizer to use.",
"required": false,
"type": "text"
},
"TOKENIZER_MODE": {
"env_var_name": "TOKENIZER_MODE",
"value": "auto",
"title": "Tokenizer Mode",
"description": "The tokenizer mode.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "slow", "label": "slow" }
]
},
"SKIP_TOKENIZER_INIT": {
"env_var_name": "SKIP_TOKENIZER_INIT",
"value": false,
"title": "Skip Tokenizer Init",
"description": "Skip initialization of tokenizer and detokenizer.",
"required": false,
"type": "toggle"
},
"TRUST_REMOTE_CODE": {
"env_var_name": "TRUST_REMOTE_CODE",
"value": false,
"title": "Trust Remote Code",
"description": "Trust remote code from Hugging Face.",
"required": false,
"type": "toggle"
},
"DOWNLOAD_DIR": {
"env_var_name": "DOWNLOAD_DIR",
"value": "",
"title": "Download Directory",
"description": "Directory to download and load the weights.",
"required": false,
"type": "text"
},
"LOAD_FORMAT": {
"env_var_name": "LOAD_FORMAT",
"value": "auto",
"title": "Load Format",
"description": "The format of the model weights to load.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "pt", "label": "pt" },
{ "value": "safetensors", "label": "safetensors" },
{ "value": "npcache", "label": "npcache" },
{ "value": "dummy", "label": "dummy" },
{ "value": "tensorizer", "label": "tensorizer" },
{ "value": "bitsandbytes", "label": "bitsandbytes" }
]
},
"DTYPE": {
"env_var_name": "DTYPE",
"value": "auto",
"title": "Data Type",
"description": "Data type for model weights and activations.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "half", "label": "half" },
{ "value": "float16", "label": "float16" },
{ "value": "bfloat16", "label": "bfloat16" },
{ "value": "float", "label": "float" },
{ "value": "float32", "label": "float32" }
]
},
"KV_CACHE_DTYPE": {
"env_var_name": "KV_CACHE_DTYPE",
"value": "auto",
"title": "KV Cache Data Type",
"description": "Data type for KV cache storage.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "fp8", "label": "fp8" }
]
},
"QUANTIZATION_PARAM_PATH": {
"env_var_name": "QUANTIZATION_PARAM_PATH",
"value": "",
"title": "Quantization Param Path",
"description": "Path to the JSON file containing the KV cache scaling factors.",
"required": false,
"type": "text"
},
"MAX_MODEL_LEN": {
"env_var_name": "MAX_MODEL_LEN",
"value": "",
"title": "Max Model Length",
"description": "Model context length.",
"required": false,
"type": "number"
},
"GUIDED_DECODING_BACKEND": {
"env_var_name": "GUIDED_DECODING_BACKEND",
"value": "outlines",
"title": "Guided Decoding Backend",
"description": "Which engine will be used for guided decoding by default.",
"required": false,
"type": "select",
"options": [
{ "value": "outlines", "label": "outlines" },
{ "value": "lm-format-enforcer", "label": "lm-format-enforcer" }
]
},
"DISTRIBUTED_EXECUTOR_BACKEND": {
"env_var_name": "DISTRIBUTED_EXECUTOR_BACKEND",
"value": "",
"title": "Distributed Executor Backend",
"description": "Backend to use for distributed serving.",
"required": false,
"type": "select",
"options": [
{ "value": "ray", "label": "ray" },
{ "value": "mp", "label": "mp" }
]
},
"WORKER_USE_RAY": {
"env_var_name": "WORKER_USE_RAY",
"value": false,
"title": "Worker Use Ray",
"description": "Deprecated, use --distributed-executor-backend=ray.",
"required": false,
"type": "toggle"
},
"RAY_WORKERS_USE_NSIGHT": {
"env_var_name": "RAY_WORKERS_USE_NSIGHT",
"value": false,
"title": "Ray Workers Use Nsight",
"description": "If specified, use nsight to profile Ray workers.",
"required": false,
"type": "toggle"
},
"PIPELINE_PARALLEL_SIZE": {
"env_var_name": "PIPELINE_PARALLEL_SIZE",
"value": 1,
"title": "Pipeline Parallel Size",
"description": "Number of pipeline stages.",
"required": false,
"type": "number"
},
"TENSOR_PARALLEL_SIZE": {
"env_var_name": "TENSOR_PARALLEL_SIZE",
"value": 1,
"title": "Tensor Parallel Size",
"description": "Number of tensor parallel replicas.",
"required": false,
"type": "number"
},
"MAX_PARALLEL_LOADING_WORKERS": {
"env_var_name": "MAX_PARALLEL_LOADING_WORKERS",
"value": "",
"title": "Max Parallel Loading Workers",
"description": "Load model sequentially in multiple batches.",
"required": false,
"type": "number"
},
"ENABLE_PREFIX_CACHING": {
"env_var_name": "ENABLE_PREFIX_CACHING",
"value": false,
"title": "Enable Prefix Caching",
"description": "Enables automatic prefix caching.",
"required": false,
"type": "toggle"
},
"DISABLE_SLIDING_WINDOW": {
"env_var_name": "DISABLE_SLIDING_WINDOW",
"value": false,
"title": "Disable Sliding Window",
"description": "Disables sliding window, capping to sliding window size.",
"required": false,
"type": "toggle"
},
"USE_V2_BLOCK_MANAGER": {
"env_var_name": "USE_V2_BLOCK_MANAGER",
"value": false,
"title": "Use V2 Block Manager",
"description": "Use BlockSpaceMangerV2.",
"required": false,
"type": "toggle"
},
"NUM_LOOKAHEAD_SLOTS": {
"env_var_name": "NUM_LOOKAHEAD_SLOTS",
"value": 0,
"title": "Num Lookahead Slots",
"description": "Experimental scheduling config necessary for speculative decoding.",
"required": false,
"type": "number"
},
"SEED": {
"env_var_name": "SEED",
"value": 0,
"title": "Seed",
"description": "Random seed for operations.",
"required": false,
"type": "number"
},
"NUM_GPU_BLOCKS_OVERRIDE": {
"env_var_name": "NUM_GPU_BLOCKS_OVERRIDE",
"value": "",
"title": "Num GPU Blocks Override",
"description": "If specified, ignore GPU profiling result and use this number of GPU blocks.",
"required": false,
"type": "number"
},
"MAX_NUM_BATCHED_TOKENS": {
"env_var_name": "MAX_NUM_BATCHED_TOKENS",
"value": "",
"title": "Max Num Batched Tokens",
"description": "Maximum number of batched tokens per iteration.",
"required": false,
"type": "number"
},
"MAX_NUM_SEQS": {
"env_var_name": "MAX_NUM_SEQS",
"value": 256,
"title": "Max Num Seqs",
"description": "Maximum number of sequences per iteration.",
"required": false,
"type": "number"
},
"MAX_LOGPROBS": {
"env_var_name": "MAX_LOGPROBS",
"value": 20,
"title": "Max Logprobs",
"description": "Max number of log probs to return when logprobs is specified in SamplingParams.",
"required": false,
"type": "number"
},
"DISABLE_LOG_STATS": {
"env_var_name": "DISABLE_LOG_STATS",
"value": false,
"title": "Disable Log Stats",
"description": "Disable logging statistics.",
"required": false,
"type": "toggle"
},
"QUANTIZATION": {
"env_var_name": "QUANTIZATION",
"value": "",
"title": "Quantization",
"description": "Method used to quantize the weights.",
"required": false,
"type": "select",
"options": [
{ "value": "None", "label": "None" },
{ "value": "awq", "label": "AWQ" },
{ "value": "squeezellm", "label": "SqueezeLLM" },
{ "value": "gptq", "label": "GPTQ" }
]
},
"ROPE_SCALING": {
"env_var_name": "ROPE_SCALING",
"value": "",
"title": "RoPE Scaling",
"description": "RoPE scaling configuration in JSON format.",
"required": false,
"type": "text"
},
"ROPE_THETA": {
"env_var_name": "ROPE_THETA",
"value": "",
"title": "RoPE Theta",
"description": "RoPE theta. Use with rope_scaling.",
"required": false,
"type": "number"
},
"TOKENIZER_POOL_SIZE": {
"env_var_name": "TOKENIZER_POOL_SIZE",
"value": 0,
"title": "Tokenizer Pool Size",
"description": "Size of tokenizer pool to use for asynchronous tokenization.",
"required": false,
"type": "number"
},
"TOKENIZER_POOL_TYPE": {
"env_var_name": "TOKENIZER_POOL_TYPE",
"value": "ray",
"title": "Tokenizer Pool Type",
"description": "Type of tokenizer pool to use for asynchronous tokenization.",
"required": false,
"type": "text"
},
"TOKENIZER_POOL_EXTRA_CONFIG": {
"env_var_name": "TOKENIZER_POOL_EXTRA_CONFIG",
"value": "",
"title": "Tokenizer Pool Extra Config",
"description": "Extra config for tokenizer pool.",
"required": false,
"type": "text"
},
"ENABLE_LORA": {
"env_var_name": "ENABLE_LORA",
"value": false,
"title": "Enable LoRA",
"description": "If True, enable handling of LoRA adapters.",
"required": false,
"type": "toggle"
},
"MAX_LORAS": {
"env_var_name": "MAX_LORAS",
"value": 1,
"title": "Max LoRAs",
"description": "Max number of LoRAs in a single batch.",
"required": false,
"type": "number"
},
"MAX_LORA_RANK": {
"env_var_name": "MAX_LORA_RANK",
"value": 16,
"title": "Max LoRA Rank",
"description": "Max LoRA rank.",
"required": false,
"type": "number"
},
"LORA_EXTRA_VOCAB_SIZE": {
"env_var_name": "LORA_EXTRA_VOCAB_SIZE",
"value": 256,
"title": "LoRA Extra Vocab Size",
"description": "Maximum size of extra vocabulary for LoRA adapters.",
"required": false,
"type": "number"
},
"LORA_DTYPE": {
"env_var_name": "LORA_DTYPE",
"value": "auto",
"title": "LoRA Data Type",
"description": "Data type for LoRA.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "float16", "label": "float16" },
{ "value": "bfloat16", "label": "bfloat16" },
{ "value": "float32", "label": "float32" }
]
},
"LONG_LORA_SCALING_FACTORS": {
"env_var_name": "LONG_LORA_SCALING_FACTORS",
"value": "",
"title": "Long LoRA Scaling Factors",
"description": "Specify multiple scaling factors for LoRA adapters.",
"required": false,
"type": "text"
},
"MAX_CPU_LORAS": {
"env_var_name": "MAX_CPU_LORAS",
"value": "",
"title": "Max CPU LoRAs",
"description": "Maximum number of LoRAs to store in CPU memory.",
"required": false,
"type": "number"
},
"FULLY_SHARDED_LORAS": {
"env_var_name": "FULLY_SHARDED_LORAS",
"value": false,
"title": "Fully Sharded LoRAs",
"description": "Enable fully sharded LoRA layers.",
"required": false,
"type": "toggle"
},
"DEVICE": {
"env_var_name": "DEVICE",
"value": "auto",
"title": "Device",
"description": "Device type for vLLM execution.",
"required": false,
"type": "select",
"options": [
{ "value": "auto", "label": "auto" },
{ "value": "cuda", "label": "cuda" },
{ "value": "neuron", "label": "neuron" },
{ "value": "cpu", "label": "cpu" },
{ "value": "openvino", "label": "openvino" },
{ "value": "tpu", "label": "tpu" },
{ "value": "xpu", "label": "xpu" }
]
},
"SCHEDULER_DELAY_FACTOR": {
"env_var_name": "SCHEDULER_DELAY_FACTOR",
"value": 0.0,
"title": "Scheduler Delay Factor",
"description": "Apply a delay before scheduling next prompt.",
"required": false,
"type": "number"
},
"ENABLE_CHUNKED_PREFILL": {
"env_var_name": "ENABLE_CHUNKED_PREFILL",
"value": false,
"title": "Enable Chunked Prefill",
"description": "Enable chunked prefill requests.",
"required": false,
"type": "toggle"
},
"SPECULATIVE_MODEL": {
"env_var_name": "SPECULATIVE_MODEL",
"value": "",
"title": "Speculative Model",
"description": "The name of the draft model to be used in speculative decoding.",
"required": false,
"type": "text"
},
"NUM_SPECULATIVE_TOKENS": {
"env_var_name": "NUM_SPECULATIVE_TOKENS",
"value": "",
"title": "Num Speculative Tokens",
"description": "The number of speculative tokens to sample from the draft model.",
"required": false,
"type": "number"
},
"SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE": {
"env_var_name": "SPECULATIVE_DRAFT_TENSOR_PARALLEL_SIZE",
"value": "",
"title": "Speculative Draft Tensor Parallel Size",
"description": "Number of tensor parallel replicas for the draft model.",
"required": false,
"type": "number"
},
"SPECULATIVE_MAX_MODEL_LEN": {
"env_var_name": "SPECULATIVE_MAX_MODEL_LEN",
"value": "",
"title": "Speculative Max Model Length",
"description": "The maximum sequence length supported by the draft model.",
"required": false,
"type": "number"
},
"SPECULATIVE_DISABLE_BY_BATCH_SIZE": {
"env_var_name": "SPECULATIVE_DISABLE_BY_BATCH_SIZE",
"value": "",
"title": "Speculative Disable by Batch Size",
"description": "Disable speculative decoding if the number of enqueue requests is larger than this value.",
"required": false,
"type": "number"
},
"NGRAM_PROMPT_LOOKUP_MAX": {
"env_var_name": "NGRAM_PROMPT_LOOKUP_MAX",
"value": "",
"title": "Ngram Prompt Lookup Max",
"description": "Max size of window for ngram prompt lookup in speculative decoding.",
"required": false,
"type": "number"
},
"NGRAM_PROMPT_LOOKUP_MIN": {
"env_var_name": "NGRAM_PROMPT_LOOKUP_MIN",
"value": "",
"title": "Ngram Prompt Lookup Min",
"description": "Min size of window for ngram prompt lookup in speculative decoding.",
"required": false,
"type": "number"
},
"SPEC_DECODING_ACCEPTANCE_METHOD": {
"env_var_name": "SPEC_DECODING_ACCEPTANCE_METHOD",
"value": "rejection_sampler",
"title": "Speculative Decoding Acceptance Method",
"description": "Specify the acceptance method for draft token verification in speculative decoding.",
"required": false,
"type": "select",
"options": [
{ "value": "rejection_sampler", "label": "rejection_sampler" },
{ "value": "typical_acceptance_sampler", "label": "typical_acceptance_sampler" }
]
},
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD": {
"env_var_name": "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_THRESHOLD",
"value": "",
"title": "Typical Acceptance Sampler Posterior Threshold",
"description": "Set the lower bound threshold for the posterior probability of a token to be accepted.",
"required": false,
"type": "number"
},
"TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA": {
"env_var_name": "TYPICAL_ACCEPTANCE_SAMPLER_POSTERIOR_ALPHA",
"value": "",
"title": "Typical Acceptance Sampler Posterior Alpha",
"description": "A scaling factor for the entropy-based threshold for token acceptance.",
"required": false,
"type": "number"
},
"MODEL_LOADER_EXTRA_CONFIG": {
"env_var_name": "MODEL_LOADER_EXTRA_CONFIG",
"value": "",
"title": "Model Loader Extra Config",
"description": "Extra config for model loader.",
"required": false,
"type": "text"
},
"PREEMPTION_MODE": {
"env_var_name": "PREEMPTION_MODE",
"value": "",
"title": "Preemption Mode",
"description": "If 'recompute', the engine performs preemption-aware recomputation. If 'save', the engine saves activations into the CPU memory as preemption happens.",
"required": false,
"type": "text"
},
"PREEMPTION_CHECK_PERIOD": {
"env_var_name": "PREEMPTION_CHECK_PERIOD",
"value": 1.0,
"title": "Preemption Check Period",
"description": "How frequently the engine checks if a preemption happens.",
"required": false,
"type": "number"
},
"PREEMPTION_CPU_CAPACITY": {
"env_var_name": "PREEMPTION_CPU_CAPACITY",
"value": 2,
"title": "Preemption CPU Capacity",
"description": "The percentage of CPU memory used for the saved activations.",
"required": false,
"type": "number"
},
"MAX_LOG_LEN": {
"env_var_name": "MAX_LOG_LEN",
"value": "",
"title": "Max Log Length",
"description": "Max number of characters or ID numbers being printed in log.",
"required": false,
"type": "number"
},
"DISABLE_LOGGING_REQUEST": {
"env_var_name": "DISABLE_LOGGING_REQUEST",
"value": false,
"title": "Disable Logging Request",
"description": "Disable logging requests.",
"required": false,
"type": "toggle"
},
"TOKENIZER_NAME": {
"env_var_name": "TOKENIZER_NAME",
"value": "",
"title": "Tokenizer Name",
"description": "Tokenizer repo to use a different tokenizer than the model's default",
"required": false,
"type": "text"
},
"TOKENIZER_REVISION": {
"env_var_name": "TOKENIZER_REVISION",
"value": "",
"title": "Tokenizer Revision",
"description": "Tokenizer revision to load",
"required": false,
"type": "text"
},
"CUSTOM_CHAT_TEMPLATE": {
"env_var_name": "CUSTOM_CHAT_TEMPLATE",
"value": "",
"title": "Custom Chat Template",
"description": "Custom chat jinja template",
"required": false,
"type": "text"
},
"GPU_MEMORY_UTILIZATION": {
"env_var_name": "GPU_MEMORY_UTILIZATION",
"value": "0.95",
"title": "GPU Memory Utilization",
"description": "Sets GPU VRAM utilization",
"required": false,
"type": "number"
},
"BLOCK_SIZE": {
"env_var_name": "BLOCK_SIZE",
"value": "16",
"title": "Block Size",
"description": "Token block size for contiguous chunks of tokens",
"required": false,
"type": "number"
},
"SWAP_SPACE": {
"env_var_name": "SWAP_SPACE",
"value": "4",
"title": "Swap Space",
"description": "CPU swap space size (GiB) per GPU",
"required": false,
"type": "number"
},
"ENFORCE_EAGER": {
"env_var_name": "ENFORCE_EAGER",
"value": false,
"title": "Enforce Eager",
"description": "Always use eager-mode PyTorch. If False (0), will use eager mode and CUDA graph in hybrid for maximal performance and flexibility",
"required": false,
"type": "toggle"
},
"MAX_SEQ_LEN_TO_CAPTURE": {
"env_var_name": "MAX_SEQ_LEN_TO_CAPTURE",
"value": "8192",
"title": "CUDA Graph Max Content Length",
"description": "Maximum context length covered by CUDA graphs. If a sequence has context length larger than this, we fall back to eager mode",
"required": false,
"type": "number"
},
"DISABLE_CUSTOM_ALL_REDUCE": {
"env_var_name": "DISABLE_CUSTOM_ALL_REDUCE",
"value": false,
"title": "Disable Custom All Reduce",
"description": "Enables or disables custom all reduce",
"required": false,
"type": "toggle"
},
"DEFAULT_BATCH_SIZE": {
"env_var_name": "DEFAULT_BATCH_SIZE",
"value": "50",
"title": "Default Final Batch Size",
"description": "Default and Maximum batch size for token streaming to reduce HTTP calls",
"required": false,
"type": "number"
},
"DEFAULT_MIN_BATCH_SIZE": {
"env_var_name": "DEFAULT_MIN_BATCH_SIZE",
"value": "1",
"title": "Default Starting Batch Size",
"description": "Batch size for the first request, which will be multiplied by the growth factor every subsequent request",
"required": false,
"type": "number"
},
"DEFAULT_BATCH_SIZE_GROWTH_FACTOR": {
"env_var_name": "DEFAULT_BATCH_SIZE_GROWTH_FACTOR",
"value": "3",
"title": "Default Batch Size Growth Factor",
"description": "Growth factor for dynamic batch size",
"required": false,
"type": "number"
},
"RAW_OPENAI_OUTPUT": {
"env_var_name": "RAW_OPENAI_OUTPUT",
"value": true,
"title": "Raw OpenAI Output",
"description": "Raw OpenAI output instead of just the text",
"required": false,
"type": "toggle"
},
"OPENAI_RESPONSE_ROLE": {
"env_var_name": "OPENAI_RESPONSE_ROLE",
"value": "assistant",
"title": "OpenAI Response Role",
"description": "Role of the LLM's Response in OpenAI Chat Completions",
"required": false,
"type": "text"
},
"OPENAI_SERVED_MODEL_NAME_OVERRIDE": {
"env_var_name": "OPENAI_SERVED_MODEL_NAME_OVERRIDE",
"value": "",
"title": "OpenAI Served Model Name Override",
"description": "Overrides the name of the served model from model repo/path to specified name, which you will then be able to use the value for the `model` parameter when making OpenAI requests",
"required": false,
"type": "text"
},
"MAX_CONCURRENCY": {
"env_var_name": "MAX_CONCURRENCY",
"value": "300",
"title": "Max Concurrency",
"description": "Max concurrent requests per worker. vLLM has an internal queue, so you don't have to worry about limiting by VRAM, this is for improving scaling/load balancing efficiency",
"required": false,
"type": "number"
},
"MODEL_REVISION": {
"env_var_name": "MODEL_REVISION",
"value": "",
"title": "Model Revision",
"description": "Model revision (branch) to load",
"required": false,
"type": "text"
},
"BASE_PATH": {
"env_var_name": "BASE_PATH",
"value": "/runpod-volume",
"title": "Base Path",
"description": "Storage directory for Huggingface cache and model",
"required": false,
"type": "text"
},
"DISABLE_LOG_REQUESTS": {
"env_var_name": "DISABLE_LOG_REQUESTS",
"value": true,
"title": "Disable Log Requests",
"description": "Enables or disables vLLM request logging",
"required": false,
"type": "toggle"
}
}
}