Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7aa17463d3 | ||
|
|
72a643dd0c | ||
|
|
15f569f970 | ||
|
|
2f2bd4c749 | ||
|
|
fb0c030797 | ||
|
|
8b02a703b4 | ||
|
|
d8863139d6 | ||
|
|
f5a063956e | ||
|
|
18748fd73e | ||
|
|
0133c23be8 | ||
|
|
a129cff47d | ||
|
|
30f2c4630e | ||
|
|
b98636e432 | ||
|
|
185205c750 | ||
|
|
b948e530a1 | ||
|
|
4f22d6f107 | ||
|
|
8839689132 | ||
|
|
5ddc2326cd | ||
|
|
46a3300cbb | ||
|
|
1e9a731380 | ||
|
|
c47e649a24 | ||
|
|
7192bcaeef | ||
|
|
8665ffb78d | ||
|
|
57431b30ad | ||
|
|
437a84c77a | ||
|
|
a4062fc488 | ||
|
|
9631407c1d | ||
|
|
1a93932ab2 | ||
|
|
4c6c88c3b9 | ||
|
|
a58a76783d | ||
|
|
26919c8849 | ||
|
|
70cd1c8113 | ||
|
|
deeff579f8 | ||
|
|
11f96a09d7 | ||
|
|
23e8ecf85b | ||
|
|
6db2c44d3b | ||
|
|
9b7ca4d0b0 | ||
|
|
2a4eaf0356 | ||
|
|
ba19cc97bf | ||
|
|
6075f2c590 | ||
|
|
a9786a2481 | ||
|
|
0b6bc7a2be | ||
|
|
d0ab58ee17 | ||
|
|
4e474c41c8 | ||
|
|
e9d13c155e | ||
|
|
a53cf777ff | ||
|
|
cfc258674b | ||
|
|
8beafed06b | ||
|
|
084d000324 |
@@ -15,18 +15,6 @@
|
|||||||
{
|
{
|
||||||
"key": "MODEL_NAME",
|
"key": "MODEL_NAME",
|
||||||
"value": "facebook/opt-350m"
|
"value": "facebook/opt-350m"
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "HF_TOKEN",
|
|
||||||
"value": "hf_dummy_token_for_testing_purposes_only"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "MAX_MODEL_LEN",
|
|
||||||
"value": "8192"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "GPU_MEMORY_UTILIZATION",
|
|
||||||
"value": "0.95"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"allowedCudaVersions": [
|
"allowedCudaVersions": [
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
|
|||||||
python3 -m pip install --upgrade -r /requirements.txt
|
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
|
# 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.8.4 && \
|
RUN python3 -m pip install vllm==0.10.0 && \
|
||||||
python3 -m pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.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
|
# Setup for Option 2: Building the Image with the Model included
|
||||||
@@ -47,4 +47,4 @@ RUN --mount=type=secret,id=HF_TOKEN,required=false \
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Start the handler
|
# Start the handler
|
||||||
CMD ["python3", "/src/handler.py"]
|
CMD ["python3", "/src/handler.py"]
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ Deploy OpenAI-Compatible Blazing-Fast LLM Endpoints powered by the [vLLM](https:
|
|||||||
### 1. UI for Deploying vLLM Worker on RunPod console:
|
### 1. UI for Deploying vLLM Worker on RunPod console:
|
||||||

|

|
||||||
|
|
||||||
### 2. Worker vLLM `v2.4.0` with vLLM `0.8.4` now available under `stable` tags
|
### 2. Worker vLLM `v2.7.0` with vLLM `0.9.1` now available under `stable` tags
|
||||||
|
|
||||||
Update v2.3.0 is now available, use the image tag `runpod/worker-v1-vllm:v2.4.0stable-cuda12.1.0`.
|
Update v2.7.0 is now available, use the image tag `runpod/worker-v1-vllm:v2.7.0stable-cuda12.1.0`.
|
||||||
|
|
||||||
### 3. OpenAI-Compatible [Embedding Worker](https://github.com/runpod-workers/worker-infinity-embedding) Released
|
### 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!
|
Deploy your own OpenAI-compatible Serverless Endpoint on RunPod with multiple embedding models and fast inference for RAG and more!
|
||||||
@@ -38,9 +38,8 @@ Worker vLLM is now cached on all RunPod machines, resulting in near-instant depl
|
|||||||
- [Environment Variables](#environment-variables)
|
- [Environment Variables](#environment-variables)
|
||||||
- [LLM Settings](#llm-settings)
|
- [LLM Settings](#llm-settings)
|
||||||
- [Tokenizer Settings](#tokenizer-settings)
|
- [Tokenizer Settings](#tokenizer-settings)
|
||||||
- [Tensor Parallelism (Multi-GPU) Settings](#tensor-parallelism-multi-gpu-settings)
|
- [System and Parallelism Settings](#system-and-parallelism-settings)
|
||||||
- [System Settings](#system-settings)
|
- [Streaming Batch Size Settings](#streaming-batch-size-settings)
|
||||||
- [Streaming Batch Size](#streaming-batch-size)
|
|
||||||
- [OpenAI Settings](#openai-settings)
|
- [OpenAI Settings](#openai-settings)
|
||||||
- [Serverless Settings](#serverless-settings)
|
- [Serverless Settings](#serverless-settings)
|
||||||
- [Option 2: Build Docker Image with Model Inside](#option-2-build-docker-image-with-model-inside)
|
- [Option 2: Build Docker Image with Model Inside](#option-2-build-docker-image-with-model-inside)
|
||||||
@@ -82,7 +81,7 @@ Below is a summary of the available RunPod Worker images, categorized by image s
|
|||||||
|
|
||||||
| CUDA Version | Stable Image Tag | Development Image Tag | Note |
|
| CUDA Version | Stable Image Tag | Development Image Tag | Note |
|
||||||
|--------------|-----------------------------------|-----------------------------------|----------------------------------------------------------------------|
|
|--------------|-----------------------------------|-----------------------------------|----------------------------------------------------------------------|
|
||||||
| 12.1.0 | `runpod/worker-v1-vllm:v2.4.0stable-cuda12.1.0` | `runpod/worker-v1-vllm:v2.4.0dev-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:v2.7.0stable-cuda12.1.0` | `runpod/worker-v1-vllm:v2.7.0dev-cuda12.1.0` | When creating an Endpoint, select CUDA Version 12.3, 12.2 and 12.1 in the filter. |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -91,9 +90,10 @@ Below is a summary of the available RunPod Worker images, categorized by image s
|
|||||||
#### Prerequisites
|
#### Prerequisites
|
||||||
- RunPod Account
|
- RunPod Account
|
||||||
|
|
||||||
#### Environment Variables/Settings
|
#### Environment Variables
|
||||||
> Note: `0` is equivalent to `False` and `1` is equivalent to `True` for boolean as int values.
|
> Note: `0` is equivalent to `False` and `1` is equivalent to `True` for boolean as int values.
|
||||||
|
|
||||||
|
#### LLM Settings
|
||||||
| `Name` | `Default` | `Type/Choices` | `Description` |
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `MODEL_NAME` | 'facebook/opt-125m' | `str` | Name or path of the Hugging Face model to use. |
|
| `MODEL_NAME` | 'facebook/opt-125m' | `str` | Name or path of the Hugging Face model to use. |
|
||||||
@@ -139,6 +139,7 @@ Below is a summary of the available RunPod Worker images, categorized by image s
|
|||||||
| `LONG_LORA_SCALING_FACTORS` | None | `tuple` | Specify multiple scaling factors for LoRA adapters. |
|
| `LONG_LORA_SCALING_FACTORS` | None | `tuple` | Specify multiple scaling factors for LoRA adapters. |
|
||||||
| `MAX_CPU_LORAS` | None | `int` | Maximum number of LoRAs to store in CPU memory. |
|
| `MAX_CPU_LORAS` | None | `int` | Maximum number of LoRAs to store in CPU memory. |
|
||||||
| `FULLY_SHARDED_LORAS` | False | `bool` | Enable fully sharded LoRA layers. |
|
| `FULLY_SHARDED_LORAS` | False | `bool` | Enable fully sharded LoRA layers. |
|
||||||
|
| `LORA_MODULES`| `[]`| `list[dict]`| Add lora adapters from Hugging Face `[{"name": "xx", "path": "xxx/xxxx", "base_model_name": "xxx/xxxx"}`|
|
||||||
| `SCHEDULER_DELAY_FACTOR` | 0.0 | `float` | Apply a delay before scheduling next prompt. |
|
| `SCHEDULER_DELAY_FACTOR` | 0.0 | `float` | Apply a delay before scheduling next prompt. |
|
||||||
| `ENABLE_CHUNKED_PREFILL` | False | `bool` | Enable chunked prefill requests. |
|
| `ENABLE_CHUNKED_PREFILL` | False | `bool` | Enable chunked prefill requests. |
|
||||||
| `SPECULATIVE_MODEL` | None | `str` | The name of the draft model to be used in speculative decoding. |
|
| `SPECULATIVE_MODEL` | None | `str` | The name of the draft model to be used in speculative decoding. |
|
||||||
@@ -157,11 +158,20 @@ Below is a summary of the available RunPod Worker images, categorized by image s
|
|||||||
| `PREEMPTION_CPU_CAPACITY` | 2 | `float` | The percentage of CPU memory used for the saved activations. |
|
| `PREEMPTION_CPU_CAPACITY` | 2 | `float` | The percentage of CPU memory used for the saved activations. |
|
||||||
| `DISABLE_LOGGING_REQUEST` | False | `bool` | Disable logging requests. |
|
| `DISABLE_LOGGING_REQUEST` | False | `bool` | Disable logging requests. |
|
||||||
| `MAX_LOG_LEN` | None | `int` | Max number of prompt characters or prompt ID numbers being printed in log. |
|
| `MAX_LOG_LEN` | None | `int` | Max number of prompt characters or prompt ID numbers being printed in log. |
|
||||||
**Tokenizer Settings**
|
|
||||||
|
|
||||||
|
#### Tokenizer Settings
|
||||||
|
|
||||||
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `TOKENIZER_NAME` | `None` | `str` |Tokenizer repository to use a different tokenizer than the model's default. |
|
| `TOKENIZER_NAME` | `None` | `str` |Tokenizer repository to use a different tokenizer than the model's default. |
|
||||||
| `TOKENIZER_REVISION` | `None` | `str` |Tokenizer revision to load. |
|
| `TOKENIZER_REVISION` | `None` | `str` |Tokenizer revision to load. |
|
||||||
| `CUSTOM_CHAT_TEMPLATE` | `None` | `str` of single-line jinja template |Custom chat jinja template. [More Info](https://huggingface.co/docs/transformers/chat_templating) |
|
| `CUSTOM_CHAT_TEMPLATE` | `None` | `str` of single-line jinja template |Custom chat jinja template. [More Info](https://huggingface.co/docs/transformers/chat_templating) |
|
||||||
**System, GPU, and Tensor Parallelism(Multi-GPU) Settings**
|
|
||||||
|
#### System and Parallelism Settings
|
||||||
|
|
||||||
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `GPU_MEMORY_UTILIZATION` | `0.95` | `float` |Sets GPU VRAM utilization. |
|
| `GPU_MEMORY_UTILIZATION` | `0.95` | `float` |Sets GPU VRAM utilization. |
|
||||||
| `MAX_PARALLEL_LOADING_WORKERS` | `None` | `int` |Load model sequentially in multiple batches, to avoid RAM OOM when using tensor parallel and large models. |
|
| `MAX_PARALLEL_LOADING_WORKERS` | `None` | `int` |Load model sequentially in multiple batches, to avoid RAM OOM when using tensor parallel and large models. |
|
||||||
| `BLOCK_SIZE` | `16` | `8`, `16`, `32` |Token block size for contiguous chunks of tokens. |
|
| `BLOCK_SIZE` | `16` | `8`, `16`, `32` |Token block size for contiguous chunks of tokens. |
|
||||||
@@ -169,16 +179,31 @@ Below is a summary of the available RunPod Worker images, categorized by image s
|
|||||||
| `ENFORCE_EAGER` | False | `bool` |Always use eager-mode PyTorch. If False(`0`), will use eager mode and CUDA graph in hybrid for maximal performance and flexibility. |
|
| `ENFORCE_EAGER` | False | `bool` |Always use eager-mode PyTorch. If False(`0`), will use eager mode and CUDA graph in hybrid for maximal performance and flexibility. |
|
||||||
| `MAX_SEQ_LEN_TO_CAPTURE` | `8192` | `int` |Maximum context length covered by CUDA graphs. When a sequence has context length larger than this, we fall back to eager mode.|
|
| `MAX_SEQ_LEN_TO_CAPTURE` | `8192` | `int` |Maximum context length covered by CUDA graphs. When a sequence has context length larger than this, we fall back to eager mode.|
|
||||||
| `DISABLE_CUSTOM_ALL_REDUCE` | `0` | `int` |Enables or disables custom all reduce. |
|
| `DISABLE_CUSTOM_ALL_REDUCE` | `0` | `int` |Enables or disables custom all reduce. |
|
||||||
**Streaming Batch Size Settings**:
|
|
||||||
|
|
||||||
|
#### Streaming Batch Size Settings
|
||||||
|
|
||||||
|
The way this works is that the first request will have a batch size of `DEFAULT_MIN_BATCH_SIZE`, and each subsequent request will have a batch size of `previous_batch_size * DEFAULT_BATCH_SIZE_GROWTH_FACTOR`. This will continue until the batch size reaches `DEFAULT_BATCH_SIZE`. E.g. for the default values, the batch sizes will be `1, 3, 9, 27, 50, 50, 50, ...`. You can also specify this per request, with inputs `max_batch_size`, `min_batch_size`, and `batch_size_growth_factor`. This has nothing to do with vLLM's internal batching, but rather the number of tokens sent in each HTTP request from the worker
|
||||||
|
|
||||||
|
|
||||||
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `DEFAULT_BATCH_SIZE` | `50` | `int` |Default and Maximum batch size for token streaming to reduce HTTP calls. |
|
| `DEFAULT_BATCH_SIZE` | `50` | `int` |Default and Maximum batch size for token streaming to reduce HTTP calls. |
|
||||||
| `DEFAULT_MIN_BATCH_SIZE` | `1` | `int` |Batch size for the first request, which will be multiplied by the growth factor every subsequent request. |
|
| `DEFAULT_MIN_BATCH_SIZE` | `1` | `int` |Batch size for the first request, which will be multiplied by the growth factor every subsequent request. |
|
||||||
| `DEFAULT_BATCH_SIZE_GROWTH_FACTOR` | `3` | `float` |Growth factor for dynamic batch size. |
|
| `DEFAULT_BATCH_SIZE_GROWTH_FACTOR` | `3` | `float` |Growth factor for dynamic batch size. |
|
||||||
The way this works is that the first request will have a batch size of `DEFAULT_MIN_BATCH_SIZE`, and each subsequent request will have a batch size of `previous_batch_size * DEFAULT_BATCH_SIZE_GROWTH_FACTOR`. This will continue until the batch size reaches `DEFAULT_BATCH_SIZE`. E.g. for the default values, the batch sizes will be `1, 3, 9, 27, 50, 50, 50, ...`. You can also specify this per request, with inputs `max_batch_size`, `min_batch_size`, and `batch_size_growth_factor`. This has nothing to do with vLLM's internal batching, but rather the number of tokens sent in each HTTP request from the worker |
|
|
||||||
**OpenAI Settings**
|
#### OpenAI Settings
|
||||||
|
|
||||||
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `RAW_OPENAI_OUTPUT` | `1` | boolean as `int` |Enables raw OpenAI SSE format string output when streaming. **Required** to be enabled (which it is by default) for OpenAI compatibility. |
|
| `RAW_OPENAI_OUTPUT` | `1` | boolean as `int` |Enables raw OpenAI SSE format string output when streaming. **Required** to be enabled (which it is by default) for OpenAI compatibility. |
|
||||||
| `OPENAI_SERVED_MODEL_NAME_OVERRIDE` | `None` | `str` |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 |
|
| `OPENAI_SERVED_MODEL_NAME_OVERRIDE` | `None` | `str` |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 |
|
||||||
| `OPENAI_RESPONSE_ROLE` | `assistant` | `str` |Role of the LLM's Response in OpenAI Chat Completions. |
|
| `OPENAI_RESPONSE_ROLE` | `assistant` | `str` |Role of the LLM's Response in OpenAI Chat Completions. |
|
||||||
**Serverless Settings**
|
|
||||||
|
#### Serverless Settings
|
||||||
|
|
||||||
|
| `Name` | `Default` | `Type/Choices` | `Description` |
|
||||||
|
|-------------------------------------------|-----------------------|--------------------------------------------|---------------|
|
||||||
| `MAX_CONCURRENCY` | `300` | `int` |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 |
|
| `MAX_CONCURRENCY` | `300` | `int` |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 |
|
||||||
| `DISABLE_LOG_STATS` | False | `bool` |Enables or disables vLLM stats logging. |
|
| `DISABLE_LOG_STATS` | False | `bool` |Enables or disables vLLM stats logging. |
|
||||||
| `DISABLE_LOG_REQUESTS` | False | `bool` |Enables or disables vLLM request logging. |
|
| `DISABLE_LOG_REQUESTS` | False | `bool` |Enables or disables vLLM request logging. |
|
||||||
|
|||||||
@@ -8,5 +8,7 @@ typing-extensions>=4.8.0
|
|||||||
pydantic
|
pydantic
|
||||||
pydantic-settings
|
pydantic-settings
|
||||||
hf-transfer
|
hf-transfer
|
||||||
transformers
|
transformers>=4.55.0
|
||||||
bitsandbytes>=0.45.0
|
bitsandbytes>=0.45.0
|
||||||
|
kernels
|
||||||
|
torch==2.6.0
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ variable "REPOSITORY" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable "BASE_IMAGE_VERSION" {
|
variable "BASE_IMAGE_VERSION" {
|
||||||
default = "v2.4.0stable"
|
default = "v2.8.0stable"
|
||||||
}
|
}
|
||||||
|
|
||||||
group "all" {
|
group "all" {
|
||||||
@@ -29,4 +29,4 @@ target "worker-1210" {
|
|||||||
WORKER_CUDA_VERSION = "12.1.0"
|
WORKER_CUDA_VERSION = "12.1.0"
|
||||||
}
|
}
|
||||||
output = ["type=docker,push=${PUSH}"]
|
output = ["type=docker,push=${PUSH}"]
|
||||||
}
|
}
|
||||||
+86
-18
@@ -25,15 +25,68 @@ class vLLMEngine:
|
|||||||
load_dotenv() # For local development
|
load_dotenv() # For local development
|
||||||
self.engine_args = get_engine_args()
|
self.engine_args = get_engine_args()
|
||||||
logging.info(f"Engine args: {self.engine_args}")
|
logging.info(f"Engine args: {self.engine_args}")
|
||||||
self.tokenizer = TokenizerWrapper(self.engine_args.tokenizer or self.engine_args.model,
|
|
||||||
self.engine_args.tokenizer_revision,
|
# Initialize vLLM engine first
|
||||||
self.engine_args.trust_remote_code)
|
|
||||||
self.llm = self._initialize_llm() if engine is None else engine.llm
|
self.llm = self._initialize_llm() if engine is None else engine.llm
|
||||||
|
|
||||||
|
# Only create custom tokenizer wrapper if not using mistral tokenizer mode
|
||||||
|
# For mistral models, let vLLM handle tokenizer initialization
|
||||||
|
if self.engine_args.tokenizer_mode != 'mistral':
|
||||||
|
self.tokenizer = TokenizerWrapper(self.engine_args.tokenizer or self.engine_args.model,
|
||||||
|
self.engine_args.tokenizer_revision,
|
||||||
|
self.engine_args.trust_remote_code)
|
||||||
|
else:
|
||||||
|
# For mistral models, we'll get the tokenizer from vLLM later
|
||||||
|
self.tokenizer = None
|
||||||
|
|
||||||
self.max_concurrency = int(os.getenv("MAX_CONCURRENCY", DEFAULT_MAX_CONCURRENCY))
|
self.max_concurrency = int(os.getenv("MAX_CONCURRENCY", DEFAULT_MAX_CONCURRENCY))
|
||||||
self.default_batch_size = int(os.getenv("DEFAULT_BATCH_SIZE", DEFAULT_BATCH_SIZE))
|
self.default_batch_size = int(os.getenv("DEFAULT_BATCH_SIZE", DEFAULT_BATCH_SIZE))
|
||||||
self.batch_size_growth_factor = int(os.getenv("BATCH_SIZE_GROWTH_FACTOR", DEFAULT_BATCH_SIZE_GROWTH_FACTOR))
|
self.batch_size_growth_factor = int(os.getenv("BATCH_SIZE_GROWTH_FACTOR", DEFAULT_BATCH_SIZE_GROWTH_FACTOR))
|
||||||
self.min_batch_size = int(os.getenv("MIN_BATCH_SIZE", DEFAULT_MIN_BATCH_SIZE))
|
self.min_batch_size = int(os.getenv("MIN_BATCH_SIZE", DEFAULT_MIN_BATCH_SIZE))
|
||||||
|
|
||||||
|
def _get_tokenizer_for_chat_template(self):
|
||||||
|
"""Get tokenizer for chat template application"""
|
||||||
|
if self.tokenizer is not None:
|
||||||
|
return self.tokenizer
|
||||||
|
else:
|
||||||
|
# For mistral models, get tokenizer from vLLM engine
|
||||||
|
# This is a fallback - ideally chat templates should be handled by vLLM directly
|
||||||
|
try:
|
||||||
|
from transformers import AutoTokenizer
|
||||||
|
tokenizer = AutoTokenizer.from_pretrained(
|
||||||
|
self.engine_args.tokenizer or self.engine_args.model,
|
||||||
|
revision=self.engine_args.tokenizer_revision or "main",
|
||||||
|
trust_remote_code=self.engine_args.trust_remote_code
|
||||||
|
)
|
||||||
|
# Create a minimal wrapper
|
||||||
|
class MinimalTokenizerWrapper:
|
||||||
|
def __init__(self, tokenizer):
|
||||||
|
self.tokenizer = tokenizer
|
||||||
|
self.custom_chat_template = os.getenv("CUSTOM_CHAT_TEMPLATE")
|
||||||
|
self.has_chat_template = bool(self.tokenizer.chat_template) or bool(self.custom_chat_template)
|
||||||
|
if self.custom_chat_template and isinstance(self.custom_chat_template, str):
|
||||||
|
self.tokenizer.chat_template = self.custom_chat_template
|
||||||
|
|
||||||
|
def apply_chat_template(self, input):
|
||||||
|
if isinstance(input, list):
|
||||||
|
if not self.has_chat_template:
|
||||||
|
raise ValueError(
|
||||||
|
"Chat template does not exist for this model, you must provide a single string input instead of a list of messages"
|
||||||
|
)
|
||||||
|
elif isinstance(input, str):
|
||||||
|
input = [{"role": "user", "content": input}]
|
||||||
|
else:
|
||||||
|
raise ValueError("Input must be a string or a list of messages")
|
||||||
|
|
||||||
|
return self.tokenizer.apply_chat_template(
|
||||||
|
input, tokenize=False, add_generation_prompt=True
|
||||||
|
)
|
||||||
|
|
||||||
|
return MinimalTokenizerWrapper(tokenizer)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Failed to create fallback tokenizer: {e}")
|
||||||
|
raise e
|
||||||
|
|
||||||
def dynamic_batch_size(self, current_batch_size, batch_size_growth_factor):
|
def dynamic_batch_size(self, current_batch_size, batch_size_growth_factor):
|
||||||
return min(current_batch_size*batch_size_growth_factor, self.default_batch_size)
|
return min(current_batch_size*batch_size_growth_factor, self.default_batch_size)
|
||||||
|
|
||||||
@@ -55,7 +108,8 @@ class vLLMEngine:
|
|||||||
|
|
||||||
async def _generate_vllm(self, llm_input, validated_sampling_params, batch_size, stream, apply_chat_template, request_id, batch_size_growth_factor, min_batch_size: str) -> AsyncGenerator[dict, None]:
|
async def _generate_vllm(self, llm_input, validated_sampling_params, batch_size, stream, apply_chat_template, request_id, batch_size_growth_factor, min_batch_size: str) -> AsyncGenerator[dict, None]:
|
||||||
if apply_chat_template or isinstance(llm_input, list):
|
if apply_chat_template or isinstance(llm_input, list):
|
||||||
llm_input = self.tokenizer.apply_chat_template(llm_input)
|
tokenizer_wrapper = self._get_tokenizer_for_chat_template()
|
||||||
|
llm_input = tokenizer_wrapper.apply_chat_template(llm_input)
|
||||||
results_generator = self.llm.generate(llm_input, validated_sampling_params, request_id)
|
results_generator = self.llm.generate(llm_input, validated_sampling_params, request_id)
|
||||||
n_responses, n_input_tokens, is_first_output = validated_sampling_params.n, 0, True
|
n_responses, n_input_tokens, is_first_output = validated_sampling_params.n, 0, True
|
||||||
last_output_texts, token_counters = ["" for _ in range(n_responses)], {"batch": 0, "total": 0}
|
last_output_texts, token_counters = ["" for _ in range(n_responses)], {"batch": 0, "total": 0}
|
||||||
@@ -122,41 +176,55 @@ class OpenAIvLLMEngine(vLLMEngine):
|
|||||||
super().__init__(vllm_engine)
|
super().__init__(vllm_engine)
|
||||||
self.served_model_name = os.getenv("OPENAI_SERVED_MODEL_NAME_OVERRIDE") or self.engine_args.model
|
self.served_model_name = os.getenv("OPENAI_SERVED_MODEL_NAME_OVERRIDE") or self.engine_args.model
|
||||||
self.response_role = os.getenv("OPENAI_RESPONSE_ROLE") or "assistant"
|
self.response_role = os.getenv("OPENAI_RESPONSE_ROLE") or "assistant"
|
||||||
|
self.lora_adapters = self._load_lora_adapters()
|
||||||
asyncio.run(self._initialize_engines())
|
asyncio.run(self._initialize_engines())
|
||||||
self.raw_openai_output = bool(int(os.getenv("RAW_OPENAI_OUTPUT", 1)))
|
self.raw_openai_output = bool(int(os.getenv("RAW_OPENAI_OUTPUT", 1)))
|
||||||
|
|
||||||
|
def _load_lora_adapters(self):
|
||||||
|
adapters = []
|
||||||
|
try:
|
||||||
|
adapters = json.loads(os.getenv("LORA_MODULES", '[]'))
|
||||||
|
except Exception as e:
|
||||||
|
logging.info(f"---Initialized adapter json load error: {e}")
|
||||||
|
|
||||||
|
for i, adapter in enumerate(adapters):
|
||||||
|
try:
|
||||||
|
adapters[i] = LoRAModulePath(**adapter)
|
||||||
|
logging.info(f"---Initialized adapter: {adapter}")
|
||||||
|
except Exception as e:
|
||||||
|
logging.info(f"---Initialized adapter not worked: {e}")
|
||||||
|
continue
|
||||||
|
return adapters
|
||||||
|
|
||||||
async def _initialize_engines(self):
|
async def _initialize_engines(self):
|
||||||
self.model_config = await self.llm.get_model_config()
|
self.model_config = await self.llm.get_model_config()
|
||||||
self.base_model_paths = [
|
self.base_model_paths = [
|
||||||
BaseModelPath(name=self.engine_args.model, model_path=self.engine_args.model)
|
BaseModelPath(name=self.engine_args.model, model_path=self.engine_args.model)
|
||||||
]
|
]
|
||||||
|
|
||||||
lora_modules = os.getenv('LORA_MODULES', None)
|
|
||||||
if lora_modules is not None:
|
|
||||||
try:
|
|
||||||
lora_modules = json.loads(lora_modules)
|
|
||||||
lora_modules = [LoRAModulePath(**lora_modules)]
|
|
||||||
except:
|
|
||||||
lora_modules = None
|
|
||||||
|
|
||||||
self.serving_models = OpenAIServingModels(
|
self.serving_models = OpenAIServingModels(
|
||||||
engine_client=self.llm,
|
engine_client=self.llm,
|
||||||
model_config=self.model_config,
|
model_config=self.model_config,
|
||||||
base_model_paths=self.base_model_paths,
|
base_model_paths=self.base_model_paths,
|
||||||
lora_modules=None,
|
lora_modules=self.lora_adapters,
|
||||||
prompt_adapters=None,
|
|
||||||
)
|
)
|
||||||
|
await self.serving_models.init_static_loras()
|
||||||
|
|
||||||
|
# Get chat template from vLLM tokenizer if available
|
||||||
|
chat_template = None
|
||||||
|
if self.tokenizer and hasattr(self.tokenizer, 'tokenizer'):
|
||||||
|
chat_template = self.tokenizer.tokenizer.chat_template
|
||||||
|
|
||||||
self.chat_engine = OpenAIServingChat(
|
self.chat_engine = OpenAIServingChat(
|
||||||
engine_client=self.llm,
|
engine_client=self.llm,
|
||||||
model_config=self.model_config,
|
model_config=self.model_config,
|
||||||
models=self.serving_models,
|
models=self.serving_models,
|
||||||
response_role=self.response_role,
|
response_role=self.response_role,
|
||||||
request_logger=None,
|
request_logger=None,
|
||||||
chat_template=self.tokenizer.tokenizer.chat_template,
|
chat_template=chat_template,
|
||||||
chat_template_content_format="auto",
|
chat_template_content_format="auto",
|
||||||
# enable_reasoning=os.getenv('ENABLE_REASONING', 'false').lower() == 'true',
|
# enable_reasoning=os.getenv('ENABLE_REASONING', 'false').lower() == 'true',
|
||||||
# reasoning_parser=None,
|
reasoning_parser= os.getenv('REASONING_PARSER', "") or None,
|
||||||
# return_token_as_token_ids=False,
|
# return_token_as_token_ids=False,
|
||||||
enable_auto_tools=os.getenv('ENABLE_AUTO_TOOL_CHOICE', 'false').lower() == 'true',
|
enable_auto_tools=os.getenv('ENABLE_AUTO_TOOL_CHOICE', 'false').lower() == 'true',
|
||||||
tool_parser=os.getenv('TOOL_CALL_PARSER', "") or None,
|
tool_parser=os.getenv('TOOL_CALL_PARSER', "") or None,
|
||||||
|
|||||||
+5
-1
@@ -26,6 +26,7 @@ DEFAULT_ARGS = {
|
|||||||
"trust_remote_code": os.getenv('TRUST_REMOTE_CODE', 'False').lower() == 'true',
|
"trust_remote_code": os.getenv('TRUST_REMOTE_CODE', 'False').lower() == 'true',
|
||||||
"download_dir": os.getenv('DOWNLOAD_DIR', None),
|
"download_dir": os.getenv('DOWNLOAD_DIR', None),
|
||||||
"load_format": os.getenv('LOAD_FORMAT', 'auto'),
|
"load_format": os.getenv('LOAD_FORMAT', 'auto'),
|
||||||
|
"config_format": os.getenv('CONFIG_FORMAT', 'auto'),
|
||||||
"dtype": os.getenv('DTYPE', 'auto'),
|
"dtype": os.getenv('DTYPE', 'auto'),
|
||||||
"kv_cache_dtype": os.getenv('KV_CACHE_DTYPE', 'auto'),
|
"kv_cache_dtype": os.getenv('KV_CACHE_DTYPE', 'auto'),
|
||||||
"quantization_param_path": os.getenv('QUANTIZATION_PARAM_PATH', None),
|
"quantization_param_path": os.getenv('QUANTIZATION_PARAM_PATH', None),
|
||||||
@@ -92,6 +93,9 @@ DEFAULT_ARGS = {
|
|||||||
"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'),
|
"use_v2_block_manager": os.getenv('USE_V2_BLOCK_MANAGER', 'true'),
|
||||||
}
|
}
|
||||||
|
limit_mm_env = os.getenv('LIMIT_MM_PER_PROMPT')
|
||||||
|
if limit_mm_env is not None:
|
||||||
|
DEFAULT_ARGS["limit_mm_per_prompt"] = convert_limit_mm_per_prompt(limit_mm_env)
|
||||||
|
|
||||||
def match_vllm_args(args):
|
def match_vllm_args(args):
|
||||||
"""Rename args to match vllm by:
|
"""Rename args to match vllm by:
|
||||||
@@ -122,7 +126,7 @@ def get_local_args():
|
|||||||
local_args = json.load(f)
|
local_args = json.load(f)
|
||||||
|
|
||||||
if local_args.get("MODEL_NAME") is None:
|
if local_args.get("MODEL_NAME") is None:
|
||||||
raise ValueError("Model name not found in /local_model_args.json. There was a problem when baking the model in.")
|
logging.warning("Model name not found in /local_model_args.json. There maybe was a problem when baking the model in.")
|
||||||
|
|
||||||
logging.info(f"Using baked in model with args: {local_args}")
|
logging.info(f"Using baked in model with args: {local_args}")
|
||||||
os.environ["TRANSFORMERS_OFFLINE"] = "1"
|
os.environ["TRANSFORMERS_OFFLINE"] = "1"
|
||||||
|
|||||||
+7
-2
@@ -15,9 +15,14 @@ except ImportError:
|
|||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
# Updated to parse multiple comma-separated multimodal limits (e.g., 'image=1,video=0')
|
||||||
def convert_limit_mm_per_prompt(input_string: str):
|
def convert_limit_mm_per_prompt(input_string: str):
|
||||||
key, value = input_string.split('=')
|
result = {}
|
||||||
return {key: int(value)}
|
pairs = input_string.split(',')
|
||||||
|
for pair in pairs:
|
||||||
|
key, value = pair.split('=')
|
||||||
|
result[key] = int(value)
|
||||||
|
return result
|
||||||
|
|
||||||
def count_physical_cores():
|
def count_physical_cores():
|
||||||
with open('/proc/cpuinfo') as f:
|
with open('/proc/cpuinfo') as f:
|
||||||
|
|||||||
+305
-120
@@ -1,5 +1,310 @@
|
|||||||
{
|
{
|
||||||
"versions": {
|
"versions": {
|
||||||
|
"0.10.0": {
|
||||||
|
"imageName": "runpod/worker-v1-vllm:v2.8.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", "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",
|
||||||
|
"ENABLE_AUTO_TOOL_CHOICE", "TOOL_CALL_PARSER"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.9.0": {
|
||||||
|
"imageName": "runpod/worker-v1-vllm:v2.6.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", "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",
|
||||||
|
"ENABLE_AUTO_TOOL_CHOICE", "TOOL_CALL_PARSER"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.9.1": {
|
||||||
|
"imageName": "runpod/worker-v1-vllm:v2.7.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", "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",
|
||||||
|
"ENABLE_AUTO_TOOL_CHOICE", "TOOL_CALL_PARSER"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.9.0": {
|
||||||
|
"imageName": "runpod/worker-v1-vllm:v2.6.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", "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",
|
||||||
|
"ENABLE_AUTO_TOOL_CHOICE", "TOOL_CALL_PARSER"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.8.5": {
|
||||||
|
"imageName": "runpod/worker-v1-vllm:v2.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", "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",
|
||||||
|
"ENABLE_AUTO_TOOL_CHOICE", "TOOL_CALL_PARSER"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.8.4": {
|
"0.8.4": {
|
||||||
"imageName": "runpod/worker-v1-vllm:v2.4.0stable-cuda12.1.0",
|
"imageName": "runpod/worker-v1-vllm:v2.4.0stable-cuda12.1.0",
|
||||||
"minimumCudaVersion": "12.1",
|
"minimumCudaVersion": "12.1",
|
||||||
@@ -487,126 +792,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"schema": {
|
"schema": {
|
||||||
|
|||||||
Reference in New Issue
Block a user