Remove deprecated Mamba flags from doc, wrong FP8 GEMM docstrings and change Nemotron image to 0.5.15 (#31094)
Co-authored-by: Brayden Zhong <brayden@radixark.ai>
This commit is contained in:
co-authored by
Brayden Zhong
parent
c00206c68c
commit
7fc3fb9657
@@ -45,7 +45,7 @@ import { Ling26FlashDeployment } from '/src/snippets/autoregressive/ling-26-flas
|
||||
- Native context is 128K. Enable YaRN (`--json-model-override-args '{"rope_scaling": {"rope_type": "yarn", "factor": 2.0, ...}}'`) to extend to 256K — the snippet does this for you.
|
||||
- `--tool-call-parser qwen25` matches the model's `<tool_call>...</tool_call>` schema.
|
||||
- The recommended baseline does **not** include `--reasoning-parser qwen3`. Ling-2.6 is a controllable-reasoning model whose chat template defaults to `detailed thinking off`; the SGLang `qwen3` reasoning parser, in contrast, assumes default-thinking semantics and would mis-route normal output into `reasoning_content`. Only enable it if you specifically want `<think>...</think>` blocks split out — see [§4.3 Thinking Mode](#4-3-thinking-mode).
|
||||
- **MTP (multi-token prediction)** is supported. Add `--speculative-algorithm NEXTN --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4 --mamba-scheduler-strategy extra_buffer` to enable it — see the [model card](https://huggingface.co/inclusionAI/Ling-2.6-flash#run-inference) for the full example.
|
||||
- **MTP (multi-token prediction)** is supported. Add `--speculative-algorithm NEXTN --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4 --mamba-radix-cache-strategy extra_buffer` to enable it — see the [model card](https://huggingface.co/inclusionAI/Ling-2.6-flash#run-inference) for the full example.
|
||||
|
||||
### 3.2 Ling-2.6-1T
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ import { InternS2PreviewDeployment } from "/src/snippets/autoregressive/intern-s
|
||||
- Use `tp>=2` for the NVIDIA deployment commands.
|
||||
- Use `--reasoning-parser qwen3` to separate reasoning content from final content in streaming responses.
|
||||
- Use `--tool-call-parser qwen3_coder` when serving tool-calling workloads.
|
||||
- Add `--mamba-scheduler-strategy extra_buffer` with `--speculative-algo 'NEXTN'` to enable MTP.
|
||||
- Add `--mamba-radix-cache-strategy extra_buffer` with `--speculative-algo 'NEXTN'` to enable MTP.
|
||||
- If weight loading is slow, add `--model-loader-extra-config='{"enable_multithread_load": "true", "num_threads": 64}'`.
|
||||
|
||||
## 4. Model Invocation
|
||||
|
||||
@@ -217,7 +217,7 @@ The Deploy panel above covers the eight serving variants; **LFM2.5-1.2B-JP** (or
|
||||
- **VL vision tower (`--mm-attention-backend`)**: on sm100 the `trtllm_mha` default is fastest for text but applies *causal* attention to image tokens. For the VL model, pass `--mm-attention-backend fa4` on B200/B300 (or `fa3` on H100/H200) to restore bidirectional image-token attention and full vision quality.
|
||||
- **VL multimodal feature transport**: the generator launches the VL models with `SGLANG_USE_CUDA_IPC_TRANSPORT=1 SGLANG_USE_IPC_POOL_HANDLE_CACHE=1`. The first moves the processor→scheduler image-feature handoff onto CUDA IPC instead of serializing tensors between processes; the second ships the pool handle so the scheduler opens it once and caches it, instead of opening a per-item handle on every request. On the image serving workload (1 image @ 720p, measured on VL-1.6B on H100 and B200) this pair is worth roughly 30–50% higher image throughput and 30–40% lower image TTFT vs running without them (measured on VL-1.6B, H100 and B200); decode speed (TPOT) is unaffected.
|
||||
- **VL-450M memory headroom (`--mem-fraction-static 0.8`)**: with the default memory fraction, the 450M's small weights make SGLang size its static KV/mamba pools to nearly the whole GPU, leaving no headroom for image-feature tensors — under sustained concurrent image load the scheduler can crash with a CUDA OOM in the radix-cache free path. The generator caps `--mem-fraction-static 0.8` for VL-450M; the pool is still far larger than this model ever needs.
|
||||
- **Mamba scheduling**: LFM2.5 runs on the default `no_buffer` mamba scheduler strategy — no `--mamba-scheduler-strategy` flag is needed. The `extra_buffer` strategy (an overlap-scheduling throughput optimization available for some Gated-DeltaNet hybrids) does not apply to LFM2.5, whose convolution blocks use `mamba_chunk_size=1`.
|
||||
- **Mamba scheduling**: LFM2.5 runs on the default `no_buffer` mamba scheduler strategy — no `--mamba-radix-cache-strategy` flag is needed. The `extra_buffer` strategy (an overlap-scheduling throughput optimization available for some Gated-DeltaNet hybrids) does not apply to LFM2.5, whose convolution blocks use `mamba_chunk_size=1`.
|
||||
- **Hardware requirements**: all LFM2.5 models run on a single GPU (TP=1) on either Hopper or Blackwell. The 1.2B / 350M dense models fit in a few GB; the 8B-A1B MoE needs roughly 16 GB for bf16 weights plus KV cache. Multi-GPU tensor parallelism is not required for any variant.
|
||||
|
||||
**Recommended sampling parameters** — pass these explicitly on every request. Some LFM2.5 checkpoints do not ship sampling defaults in `generation_config.json`, so the server will not apply them for you. `top_k`, `min_p`, and `repetition_penalty` are not standard OpenAI `chat.completions` fields — pass them through **`extra_body`** and SGLang forwards them to its sampler. Do not set `max_tokens` unless you intend to cap output, as it can truncate a response (or a reasoning model's chain-of-thought) mid-stream.
|
||||
|
||||
@@ -34,14 +34,10 @@ Available model variants on HuggingFace:
|
||||
|
||||
## 2. SGLang Installation
|
||||
|
||||
Nemotron3-Ultra support has not yet propagated to `lmsysorg/sglang:latest` or any stable release. Pull one of the two dedicated images below — matching your CUDA version — to get a runtime with Nemotron3-Ultra support.
|
||||
Nemotron3-Ultra support is included in the latest stable release.
|
||||
|
||||
```bash Command
|
||||
# CUDA 13
|
||||
docker pull lmsysorg/sglang:dev-nemotron3-ultra
|
||||
|
||||
# CUDA 12
|
||||
docker pull lmsysorg/sglang:dev-cu12-nemotron3-ultra
|
||||
docker pull lmsysorg/sglang:latest
|
||||
```
|
||||
## 3. Model Deployment
|
||||
|
||||
@@ -64,7 +60,7 @@ The generator only emits a runnable command for combinations that NVIDIA / SGLan
|
||||
|
||||
- **Mamba scheduler strategy**:
|
||||
|
||||
Always launch with `--mamba-scheduler-strategy extra_buffer`. This hybrid Transformer-Mamba model requires the `extra_buffer` strategy for correct scheduling of its Mamba state.
|
||||
Always launch with `--mamba-radix-cache-strategy extra_buffer`. This hybrid Transformer-Mamba model requires the `extra_buffer` strategy for correct scheduling of its Mamba state.
|
||||
|
||||
- **Mamba backend**:
|
||||
|
||||
@@ -119,7 +115,7 @@ python3 -m sglang.launch_server \
|
||||
--model-path nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-BF16 \
|
||||
--trust-remote-code \
|
||||
--tp 8 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--attention-backend trtllm_mha \
|
||||
--tool-call-parser qwen3_coder \
|
||||
--reasoning-parser nemotron_3
|
||||
@@ -449,7 +445,7 @@ python3 -m sglang.launch_server \
|
||||
--model-path nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4 \
|
||||
--trust-remote-code \
|
||||
--tp 4 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--attention-backend trtllm_mha \
|
||||
--max-running-requests 1024
|
||||
```
|
||||
@@ -525,7 +521,7 @@ python3 -m sglang.launch_server \
|
||||
--model-path nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4 \
|
||||
--trust-remote-code \
|
||||
--tp 4 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--attention-backend trtllm_mha \
|
||||
--reasoning-parser nemotron_3
|
||||
```
|
||||
|
||||
@@ -51,9 +51,9 @@ import { MiniCPMV46Deployment } from '/src/snippets/autoregressive/minicpm-v-4_6
|
||||
|
||||
### 3.2 Configuration Tips
|
||||
|
||||
- **Mamba Radix Cache**: Qwen3.5's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-scheduler-strategy`:
|
||||
- **Mamba Radix Cache**: Qwen3.5's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-radix-cache-strategy`:
|
||||
- **V1 (`no_buffer`)**: Default. No overlap scheduler, lower memory usage. Required for AMD MI GPUs.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-scheduler-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-radix-cache-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- The `--mem-fraction-static` flag is recommended for optimal memory utilization, adjust it based on your hardware and workload.
|
||||
- Context length defaults to 262,144 tokens. If you encounter OOM errors, consider reducing it, but maintain at least 128K to preserve thinking capabilities.
|
||||
- To speed up weight loading for this large model, add `--model-loader-extra-config='{"enable_multithread_load": "true","num_threads": 64}'` to the launch command.
|
||||
@@ -73,7 +73,7 @@ sglang serve --model-path openbmb/MiniCPM-V-4.6 \
|
||||
--trust-remote-code \
|
||||
--dtype bfloat16 \
|
||||
--mem-fraction-static 0.15 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--page-size 64 \
|
||||
--host 0.0.0.0 --port 30000
|
||||
```
|
||||
@@ -307,7 +307,7 @@ CUDA_VISIBLE_DEVICES=0 python -m sglang.launch_server \
|
||||
--trust-remote-code \
|
||||
--dtype bfloat16 \
|
||||
--mem-fraction-static 0.5 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--chunked-prefill-size -1 \
|
||||
--host 0.0.0.0 --port 30000
|
||||
```
|
||||
|
||||
@@ -45,9 +45,9 @@ This section provides a progressive guide from quick deployment to performance o
|
||||
- **Context Length**: The model supports up to 256K tokens natively. If you encounter OOM issues, try `--context-length 32768`.
|
||||
- **Tool Use**: To enable tool calling capabilities, use the `--tool-call-parser qwen3_coder` flag.
|
||||
- **Sampling Parameters**: SGLang automatically applies the recommended sampling parameters from the model's `generation_config.json`. No manual configuration is needed.
|
||||
- **Mamba Radix Cache**: Qwen3-Coder-Next's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-scheduler-strategy`:
|
||||
- **Mamba Radix Cache**: Qwen3-Coder-Next's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-radix-cache-strategy`:
|
||||
- **V1 (`no_buffer`)**: Default. No overlap scheduler, lower memory usage.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-scheduler-strategy extra_buffer --page-size 64`. Requires FLA kernel backend. Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-radix-cache-strategy extra_buffer --page-size 64`. Requires FLA kernel backend. Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- **Xeon CPU service configuration**: Please refer to the `Notes` part in the serving engine launching section in [the SGLang CPU server document](../../../docs/hardware-platforms/cpu_server#launch-of-the-serving-engine) to better understand how to configure the arguments, especially for TP (tensor parallel) and NUMA binding settings.
|
||||
|
||||
## 4. Model Invocation
|
||||
|
||||
@@ -54,9 +54,9 @@ The Qwen3-Next series comes in only one size but offers different thinking modes
|
||||
|
||||
- `--mamba-full-memory-ratio`: Adjust `--mamba-full-memory-ratio` to set the ratio of mamba state memory to full kv cache memory. The default setting is `0.9`.
|
||||
|
||||
- **Mamba Radix Cache**: Qwen3-Next's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-scheduler-strategy`:
|
||||
- **Mamba Radix Cache**: Qwen3-Next's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-radix-cache-strategy`:
|
||||
- **V1 (`no_buffer`)**: Default. No overlap scheduler, lower memory usage.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-scheduler-strategy extra_buffer --page-size 64`. Requires FLA kernel backend. Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-radix-cache-strategy extra_buffer --page-size 64`. Requires FLA kernel backend. Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
|
||||
- **Xeon CPU service configuration**: Please refer to the `Notes` part in the serving engine launching section in [the SGLang CPU server document](../../../docs/hardware-platforms/cpu_server#launch-of-the-serving-engine) to better understand how to configure the arguments, especially for TP (tensor parallel) and NUMA binding settings.
|
||||
|
||||
|
||||
@@ -129,9 +129,9 @@ This section provides deployment configurations optimized for different hardware
|
||||
- **H100 FP8:** Add `--enable-symm-mem` to enable NCCL symmetric memory for faster collectives and better performance under multi-GPU settings.
|
||||
- **AMD GPUs (MI300X / MI325X / MI355X):** Use `SGLANG_USE_AITER=1` and `SGLANG_USE_AITER_UNIFIED_ATTN=1` with `--attention-backend aiter`, which requires `--page-size 16` and can also enable `--enable-aiter-allreduce-fusion`. Additionally set `AITER_FLYDSL_FORCE=1` to force the AITER FlyDSL MoE kernels and `SGLANG_MAMBA_SSM_DTYPE=bfloat16` to store the Mamba SSM state in bfloat16 (instead of the default float32).
|
||||
- **Watchdog timeout:** Increase `--watchdog-timeout` to `1200` or higher for this large model, as weight loading can take significant time.
|
||||
- **Mamba Radix Cache**: Qwen3.5's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-scheduler-strategy`:
|
||||
- **Mamba Radix Cache**: Qwen3.5's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-radix-cache-strategy`:
|
||||
- **V1 (`no_buffer`)**: Default. No overlap scheduler, lower memory usage. Required for AMD MI GPUs.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-scheduler-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-radix-cache-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput. Strictly superior in non-KV-cache-bound scenarios; in KV-cache-bound cases, weigh the overlap scheduling benefit against reduced max concurrency. `--page-size` must satisfy `FLA_CHUNK_SIZE % page_size == 0` or `page_size % FLA_CHUNK_SIZE == 0` (`FLA_CHUNK_SIZE` is currently 64).
|
||||
- The `--mem-fraction-static` flag is recommended for optimal memory utilization, adjust it based on your hardware and workload.
|
||||
- Context length defaults to 262,144 tokens. If you encounter OOM errors, consider reducing it, but maintain at least 128K to preserve thinking capabilities.
|
||||
- To speed up weight loading for this large model, add `--model-loader-extra-config='{"enable_multithread_load": "true","num_threads": 64}'` to the launch command.
|
||||
|
||||
@@ -103,9 +103,9 @@ This section provides deployment configurations optimized for different hardware
|
||||
### 3.2 Configuration Tips
|
||||
|
||||
- Speculative decoding (MTP) can significantly reduce latency for interactive use cases.
|
||||
- **Mamba Radix Cache**: Qwen3.6's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-scheduler-strategy`:
|
||||
- **Mamba Radix Cache**: Qwen3.6's hybrid Gated Delta Networks architecture supports two mamba scheduling strategies via `--mamba-radix-cache-strategy`:
|
||||
- **V1 (`no_buffer`)**: Default. No overlap scheduler, lower memory usage.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-scheduler-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput.
|
||||
- **V2 (`extra_buffer`)**: Enables overlap scheduling and branching point caching with `--mamba-radix-cache-strategy extra_buffer --page-size 64`. Requires FLA kernel backend (NVIDIA GPUs only). Trades higher mamba state memory for better throughput.
|
||||
- The `--mem-fraction-static` flag is recommended for optimal memory utilization, adjust it based on your hardware and workload.
|
||||
- Context length defaults to 262,144 tokens. If you encounter OOM errors, consider reducing it, but maintain at least 128K to preserve thinking capabilities.
|
||||
- **CUDA IPC Transport**: Add `SGLANG_USE_CUDA_IPC_TRANSPORT=1` as an environment variable to use CUDA IPC for transferring multimodal features, significantly improving TTFT (Time To First Token). Note: this consumes additional memory proportional to image size, so you may need to lower `--mem-fraction-static` or `--max-running-requests`.
|
||||
|
||||
@@ -248,7 +248,7 @@ Backend selection applies to **blockwise FP8**, **MXFP8** (dense linear), and **
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>cutlass</code></td>
|
||||
<td>SM90, SM100/120</td>
|
||||
<td>SM120</td>
|
||||
<td>sgl-kernel CUTLASS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -264,7 +264,7 @@ Backend selection applies to **blockwise FP8**, **MXFP8** (dense linear), and **
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
**`auto` selection order:** 1) DeepGEMM (SM90/SM100, installed); 2) FlashInfer TRTLLM (SM100, FlashInfer available); 3) CUTLASS (SM90/SM100/120); 4) AITER (AMD); 5) Triton. **Exception:** SM120 always resolves to Triton.
|
||||
**`auto` selection order:** 1) DeepGEMM (SM90/SM100, installed); 2) FlashInfer TRTLLM (SM100, FlashInfer available); 3) CUTLASS (SM120); 4) AITER (AMD); 5) Triton (fallback).
|
||||
|
||||
**MXFP8 dense linear:** `auto` uses `flashinfer_cutlass` on SM100 (else `triton`). `flashinfer_cutlass` is fastest on most shapes; `flashinfer_trtllm` is faster only at small M.
|
||||
|
||||
|
||||
@@ -1430,7 +1430,7 @@ Please consult the documentation below and [server_args.py](https://github.com/s
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--fp8-gemm-backend`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>Choose the runner backend for Blockwise FP8 GEMM operations. Options: 'auto' (default, auto-selects based on hardware), 'deep_gemm' (JIT-compiled; enabled by default on NVIDIA Hopper (SM90) and Blackwell (SM100) when DeepGEMM is installed), 'flashinfer_trtllm' (FlashInfer TRTLLM backend; SM100/SM103 only), 'flashinfer_cutlass' (FlashInfer CUTLASS backend, SM120 only), 'flashinfer_deepgemm' (Hopper SM90 only, uses swapAB optimization for small M dimensions in decoding), 'cutlass' (optimal for Hopper/Blackwell GPUs and high-throughput), 'triton' (fallback, widely compatible), 'aiter' (ROCm only).</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>Choose the runner backend for Blockwise FP8 GEMM operations. Options: 'auto' (default, auto-selects based on hardware), 'deep_gemm' (JIT-compiled; enabled by default on NVIDIA Hopper (SM90) and Blackwell (SM100) when DeepGEMM is installed), 'flashinfer_trtllm' (FlashInfer TRTLLM backend; SM100/SM103 only), 'flashinfer_cutlass' (FlashInfer CUTLASS backend, SM120 only), 'flashinfer_deepgemm' (Hopper SM90 only, uses swapAB optimization for small M dimensions in decoding), 'cutlass' (optimal for SM120 GPUs), 'triton' (fallback, widely compatible), 'aiter' (ROCm only).</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.02)"}}>`auto`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}><code>auto</code>, <code>deep_gemm</code>, <code>flashinfer_trtllm</code>, <code>flashinfer_cutlass</code>, <code>flashinfer_deepgemm</code>, <code>cutlass</code>, <code>triton</code>, <code>aiter</code></td>
|
||||
</tr>
|
||||
@@ -1943,14 +1943,14 @@ Please consult the documentation below and [server_args.py](https://github.com/s
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>Type: float</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--mamba-scheduler-strategy`</td>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--mamba-radix-cache-strategy`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>The strategy to use for mamba scheduler. <code>auto</code> currently defaults to <code>no_buffer</code>. 1. <code>no_buffer</code> does not support overlap scheduler due to not allocating extra mamba state buffers. Branching point caching support is feasible but not implemented. 2. <code>extra_buffer</code> supports overlap schedule by allocating extra mamba state buffers to track mamba state for caching (mamba state usage per running req becomes <code>2x</code> for non-spec; <code>1+(1/(2+speculative_num_draft_tokens))x</code> for spec dec (e.g. 1.16x if speculative_num_draft_tokens==4)). 2a. <code>extra_buffer</code> is strictly better for non-KV-cache-bound cases; for KV-cache-bound cases, the tradeoff depends on whether enabling overlap outweighs reduced max running requests. 2b. mamba caching at radix cache branching point is strictly better than non-branch but requires kernel support, currently only extra_buffer supports branching.</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.02)"}}>`auto`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}><code>auto</code>, <code>no_buffer</code>, <code>extra_buffer</code>, <code>extra_buffer_lazy</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--mamba-track-interval`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>The interval (in tokens) to track the mamba state during decode. Only used when <code>--mamba-scheduler-strategy</code> is <code>extra_buffer</code>. Must be divisible by page_size if set, and must be >= speculative_num_draft_tokens when using speculative decoding.</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>The interval (in tokens) to track the mamba state during decode. Only used when <code>--mamba-radix-cache-strategy</code> is <code>extra_buffer</code>. Must be divisible by page_size if set, and must be >= speculative_num_draft_tokens when using speculative decoding.</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.02)"}}>`256`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>Type: int</td>
|
||||
</tr>
|
||||
|
||||
@@ -1779,7 +1779,7 @@ If the value is int8, you must also set the environment variable:DEEP_NORMAL_MOD
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>A2, A3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--mamba-scheduler-strategy`</td>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.02)"}}>`--mamba-radix-cache-strategy`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>`auto`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.02)"}}>`auto`,<br/>`no_buffer`,<br/>`extra_buffer`</td>
|
||||
<td style={{padding: "9px 12px", backgroundColor: "rgba(255,255,255,0.05)"}}>A2, A3</td>
|
||||
|
||||
@@ -320,7 +320,7 @@ python3 -m sglang.launch_server \
|
||||
--max-prefill-tokens 131072 \
|
||||
--max-mamba-cache-size 320 \
|
||||
--prefill-max-requests 10 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--trust-remote-code \
|
||||
--max-running-requests 64 \
|
||||
--mem-fraction-static 0.6 \
|
||||
@@ -1110,7 +1110,7 @@ python3 -m sglang.launch_server \
|
||||
--chunked-prefill-size -1 \
|
||||
--max-prefill-tokens 65536 \
|
||||
--max-mamba-cache-size 640 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--trust-remote-code \
|
||||
--max-running-requests 128 \
|
||||
--mem-fraction-static 0.6 \
|
||||
|
||||
@@ -284,7 +284,7 @@ python3 -m sglang.launch_server \
|
||||
--device npu \
|
||||
--chunked-prefill-size 32768 \
|
||||
--max-prefill-tokens 32768 \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--trust-remote-code \
|
||||
--max-running-requests 20 \
|
||||
--max-mamba-cache-size 160 \
|
||||
|
||||
@@ -389,7 +389,7 @@ python3 -m sglang.launch_server \
|
||||
--max-prefill-tokens 65536 \
|
||||
--trust-remote-code \
|
||||
--enable-prefill-delayer \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--max-running-requests 103 \
|
||||
--max-mamba-cache-size 85 \
|
||||
--mem-fraction-static 0.85 \
|
||||
@@ -780,7 +780,7 @@ python3 -m sglang.launch_server \
|
||||
--max-total-tokens 470784 \
|
||||
--max-prefill-tokens 65536 \
|
||||
--trust-remote-code \
|
||||
--mamba-scheduler-strategy extra_buffer \
|
||||
--mamba-radix-cache-strategy extra_buffer \
|
||||
--max-running-requests 40 \
|
||||
--max-mamba-cache-size 200 \
|
||||
--mem-fraction-static 0.9 \
|
||||
|
||||
@@ -77,7 +77,7 @@ export const InternS2PreviewDeployment = () => {
|
||||
if (reasoning === 'enabled') flags.push(' --reasoning-parser qwen3');
|
||||
if (toolcall === 'enabled') flags.push(' --tool-call-parser qwen3_coder');
|
||||
if (mtp === 'enabled') {
|
||||
flags.push(' --mamba-scheduler-strategy extra_buffer');
|
||||
flags.push(' --mamba-radix-cache-strategy extra_buffer');
|
||||
flags.push(" --speculative-algo 'NEXTN'");
|
||||
flags.push(' --speculative-eagle-topk 1');
|
||||
flags.push(' --speculative-num-steps 3');
|
||||
|
||||
@@ -98,7 +98,7 @@ export const MiniCPMV46Deployment = () => {
|
||||
cmd += ` \\\n --tool-call-parser qwen3_coder`;
|
||||
}
|
||||
if (mambaCache === 'v2') {
|
||||
cmd += ` \\\n --mamba-scheduler-strategy extra_buffer`;
|
||||
cmd += ` \\\n --mamba-radix-cache-strategy extra_buffer`;
|
||||
}
|
||||
cmd += ` \\\n --host 0.0.0.0 --port 30000`;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ export const Nemotron3SuperDeployment = () => {
|
||||
// trtllm_mha is Blackwell-only; on B200 it replaces the flashinfer default,
|
||||
// whose per-step plan() host-sync breaks the spec-v2 overlap scheduler. H200
|
||||
// defaults to fa3 (no such sync), so no override is needed there.
|
||||
commandRule: (value, state) => value === 'enabled' ? '--speculative-algorithm EAGLE \\\n --speculative-num-steps 3 \\\n --speculative-eagle-topk 1 \\\n --speculative-num-draft-tokens 4 \\\n --mamba-scheduler-strategy extra_buffer' + (state.hardware === 'b200' ? ' \\\n --attention-backend trtllm_mha' : '') : null
|
||||
commandRule: (value, state) => value === 'enabled' ? '--speculative-algorithm EAGLE \\\n --speculative-num-steps 3 \\\n --speculative-eagle-topk 1 \\\n --speculative-num-draft-tokens 4 \\\n --mamba-radix-cache-strategy extra_buffer' + (state.hardware === 'b200' ? ' \\\n --attention-backend trtllm_mha' : '') : null
|
||||
},
|
||||
kvcache: {
|
||||
name: 'kvcache',
|
||||
|
||||
@@ -251,7 +251,7 @@ export const Nemotron3UltraDeployment = () => {
|
||||
}
|
||||
}
|
||||
|
||||
cmd += ` --mamba-scheduler-strategy extra_buffer \\\n`;
|
||||
cmd += ` --mamba-radix-cache-strategy extra_buffer \\\n`;
|
||||
if (['b200', 'gb200', 'b300', 'gb300'].includes(hardware)) {
|
||||
cmd += ` --attention-backend trtllm_mha \\\n`;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ export const Qwen3CoderNextDeployment = () => {
|
||||
{ id: 'v1', label: 'V1', default: true },
|
||||
{ id: 'v2', label: 'V2', default: false }
|
||||
],
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-scheduler-strategy extra_buffer \\\n --page-size 64' : null
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-radix-cache-strategy extra_buffer \\\n --page-size 64' : null
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ export const Qwen3NextDeployment = () => {
|
||||
{ id: 'v1', label: 'V1', default: true },
|
||||
{ id: 'v2', label: 'V2', default: false }
|
||||
],
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-scheduler-strategy extra_buffer \\\n --page-size 64' : null
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-radix-cache-strategy extra_buffer \\\n --page-size 64' : null
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -359,7 +359,7 @@ export const Qwen35Deployment = () => {
|
||||
// Dense models with MTP off: force V1 — values.mambaCache is not
|
||||
// re-resolved on a speculative toggle (useEffect deps are hardware/model),
|
||||
// so it can stay at 'v2' from a prior MTP-on state. Reading it directly
|
||||
// would emit a spurious --mamba-scheduler-strategy extra_buffer. The UI
|
||||
// would emit a spurious --mamba-radix-cache-strategy extra_buffer. The UI
|
||||
// radio is hidden for dense models, so users can't manually correct it.
|
||||
// MoE keeps the old behavior — the UI radio is the recovery path there.
|
||||
const mamba_v1_dev = ['mi300x', 'mi325x', 'mi355x', 'xeon'];
|
||||
@@ -373,7 +373,7 @@ export const Qwen35Deployment = () => {
|
||||
reasoning: (value) => value === 'enabled' ? '--reasoning-parser qwen3' : null,
|
||||
toolcall: (value) => value === 'enabled' ? '--tool-call-parser qwen3_coder' : null,
|
||||
speculative: (value) => value === 'enabled' ? '--speculative-algorithm NEXTN \\\n --speculative-num-steps 3 \\\n --speculative-eagle-topk 1 \\\n --speculative-num-draft-tokens 4' : null,
|
||||
mambaCache: (value) => value === 'v2' ? '--mamba-scheduler-strategy extra_buffer' : null,
|
||||
mambaCache: (value) => value === 'v2' ? '--mamba-radix-cache-strategy extra_buffer' : null,
|
||||
};
|
||||
|
||||
// Iterate options in order, applying commandRules
|
||||
@@ -382,7 +382,7 @@ export const Qwen35Deployment = () => {
|
||||
// Skip options that don't pass their condition. mambaCache is special:
|
||||
// its condition gates only the UI radio (hidden for dense models), but
|
||||
// the rule still fires for dense models on NVIDIA + MTP to emit
|
||||
// --mamba-scheduler-strategy extra_buffer.
|
||||
// --mamba-radix-cache-strategy extra_buffer.
|
||||
if (option.condition && !option.condition(values) && (key !== 'mambaCache' || speculative !== 'enabled')) continue;
|
||||
const rule = commandRules[key];
|
||||
if (rule) {
|
||||
|
||||
@@ -85,7 +85,7 @@ export const Qwen36Deployment = () => {
|
||||
{ id: 'v2', label: 'V2', default: false },
|
||||
];
|
||||
},
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-scheduler-strategy extra_buffer' : null,
|
||||
commandRule: (value) => value === 'v2' ? '--mamba-radix-cache-strategy extra_buffer' : null,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1427,7 +1427,7 @@ class ServerArgs:
|
||||
fp8_gemm_runner_backend: A[
|
||||
str,
|
||||
Arg(
|
||||
help="Choose the runner backend for Blockwise FP8 GEMM operations. Options: 'auto' (default, auto-selects based on hardware), 'deep_gemm' (JIT-compiled; enabled by default on NVIDIA Hopper (SM90) and Blackwell (SM100) when DeepGEMM is installed), 'flashinfer_trtllm' (optimal for Blackwell and low-latency), 'flashinfer_cutlass' (FlashInfer CUTLASS groupwise FP8 GEMM), 'flashinfer_deepgemm' (Hopper SM90 only; uses swapAB optimization for small M dimensions in decoding), 'cutlass' (optimal for Hopper/Blackwell GPUs and high-throughput), 'triton' (fallback, widely compatible), 'aiter' (ROCm only). ",
|
||||
help="Choose the runner backend for Blockwise FP8 GEMM operations. Options: 'auto' (default, auto-selects based on hardware), 'deep_gemm' (JIT-compiled; enabled by default on NVIDIA Hopper (SM90) and Blackwell (SM100) when DeepGEMM is installed), 'flashinfer_trtllm' (optimal for Blackwell and low-latency), 'flashinfer_cutlass' (FlashInfer CUTLASS groupwise FP8 GEMM), 'flashinfer_deepgemm' (Hopper SM90 only; uses swapAB optimization for small M dimensions in decoding), 'cutlass' (optimal for SM120 GPUs), 'triton' (fallback, widely compatible), 'aiter' (ROCm only). ",
|
||||
cli_name="--fp8-gemm-backend",
|
||||
choices=FP8_GEMM_RUNNER_BACKEND_CHOICES,
|
||||
resolvable=True,
|
||||
@@ -2136,7 +2136,7 @@ class ServerArgs:
|
||||
"baseline (the per-K g_cache is K x larger and the reconstruction "
|
||||
"refolds the per-K decay every step), so it is not recommended for KDA "
|
||||
"models. Requires the Triton linear-attn decode backend and "
|
||||
"--mamba-scheduler-strategy no_buffer (the default).",
|
||||
"--mamba-radix-cache-strategy no_buffer (the default).",
|
||||
] = False
|
||||
linear_replayssm_cache_len: A[
|
||||
int,
|
||||
@@ -5221,10 +5221,10 @@ class ServerArgs:
|
||||
|
||||
if mamba_extra_buffer_of(resolved_view(self)):
|
||||
raise ValueError(
|
||||
"--enable-linear-replayssm requires --mamba-scheduler-strategy "
|
||||
"--enable-linear-replayssm requires --mamba-radix-cache-strategy "
|
||||
"no_buffer (the default); the extra_buffer ping-pong "
|
||||
"donation path is not yet supported (follow-up). Got "
|
||||
f"--mamba-scheduler-strategy={self.mamba_scheduler_strategy!r}."
|
||||
f"--mamba-radix-cache-strategy={self.mamba_radix_cache_strategy!r}."
|
||||
)
|
||||
if self.disaggregation_mode != "null":
|
||||
# The disaggregated decode pool (HybridMambaDecodeReqToTokenPool)
|
||||
|
||||
Reference in New Issue
Block a user