diff --git a/components/src/dynamo/sglang/CLAUDE.md b/components/src/dynamo/sglang/CLAUDE.md index 802f13b53274..bfd44977eadf 100644 --- a/components/src/dynamo/sglang/CLAUDE.md +++ b/components/src/dynamo/sglang/CLAUDE.md @@ -20,7 +20,7 @@ support the current version plus 1 version back (N and N-1). The pattern: enough surface area to cover what Dynamo actually calls. 4. Each fallback branch in `_compat.py` MUST have a comment noting which SGLang version it supports and when it can be removed, e.g.: - `# Fallback for sglang <= 0.5.16. Remove when min supported version is 0.5.18+` + `# Fallback for sglang <= 0.5.17. Remove when min supported version is 0.5.19+` 5. When a new SGLang version is released and the old N-1 falls outside the support window, delete the corresponding fallback branches and polyfills from `_compat.py`. If `_compat.py` becomes trivial re-exports, inline the imports and delete the file. @@ -70,10 +70,11 @@ Worker dispatch (main.py:60-132): have `max_running_requests`, `dllm_algorithm_config`, or other LLM-specific fields. Use `getattr()` when accessing fields that may not exist on the stub. -SGLang 0.5.17 makes a resolved `ServerArgs` unconditionally read-only. Apply Dynamo's -post-resolution startup overrides through `_compat.override_server_args()`; control-plane -updates after engine creation should use the tokenizer manager's update API instead of -assigning fields on `server_args`. +SGLang 0.5.17 and 0.5.18 make a resolved `ServerArgs` unconditionally read-only. +Apply Dynamo's post-resolution, pre-publish startup updates through +`_compat.override_server_args()`; it selects 0.5.17's `override()` or 0.5.18's +`_late_resolution()` API. Control-plane updates after engine creation should use the +tokenizer manager's update API instead of assigning fields on `server_args`. **DynamoConfig** combines `DynamoRuntimeConfig` (common flags like `--namespace`, `--output-modalities`, `--media-output-fs-url`) with `DynamoSGLangConfig` (sglang-specific diff --git a/components/src/dynamo/sglang/_compat.py b/components/src/dynamo/sglang/_compat.py index bd242c5cd35e..4e33131903b7 100644 --- a/components/src/dynamo/sglang/_compat.py +++ b/components/src/dynamo/sglang/_compat.py @@ -41,7 +41,7 @@ def _warn_require_reasoning_unsupported() -> None: def ensure_sglang_tensor_image_size() -> None: """Allow SGLang's image-token resolver to handle decoded image tensors. - SGLang 0.5.13 through 0.5.17 assume every decoded image exposes the PIL + SGLang 0.5.13 through 0.5.18 assume every decoded image exposes the PIL ``height``/``width`` attributes. Its CUDA JPEG decoder instead returns a CHW tensor, causing multimodal requests to fall back to retokenization. @@ -82,15 +82,20 @@ def resolve_image_token_counts(self: Any, images: list[Any]) -> list[int]: def override_server_args(server_args: Any, source: str, **fields: Any) -> None: - """Apply a post-resolution SGLang configuration update. - - SGLang 0.5.17 makes ``ServerArgs`` unconditionally read-only after - resolution. Both supported CUDA releases expose ``ServerArgs.override`` as - the audited mutation API, so Dynamo must use it instead of assigning fields. - The separately pinned XPU image still uses SGLang 0.5.11, which predates - that API; preserve its legacy assignment behavior until its engine pin is - upgraded. + """Apply a post-resolution, pre-publish SGLang configuration update. + + SGLang 0.5.18 replaced ``ServerArgs.override`` with + ``ServerArgs._late_resolution`` for launcher-stage updates that every holder + of the instance must observe. SGLang 0.5.17 exposes the former API. The + separately pinned XPU image still uses SGLang 0.5.11, which predates both; + preserve its legacy assignment behavior until its engine pin is upgraded. """ + late_resolution = getattr(server_args, "_late_resolution", None) + if callable(late_resolution): + late_resolution(source, **fields) + return + + # Fallback for SGLang 0.5.17. Remove when minimum supported SGLang is 0.5.18+. override = getattr(server_args, "override", None) if callable(override): override(source, **fields) diff --git a/components/src/dynamo/sglang/init_llm.py b/components/src/dynamo/sglang/init_llm.py index 2279d10481e5..6f6974f9f31e 100644 --- a/components/src/dynamo/sglang/init_llm.py +++ b/components/src/dynamo/sglang/init_llm.py @@ -14,7 +14,6 @@ from dynamo.common.utils.endpoint_types import parse_endpoint_types from dynamo.llm import ModelInput, ModelType, WorkerType from dynamo.runtime import DistributedRuntime -from dynamo.sglang._compat import override_server_args from dynamo.sglang.args import Config from dynamo.sglang.health_check import ( SglangDisaggHealthCheckPayload, @@ -67,15 +66,9 @@ async def init_decode( engine = snapshot_engine load_time = 0.0 if getattr(server_args, "enable_forward_pass_metrics", False): - logging.warning( - "Forward pass metrics disabled in snapshot mode: the engine was " - "created before the endpoint existed, so its FPM publisher bound " - "a different IPC path than the relay would subscribe to." - ) - override_server_args( - server_args, - "dynamo.snapshot", - enable_forward_pass_metrics=False, + raise RuntimeError( + "Snapshot ServerArgs must disable forward-pass metrics before " + "engine creation" ) else: set_forward_pass_metrics_worker_id(server_args, generate_endpoint) @@ -227,15 +220,9 @@ async def init_prefill( engine = snapshot_engine load_time = 0.0 if getattr(server_args, "enable_forward_pass_metrics", False): - logging.warning( - "Forward pass metrics disabled in snapshot mode: the engine was " - "created before the endpoint existed, so its FPM publisher bound " - "a different IPC path than the relay would subscribe to." - ) - override_server_args( - server_args, - "dynamo.snapshot", - enable_forward_pass_metrics=False, + raise RuntimeError( + "Snapshot ServerArgs must disable forward-pass metrics before " + "engine creation" ) else: set_forward_pass_metrics_worker_id(server_args, generate_endpoint) diff --git a/components/src/dynamo/sglang/snapshot.py b/components/src/dynamo/sglang/snapshot.py index eb65065f7b8a..50caddc3851b 100644 --- a/components/src/dynamo/sglang/snapshot.py +++ b/components/src/dynamo/sglang/snapshot.py @@ -139,7 +139,13 @@ async def prepare_snapshot_engine( # Enable memory_saver so GPU memory can be released for CRIU. # When using GMS, weights use VA-stable unmap/remap (no CPU backup); GMS # forbids enable_weights_cpu_backup. Otherwise use CPU backup for weights. - snapshot_overrides = {"enable_memory_saver": True} + snapshot_overrides = { + "enable_memory_saver": True, + # Snapshot engines are created before the Dynamo endpoint exists, so + # their FPM publisher cannot be wired to the relay. Disable it before + # SGLang publishes ServerArgs; 0.5.18 forbids changing it afterwards. + "enable_forward_pass_metrics": False, + } try: from gpu_memory_service.integrations.sglang import is_gms_active diff --git a/components/src/dynamo/sglang/tests/test_sglang_unit.py b/components/src/dynamo/sglang/tests/test_sglang_unit.py index 0d45059522e9..df37ed92e866 100644 --- a/components/src/dynamo/sglang/tests/test_sglang_unit.py +++ b/components/src/dynamo/sglang/tests/test_sglang_unit.py @@ -99,6 +99,27 @@ def test_diffusion_generator_kwargs_omits_unset_master_port(): assert "master_port" not in kwargs +def test_override_server_args_supports_sglang_0_5_17(): + calls = [] + + class ServerArgs: + def override(self, source, **fields): + calls.append((source, fields)) + for name, value in fields.items(): + object.__setattr__(self, name, value) + + server_args = ServerArgs() + + override_server_args( + server_args, + "dynamo.test", + enable_memory_saver=True, + ) + + assert calls == [("dynamo.test", {"enable_memory_saver": True})] + assert server_args.enable_memory_saver is True + + def test_override_server_args_supports_legacy_xpu_pin(): server_args = SimpleNamespace(enable_memory_saver=False) diff --git a/docs/fern/components/releases.data.ts b/docs/fern/components/releases.data.ts index f2030b272e17..e64da5dfa491 100644 --- a/docs/fern/components/releases.data.ts +++ b/docs/fern/components/releases.data.ts @@ -71,7 +71,7 @@ export const CURRENT_TAG = "1.4.0"; export const CURRENT_WHEEL = "1.4.0"; export const MAIN_TOT: BackendPins = { - sglang: "0.5.17", + sglang: "0.5.18", trtllm: "1.3.0rc24", vllm: "0.27.1", nixlSglang: "1.3.2", @@ -1177,7 +1177,7 @@ export const FEATURE_INTERACTIONS: BackendInteractions[] = [ // KV Block Manager [{ status: "wip" }, { status: "wip" }, { status: "wip" }, { status: "na" }], // Multimodal - [{ status: "yes", label: "Supported serving patterns", note: "Supports aggregated EPD, E/PD, and E/P/D patterns. Traditional disaggregated EP/D is not supported.", source: "/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/sglang-multimodal" }, { status: "yes", label: "Image-aware routing on Dynamo's SGLang image", note: "Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.17, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing.", source: "/dynamo/dev/multimodal/multimodal-kv-routing" }, { status: "na" }, { status: "wip" }, { status: "na" }], + [{ status: "yes", label: "Supported serving patterns", note: "Supports aggregated EPD, E/PD, and E/P/D patterns. Traditional disaggregated EP/D is not supported.", source: "/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/sglang-multimodal" }, { status: "yes", label: "Image-aware routing on Dynamo's SGLang image", note: "Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.18, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing.", source: "/dynamo/dev/multimodal/multimodal-kv-routing" }, { status: "na" }, { status: "wip" }, { status: "na" }], // Request Migration [{ status: "yes" }, { status: "yes" }, { status: "yes" }, { status: "wip" }, { status: "yes" }, { status: "na" }], // Request Cancellation diff --git a/docs/fern/pages/developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md b/docs/fern/pages/developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md index 091660aae048..d65fd5ef4e1a 100644 --- a/docs/fern/pages/developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md +++ b/docs/fern/pages/developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md @@ -122,7 +122,7 @@ The launcher configures KV events on each worker and sets `--router-mode kv` wit The Dynamo SGLang image includes both routing prerequisites: - Dynamo is built with the `mm-routing` Rust feature. -- SGLang 0.5.13 or later includes `GenerateReqInput.mm_hashes` support. Dynamo currently pins 0.5.17. +- SGLang 0.5.13 or later includes `GenerateReqInput.mm_hashes` support. Dynamo currently pins 0.5.18. Custom installations on SGLang 0.5.12 or earlier need the `mm_hashes` change from [sgl-project/sglang#25300](https://github.com/sgl-project/sglang/pull/25300). diff --git a/docs/fern/pages/reference/general/compatibility.mdx b/docs/fern/pages/reference/general/compatibility.mdx index a01fbccd0e2f..72720c6ccc68 100644 --- a/docs/fern/pages/reference/general/compatibility.mdx +++ b/docs/fern/pages/reference/general/compatibility.mdx @@ -156,7 +156,7 @@ Current stable release: v1.4.0 (container tag `1.4.0`, wheel version `1.4.0`). | Dynamo | Type | SGLang | TensorRT-LLM | vLLM | NIXL (SGL / TRT / vLLM) | UCX | | --- | --- | --- | --- | --- | --- | --- | -| main (ToT) | development head | 0.5.17 | 1.3.0rc24 | 0.27.1 | 1.3.2 / 1.3.1 / 1.3.2 | - | +| main (ToT) | development head | 0.5.18 | 1.3.0rc24 | 0.27.1 | 1.3.2 / 1.3.1 / 1.3.2 | - | | v1.4.0 | stable | 0.5.16 | 1.3.0rc22 | 0.26.0 | 1.3.0 / 1.3.1 / 1.3.2 | 1.21.x | | v1.3.1 | patch | 0.5.14 | 1.3.0rc19 | 0.23.0 | 1.3.2 / 1.0.1 / 1.1.0 | 1.20.x | | v1.3.0 | stable | 0.5.14 | 1.3.0rc19 | 0.23.0 | 1.3.0 / 1.0.1 / 1.1.0 | 1.20.x | @@ -306,10 +306,10 @@ Each cell states whether the row feature works together with the column feature. | Feature | Disaggregated Serving | KV-Aware Routing | SLA-Based Planner | KV Block Manager | Multimodal | Request Migration | Request Cancellation | LoRA | Tool Calling | Speculative Decoding | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Disaggregated Serving | n/a | Yes | Yes | Experimental | Yes — Supports aggregated EPD, E/PD, and E/P/D patterns. Traditional disaggregated EP/D is not supported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/sglang-multimodal) | Yes | Experimental — Cancellation during remote prefill is not supported in disaggregated mode. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | Experimental — Code hooks exist, but examples and documentation are not yet available. | -| KV-Aware Routing | Yes | n/a | Yes | Experimental | Yes — Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.17, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing. (https://docs.nvidia.com/dynamo/dev/multimodal/multimodal-kv-routing) | Yes | Yes | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | Experimental | +| KV-Aware Routing | Yes | n/a | Yes | Experimental | Yes — Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.18, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing. (https://docs.nvidia.com/dynamo/dev/multimodal/multimodal-kv-routing) | Yes | Yes | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | Experimental | | SLA-Based Planner | Yes | Yes | n/a | Experimental | n/a | Yes | Yes | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | n/a | | KV Block Manager | Experimental | Experimental | Experimental | n/a | Experimental | Experimental | Experimental | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Experimental | Experimental | -| Multimodal | Yes — Supports aggregated EPD, E/PD, and E/P/D patterns. Traditional disaggregated EP/D is not supported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/sglang-multimodal) | Yes — Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.17, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing. (https://docs.nvidia.com/dynamo/dev/multimodal/multimodal-kv-routing) | n/a | Experimental | n/a | Yes | Experimental | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | n/a | +| Multimodal | Yes — Supports aggregated EPD, E/PD, and E/P/D patterns. Traditional disaggregated EP/D is not supported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/sglang-multimodal) | Yes — Hash forwarding is upstream in SGLang 0.5.13+ and Dynamo pins 0.5.18, so the shipped image routes on image overlap. A custom build without that patch still serves the request but degrades to text-prefix routing. (https://docs.nvidia.com/dynamo/dev/multimodal/multimodal-kv-routing) | n/a | Experimental | n/a | Yes | Experimental | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | n/a | | Request Migration | Yes | Yes | Yes | Experimental | Yes | n/a | Yes | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | Experimental | | Request Cancellation | Experimental — Cancellation during remote prefill is not supported in disaggregated mode. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | Yes | Experimental | Experimental | Yes | n/a | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | Yes | n/a | | LoRA | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | n/a | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | No — SGLang does not support LoRA in Dynamo, so every LoRA pairing is unsupported. (https://docs.nvidia.com/dynamo/dev/knowledge-base/modular-components/backends/sg-lang/overview) | diff --git a/docs/fern/pages/reference/general/releases-machine-readable.mdx b/docs/fern/pages/reference/general/releases-machine-readable.mdx index 2c6241aa2e5b..6077392add42 100644 --- a/docs/fern/pages/reference/general/releases-machine-readable.mdx +++ b/docs/fern/pages/reference/general/releases-machine-readable.mdx @@ -15,7 +15,7 @@ Current stable release: v1.4.0 (Aug 14, 2026; container tag `1.4.0`, wheel versi | Version | Kind | Date | SGLang | TensorRT-LLM | vLLM | NIXL (SGL / TRT / vLLM) | UCX | Notes | Delta | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| main (ToT) | development head | - | 0.5.17 | 1.3.0rc24 | 0.27.1 | 1.3.2 / 1.3.1 / 1.3.2 | - | - | - | +| main (ToT) | development head | - | 0.5.18 | 1.3.0rc24 | 0.27.1 | 1.3.2 / 1.3.1 / 1.3.2 | - | - | - | | v1.4.0 | stable | Aug 14, 2026 | 0.5.16 | 1.3.0rc22 | 0.26.0 | 1.3.0 / 1.3.1 / 1.3.2 | 1.21.x | [release notes](https://docs.nvidia.com/dynamo/dev/reference/releases/v1-4-0) | Audit subsystem migrated into request trace (DYN_AUDIT_* honored as legacy aliases); HTTP header capture in trace records is an explicit fail-closed allowlist; deprecated multimodal worker flags and vLLM worker-role flags removed; runtime images no longer bundle software video decoders (H.264/H.265 decodes via NVDEC); UCX 1.21.x. | | v1.3.1 | patch | Aug 5, 2026 | 0.5.14 | 1.3.0rc19 | 0.23.0 | 1.3.2 / 1.0.1 / 1.1.0 | 1.20.x | [release notes](https://docs.nvidia.com/dynamo/dev/reference/releases/v1-3-0#v131) | Patch release. Fixes disaggregated SGLang serving over AWS EFA on GB200: the SGLang EFA runtime moves to NIXL 1.3.2 and all three EFA images to EFA Installer 1.49.0. Backend pins are otherwise unchanged from v1.3.0. | | v1.3.0 | stable | Jul 20, 2026 | 0.5.14 | 1.3.0rc19 | 0.23.0 | 1.3.0 / 1.0.1 / 1.1.0 | 1.20.x | [release notes](https://docs.nvidia.com/dynamo/dev/reference/releases/v1-3-0) | CUDA 12 container images discontinued; EFA variants retagged from -efa-amd64 to -efa (the images were already multi-arch — the old suffix was misleading); GA wheels published as 1.3.0.post1 (containers stay :1.3.0); UCX 1.20.x. | diff --git a/docs/fern/pages/use-cases/multimodal-serving/multimodal-kv-routing.md b/docs/fern/pages/use-cases/multimodal-serving/multimodal-kv-routing.md index 9a16e907d127..8a40033a771e 100644 --- a/docs/fern/pages/use-cases/multimodal-serving/multimodal-kv-routing.md +++ b/docs/fern/pages/use-cases/multimodal-serving/multimodal-kv-routing.md @@ -113,5 +113,5 @@ URI string, while frontend decoding hashes the decoded bytes. |---------|--------------|--------|-------| | [vLLM](../../developer-guide/knowledge-base/modular-components/backends/vllm/multimodal.md#multimodal-kv-routing) | Rust frontend (default) | Yes | Supported families include Qwen2-VL, Qwen2.5-VL, Qwen3-VL, LLaVA 1.5, LLaVA-NeXT, Llama 4, Kimi K2.5/K2.6, Qwen3.5, and Qwen3.6. The rest use text-prefix-only routing. | | [vLLM](../../developer-guide/knowledge-base/modular-components/backends/vllm/multimodal.md#multimodal-kv-routing) | Python chat processor | Yes | Uses vLLM’s own multimodal processor — supports any VLM that vLLM supports. | -| [SGLang](../../developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md#multimodal-kv-routing) | Rust frontend (default) | Yes | Hash forwarding is upstream in SGLang 0.5.13+; Dynamo pins 0.5.17. Older custom installations need the upstream patch. | +| [SGLang](../../developer-guide/knowledge-base/modular-components/backends/sglang/multimodal.md#multimodal-kv-routing) | Rust frontend (default) | Yes | Hash forwarding is upstream in SGLang 0.5.13+; Dynamo pins 0.5.18. Older custom installations need the upstream patch. | | [TensorRT-LLM](../../developer-guide/knowledge-base/modular-components/backends/tensorrt-llm/multimodal.md#multimodal-kv-routing) | Rust frontend (default) | Yes | Supported model scope is the Qwen2-VL family (Qwen2-VL / Qwen2.5-VL / Qwen3-VL) and Kimi (Kimi-K2.5 / Kimi-K2.6). Other multimodal models fall back to text-prefix routing. | diff --git a/pyproject.toml b/pyproject.toml index d1d3d4fbc64b..047da874f2aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ vllm = [ sglang = [ "uvloop", - "sglang[diffusion]==0.5.17", + "sglang[diffusion]==0.5.18", # sglang[diffusion] dropped accelerate in 0.5.12; diffusers still needs it. "accelerate>=0.17.0", "blake3>=1.0.0,<2.0.0",