Rules packs¶
A rules pack holds what one engine release accepts and what it refuses. A
scenario's engine_version selects the pack; a version with no pack is reported
as unchecked rather than assumed fine.
Rules run after the field layer passes and read the scenario, the deployment and the model graph together. Each problem names the rule that reported it. A rule that reports an error describes a deployment the engine would refuse at startup, or one a cost model would price with the wrong constants. A rule that reports a warning describes one the engine would run differently from what the document suggests, or a name the engine may accept from an out-of-tree plugin.
One problem comes from no pack:
engine-version-known- warning. No pack is registered for the scenario's
engine_version. Field validation passed, but no version-specific rule ran.
Everything below is generated from the registered packs. Each rule's text is the reason its source gives for it.
Engine 0.31.0¶
Rules¶
all2all-backend-known- error or warning. An unrecognized backend name would be priced with the default volume basis, which differs by a factor of top_k; an accepted name the engine replaces (pplx, naive) is priced as what runs, which the warning names.
allreduce-backend-known- error. The backend decides whether a reduction consumes SMs or the NIC, so an unknown name leaves the cost on no resource.
enum-values-known- error. Graph mode, cache dtype, mamba cache dtype and mode, MoE backend and scheduler policy each change a cost term, and the engine types each as a closed literal, refusing any other value.
speculative-method-known- error. An unknown draft method cannot be priced, and the draft pass of an MoE target is a second MoE rather than a scalar multiplier.
dcp-comm-backend-known- error. The engine types this setting as a closed literal and refuses any other name at startup.
cp-kv-cache-interleave-fits-block- error or warning. With decode-context parallelism on and no NixlConnector configured, this release asserts at startup that block_size is at least, and divisible by, cp_kv_cache_interleave_size (vllm/config/vllm.py validate_block_size), so a layout breaking it does not start; unlike v0.29.0, any other connector leaves the assert in force. The block size it checks is the smallest prefix-cacheable KV cache group's, which can be a model's own window-cache page size rather than the stated one.
expert-divisibility-under-eplb- error. With load balancing on, the engine asserts that the expert-parallel width divides the physical expert count, so an indivisible layout does not start.
expert-imbalance-without-eplb- error or warning. Without load balancing an indivisible split is legal but uneven, and the resulting static imbalance is a step-time term rather than an error; a width larger than the expert count leaves ranks with no experts, which is an error.
custom-allreduce-reachable- warning. The SM-consuming kernel supports only certain rank counts and only within one node absent multi-node NVLink, so a request outside those falls back to the NIC.
offload-spec-known- error. The spec decides whether a fetch consumes SMs or a copy engine, which is the only way the offload path enters step time.
quantization-known- warning. The served weight format sets weight-read bytes, compute peak and the GEMM efficiency envelope at once, so a misspelled in-tree method is priced against three wrong constants; it is a warning because the engine admits out-of-tree methods this set cannot enumerate.
connector-known- warning. The connector names the offload/PD-transfer implementation whose spec decides whether a fetch consumes SMs or a copy engine, so an unknown name leaves the transfer on no modeled resource; a warning because the KV connector registry is extensible out of tree.
eviction-policy-known- warning. A supplied name the engine does not recognize does not silently fall back — CachePolicyFactory.get_cache_policy_cls raises ValueError at launch unless cache_policy_module_path names an out-of-tree policy; this rule catches that typo earlier, as a warning, while still permitting a real out-of-tree name the set cannot enumerate.
mamba-cache-mode-matches-model- warning. A cache mode for recurrent layers on a model with none is a setting with no effect, and its absence on a model with them leaves the state unsized.
cascade-attention-is-opt-in- warning. Cascade attention is off unless requested, and a request for it alongside speculative decoding, with async scheduling left to the engine, is one the engine overrides once async scheduling resolves on.
dbo-thresholds-stated-when-enabled- warning. Which threshold applies turns on batch uniformity, and an unstated threshold silently takes a default that differs by 16x between the two.
dbo-thresholds-at-least-microbatches- error. With dual-batch overlap on, this release refuses a decode or prefill token threshold below its two microbatches at startup (vllm/config/parallel.py: "must be at least the number of microbatches").
engram-excludes-dbo- error or warning. This release refuses dual-batch overlap and microbatching at startup for a DeepseekV41ForCausalLM with Engram layers (vllm/config/vllm.py: "DeepSeek V4.1 Engram does not support DBO or microbatching"); a graph with Engram lookups that names no architecture draws a warning, since the refusal turns on the architecture.
engram-config-valid- error or warning. This release refuses an Engram config at startup on a model without Engram layers or of an architecture outside _NGRAM_LAYER_FIELDS, dp_shared_memory without cpu_offload or with one data-parallel rank, and use_thp without cpu_offload or with dp_shared_memory (vllm/config/engram.py); a graph with Engram lookups that names no architecture draws a warning, since the refusal turns on the architecture.
cache-record-dtypes-known- error. A cache's per-dtype record is looked up by the cache dtype the engine runs, so an entry keyed by a name this release does not accept, or by auto, which always resolves to a concrete dtype, can never be read, and a misspelled nvfp4_ds_mla would leave its cache priced at the default record.
engram-residency-default- error. A graph states where an Engram table lives when the deployment leaves cpu_offload alone, and this release's default is cpu_offload true, host memory (vllm/config/engram.py); a graph stating the other residency would price every such deployment against the wrong memory.
deepseek-v41-refuses-mtp- error. This release refuses a multi-token-prediction draft for DeepSeek-V4.1 at startup: it rewrites every MTP-family method name to mtp, rewrites the V4.1 draft config to deepseek_mtp, and then raises "DeepSeek V4.1 has no classic-MTP draft" (vllm/config/speculative.py); dspark is the method it serves. A launch escapes only where the draft model's path (containing eagle-, eagle3, dflash or dspark) or its own configuration (a DSpark, DFlash, Medusa or MLP-speculator draft) selects another method first, which a deployment does not record.
max-model-len-within-context-window- warning. This release refuses a stated max_model_len above the window it derives from the model configuration, unless the configuration's model_max_length admits it or VLLM_ALLOW_LONG_MAX_MODEL_LEN is set (vllm/config/model.py); a warning because the schema sees neither.
sequence-parallel-architecture-known- warning. A graph's sequence_parallel emit conditions and under_sequence_parallel splits are decided by its architecture's own code, so on an architecture this release has no such rule for they never apply and the graph prices tensor parallelism alone.
model-sequence-parallel-collectives- error or warning. An architecture that decides its own sequence parallelism never consults the engine-wide sequence-parallel-MoE rule -- DeepSeek-V4.1 passes its own _use_sequence_parallel to its MoE and shared expert, and FusedMoE then skips the final tensor-parallel all-reduce (vllm/model_executor/layers/fused_moe/runner/moe_runner.py, "Skipped when sequence-parallel is active") -- so a decoder-layer reduction conditioned on that rule fires or not on the wrong layouts; and a plain tensor-parallel all-reduce inside a decoder layer is replaced under the model's sequence parallelism, which shards the residual stream by token.
moonep-requirements- error or warning. This release refuses the moonep all2all backend at startup for a quantized model, a model whose runtime dtype is not BF16, and with EPLB (vllm/config/vllm.py), so such a pool does not run; an FP16 checkpoint is a warning, since --dtype bfloat16 casts it and a deployment does not record the dtype; the refusal of a non-linear expert placement needs no check, because a deployment cannot state one and the default is linear.
sequence-parallel-moe-implied- warning. On this backend with tensor and data parallelism both above one, the engine makes the MoE input sequence-parallel, which replaces the layer's all-reduce with a different pair of collectives.
data-parallel-load-balancing- error or warning. This release refuses external data-parallel load balancing for a model without experts and hybrid without data_parallel_size_local, switches hybrid with one rank per node to external, and runs hybrid with every rank on one node as internal (vllm/engine/arg_utils.py create_engine_config); the mode decides which endpoints a router can choose between.
long-prefill-threshold-within-max-model-len- error. This release refuses at startup a long_prefill_token_threshold greater than max_model_len (vllm/config/scheduler.py verify_max_model_len).
cudagraph-capture-sizes- error or warning. This release refuses a stated max_cudagraph_capture_size that is not the largest of the stated cudagraph_capture_sizes it keeps, caps the maximum at max_num_batched_tokens, drops sizes above it, and truncates a maximum off its capture stride to the largest size it generates (vllm/config/vllm.py _set_cudagraph_sizes); a step larger than the size that runs is executed eager, so the size that runs is the one to price.
Accepted values¶
| Pack field | Governs | Value |
|---|---|---|
All2AllBackends |
engine.all2all_backend |
allgather_reducescatter deepep_high_throughput deepep_low_latency deepep_v2 flashinfer_all2allv flashinfer_nvlink_one_sided flashinfer_nvlink_two_sided moonep mori_high_throughput mori_low_latency naive nixl_ep pplx |
SPMoEBackends |
All-to-all backends that make the MoE input sequence-parallel | allgather_reducescatter deepep_high_throughput deepep_low_latency deepep_v2 flashinfer_nvlink_one_sided mori_high_throughput mori_low_latency nixl_ep |
AllReduceBackends |
engine.allreduce_backend |
custom nccl |
CUDAGraphModes |
engine.cudagraph_mode |
FULL FULL_AND_PIECEWISE FULL_DECODE_ONLY NONE PIECEWISE |
CacheDTypes |
engine.cache_dtype |
auto bfloat16 float16 fp8 fp8_ds_mla fp8_e4m3 fp8_e5m2 fp8_inc fp8_per_token_head int4_per_token_head int8_per_token_head nvfp4 nvfp4_4over6 nvfp4_ds_mla turboquant_3bit_nc turboquant_4bit_nc turboquant_k3v4_nc turboquant_k8v4 |
MambaDTypes |
engine.mamba_cache_dtype, engine.mamba_ssm_cache_dtype |
auto bfloat16 float16 float32 |
MambaCacheModes |
engine.mamba_cache_mode |
align all none |
MoEBackends |
engine.moe_backend |
aiter aiter_triton_mxfp4_bf16 auto b12x batched_triton cutlass deep_gemm deep_gemm_mega_moe emulation flashinfer_b12x flashinfer_cutedsl flashinfer_cutlass flashinfer_moe_ep_mega_cutedsl flashinfer_moe_ep_mega_deep_gemm flashinfer_trtllm flydsl hpc humming marlin rdna3 triton triton_unfused |
MegaMoEBackends |
MoE backends that run the mega-MoE model path | deep_gemm_mega_moe flashinfer_moe_ep_mega_cutedsl flashinfer_moe_ep_mega_deep_gemm |
ModelSequenceParallelRules |
Architectures (global.architecture) whose own code decides sequence parallelism, and the condition |
DeepseekV41ForCausalLM (pp 1, expert parallelism on, tp above 1, a mega-MoE backend or dp above 1) DeepseekV4ForCausalLM (pp 1, expert parallelism on, tp above 1, a mega-MoE backend or dp above 1) |
DefaultAll2AllBackend |
The backend an unstated engine.all2all_backend selects |
allgather_reducescatter |
All2AllBackendRenames |
Accepted engine.all2all_backend names the engine runs as another |
naive -> allgather_reducescatter pplx -> allgather_reducescatter |
CacheDTypeResolutions |
Cache dtypes an architecture's attention backend runs for a request, by compute capability and tp | DeepseekV41ForCausalLM (sm100: auto/fp8 -> nvfp4_ds_mla where tp divides 8; sm100: auto/fp8 -> fp8_ds_mla; sm90: auto/fp8 -> fp8_ds_mla) |
EngramArchitectures |
Architectures engine.engram_config may be given for |
DeepseekV41ForCausalLM Qwen4ExpForCausalLM Qwen4ExpForConditionalGeneration |
EngramCPUOffloadDefault |
Whether an Engram table lives in host memory when engine.engram_config.cpu_offload is unstated; meaningless where EngramArchitectures is none |
true |
SchedulerPolicies |
engine.scheduling_policy |
fcfs priority |
SpeculativeMethods |
engine.speculative.method, speculator.method |
bailing_hybrid_mtp bailing_hybrid_v3_mtp custom_class deepseek_mtp dflash dots3_note_mtp draft_model dspark eagle eagle3 ernie_mtp exaone4_5_mtp exaone_moe_mtp extract_hidden_states gemma4_mtp glm4_moe_lite_mtp glm4_moe_mtp glm5_next_mtp glm_ocr_mtp hy_v3_mtp hy_v4_mtp inkling_mtp kimi_k3_mtp longcat_flash_mtp medusa mimo_mtp mimo_v2_mtp minimax_m3_mtp mlp_speculator mtp nemotron_h_mtp ngram ngram_gpu pangu_ultra_moe_mtp qwen3_5_mtp qwen3_next_mtp qwen4_exp_mtp step3p5_mtp suffix |
AsyncCompatibleSpec |
Speculative methods that leave async scheduling enabled | bailing_hybrid_mtp bailing_hybrid_v3_mtp deepseek_mtp dflash dots3_note_mtp draft_model dspark eagle eagle3 ernie_mtp exaone4_5_mtp exaone_moe_mtp extract_hidden_states gemma4_mtp glm4_moe_lite_mtp glm4_moe_mtp glm5_next_mtp glm_ocr_mtp hy_v3_mtp hy_v4_mtp inkling_mtp kimi_k3_mtp longcat_flash_mtp mimo_mtp mimo_v2_mtp minimax_m3_mtp mtp nemotron_h_mtp ngram_gpu pangu_ultra_moe_mtp qwen3_5_mtp qwen3_next_mtp qwen4_exp_mtp step3p5_mtp |
OffloadSpecs |
offload.spec |
CPUOffloadingSpec TieringOffloadingSpec |
DCPCommBackends |
engine.dcp_comm_backend |
a2a ag_rs |
Quantizations |
engine.quantization (in-tree methods) |
auto_awq auto_gptq awq awq_marlin compressed-tensors deepseek_v4_fp8 experts_int8 fbgemm_fp8 fp8 fp8_per_block fp8_per_channel fp8_per_tensor fp_quant gpt_oss_mxfp4 gptq gptq_marlin humming inc int8_per_channel_weight_only modelopt modelopt_fp4 modelopt_mixed modelopt_mxfp8 moe_wna16 mxfp4 mxfp8 nvfp4_per_token online quark torchao |
Connectors |
offload.connector, pd_transfer.connector (in-tree connectors) |
DecodeBenchConnector ExampleConnector ExampleHiddenStatesConnector FlexKVConnectorV1 HF3FSKVConnector HiSparseConnector LMCacheConnectorV1 LMCacheMPConnector MoRIIOConnector MooncakeConnector MooncakeStoreConnector MultiConnector NixlConnector NixlPullConnector NixlPushConnector OffloadingConnector SimpleCPUOffloadConnector |
EvictionPolicies |
offload.eviction_policy (in-tree policies) |
arc lru |
CustomAllReduceWorldSizes |
Tensor-parallel widths the custom all-reduce kernel supports | 2 4 6 8 16 |
DefaultDBODecodeThreshold |
Default dual-batch-overlap threshold for a uniform-decode batch, in tokens | 32 |
DefaultDBOPrefillThreshold |
Default dual-batch-overlap threshold for any other batch, in tokens | 512 |
TritonFetchPageBytes |
Offload page size, in bytes, at which a CPU-to-GPU fetch uses an SM-consuming kernel | 28672 |
TritonFetchSMs |
SMs that fetch path withholds from the forward pass | 12 |
CascadeAttnOptIn |
Cascade attention is off unless requested | true |
LongPrefillExemptsLoneRequest |
Whether engine.long_prefill_token_threshold is waived for a request alone in the scheduler |
true |
KVCachePacking |
How stated caches are grouped into KV cache groups sharing one block pool | packed groups share one block pool; state caches split to fit the block; a lone window bucket splits like state; the block rounds to the layers' stride alignment; a state ring is sized from K |
Engine 0.29.0¶
Rules¶
all2all-backend-known- error or warning. An unrecognized backend name would be priced with the default volume basis, which differs by a factor of top_k; an accepted name the engine replaces (pplx, naive) is priced as what runs, which the warning names.
allreduce-backend-known- error. The backend decides whether a reduction consumes SMs or the NIC, so an unknown name leaves the cost on no resource.
enum-values-known- error. Graph mode, cache dtype, mamba cache dtype and mode, MoE backend and scheduler policy each change a cost term, and the engine types each as a closed literal, refusing any other value.
speculative-method-known- error. An unknown draft method cannot be priced, and the draft pass of an MoE target is a second MoE rather than a scalar multiplier.
dcp-comm-backend-known- error. The engine types this setting as a closed literal and refuses any other name at startup.
cp-kv-cache-interleave-fits-block- error or warning. With decode-context parallelism on and no KV connector configured, this release asserts at startup that block_size is at least, and divisible by, cp_kv_cache_interleave_size (vllm/config/vllm.py validate_block_size), so a layout breaking it does not start. The block size it checks is the smallest KV cache group's, which can be a model's own cache page size rather than the stated one.
pcp-excludes-data-parallelism- error. This release refuses prefill-context parallelism combined with data parallelism at startup ("PCP does not support data parallelism yet", vllm/config/parallel.py), so such a layout does not run; later releases support it from e6dc16cebd, which is why the refusal is here and not a field check.
expert-divisibility-under-eplb- error. With load balancing on, the engine asserts that the expert-parallel width divides the physical expert count, so an indivisible layout does not start.
expert-imbalance-without-eplb- error or warning. Without load balancing an indivisible split is legal but uneven, and the resulting static imbalance is a step-time term rather than an error; a width larger than the expert count leaves ranks with no experts, which is an error.
custom-allreduce-reachable- warning. The SM-consuming kernel supports only certain rank counts and only within one node absent multi-node NVLink, so a request outside those falls back to the NIC.
offload-spec-known- error. The spec decides whether a fetch consumes SMs or a copy engine, which is the only way the offload path enters step time.
quantization-known- warning. The served weight format sets weight-read bytes, compute peak and the GEMM efficiency envelope at once, so a misspelled in-tree method is priced against three wrong constants; it is a warning because the engine admits out-of-tree methods this set cannot enumerate.
connector-known- warning. The connector names the offload/PD-transfer implementation whose spec decides whether a fetch consumes SMs or a copy engine, so an unknown name leaves the transfer on no modeled resource; a warning because the KV connector registry is extensible out of tree.
eviction-policy-known- warning. A supplied name the engine does not recognize does not silently fall back — CachePolicyFactory.get_cache_policy_cls raises ValueError at launch unless cache_policy_module_path names an out-of-tree policy; this rule catches that typo earlier, as a warning, while still permitting a real out-of-tree name the set cannot enumerate.
mamba-cache-mode-matches-model- warning. A cache mode for recurrent layers on a model with none is a setting with no effect, and its absence on a model with them leaves the state unsized.
cascade-attention-is-opt-in- warning. Cascade attention is off unless requested, and a request for it alongside speculative decoding, with async scheduling left to the engine, is one the engine overrides once async scheduling resolves on.
dbo-thresholds-stated-when-enabled- warning. Which threshold applies turns on batch uniformity, and an unstated threshold silently takes a default that differs by 16x between the two.
cache-record-dtypes-known- error. A cache's per-dtype record is looked up by the cache dtype the engine runs, so an entry keyed by a name this release does not accept, or by auto, which always resolves to a concrete dtype, can never be read, and a misspelled nvfp4_ds_mla would leave its cache priced at the default record.
engram-config-unsupported- error. This release has no Engram config (no vllm/config/engram.py, no --engram-config), so a launch line carrying one does not parse.
sequence-parallel-architecture-known- warning. A graph's sequence_parallel emit conditions and under_sequence_parallel splits are decided by its architecture's own code, so on an architecture this release has no such rule for they never apply and the graph prices tensor parallelism alone.
model-sequence-parallel-collectives- error or warning. An architecture that decides its own sequence parallelism never consults the engine-wide sequence-parallel-MoE rule -- DeepSeek-V4 passes its own _use_sequence_parallel to its MoE and shared expert, and FusedMoE then skips the final tensor-parallel all-reduce (vllm/model_executor/layers/fused_moe/runner/moe_runner.py, "Skipped when sequence-parallel is active") -- so a decoder-layer reduction conditioned on that rule fires or not on the wrong layouts; and a plain tensor-parallel all-reduce inside a decoder layer is replaced under the model's sequence parallelism, which shards the residual stream by token.
sequence-parallel-moe-implied- warning. On this backend with tensor and data parallelism both above one, the engine makes the MoE input sequence-parallel, which replaces the layer's all-reduce with a different pair of collectives.
data-parallel-load-balancing- error or warning. This release refuses external data-parallel load balancing for a model without experts and hybrid without data_parallel_size_local, switches hybrid with one rank per node to external, and runs hybrid with every rank on one node as internal (vllm/engine/arg_utils.py create_engine_config); the mode decides which endpoints a router can choose between.
long-prefill-threshold-within-max-model-len- error. This release refuses at startup a long_prefill_token_threshold greater than max_model_len (vllm/config/scheduler.py verify_max_model_len).
cudagraph-capture-sizes- error or warning. This release refuses a stated max_cudagraph_capture_size that is not the largest of the stated cudagraph_capture_sizes it keeps, caps the maximum at max_num_batched_tokens, drops sizes above it, and truncates a maximum off its capture stride to the largest size it generates (vllm/config/vllm.py _set_cudagraph_sizes); a step larger than the size that runs is executed eager, so the size that runs is the one to price.
Accepted values¶
| Pack field | Governs | Value |
|---|---|---|
All2AllBackends |
engine.all2all_backend |
allgather_reducescatter deepep_high_throughput deepep_low_latency deepep_v2 flashinfer_all2allv flashinfer_nvlink_one_sided flashinfer_nvlink_two_sided mori_high_throughput mori_low_latency naive nixl_ep pplx |
SPMoEBackends |
All-to-all backends that make the MoE input sequence-parallel | allgather_reducescatter deepep_high_throughput deepep_low_latency flashinfer_nvlink_one_sided mori_high_throughput mori_low_latency nixl_ep |
AllReduceBackends |
engine.allreduce_backend |
custom nccl |
CUDAGraphModes |
engine.cudagraph_mode |
FULL FULL_AND_PIECEWISE FULL_DECODE_ONLY NONE PIECEWISE |
CacheDTypes |
engine.cache_dtype |
auto bfloat16 float16 fp8 fp8_ds_mla fp8_e4m3 fp8_e5m2 fp8_inc fp8_per_token_head int4_per_token_head int8_per_token_head nvfp4 nvfp4_4over6 turboquant_3bit_nc turboquant_4bit_nc turboquant_k3v4_nc turboquant_k8v4 |
MambaDTypes |
engine.mamba_cache_dtype, engine.mamba_ssm_cache_dtype |
auto bfloat16 float16 float32 |
MambaCacheModes |
engine.mamba_cache_mode |
align all none |
MoEBackends |
engine.moe_backend |
aiter auto b12x batched_triton cutlass deep_gemm deep_gemm_mega_moe emulation flashinfer_b12x flashinfer_cutedsl flashinfer_cutlass flashinfer_moe_ep_mega_cutedsl flashinfer_moe_ep_mega_deep_gemm flashinfer_trtllm flydsl hpc humming marlin triton triton_unfused |
MegaMoEBackends |
MoE backends that run the mega-MoE model path | deep_gemm_mega_moe flashinfer_moe_ep_mega_cutedsl flashinfer_moe_ep_mega_deep_gemm |
ModelSequenceParallelRules |
Architectures (global.architecture) whose own code decides sequence parallelism, and the condition |
DeepseekV4ForCausalLM (pp 1, expert parallelism on, tp above 1, a mega-MoE backend or dp above 1) |
DefaultAll2AllBackend |
The backend an unstated engine.all2all_backend selects |
allgather_reducescatter |
All2AllBackendRenames |
Accepted engine.all2all_backend names the engine runs as another |
naive -> allgather_reducescatter pplx -> allgather_reducescatter |
CacheDTypeResolutions |
Cache dtypes an architecture's attention backend runs for a request, by compute capability and tp | none |
EngramArchitectures |
Architectures engine.engram_config may be given for |
none |
EngramCPUOffloadDefault |
Whether an Engram table lives in host memory when engine.engram_config.cpu_offload is unstated; meaningless where EngramArchitectures is none |
false |
SchedulerPolicies |
engine.scheduling_policy |
fcfs priority |
SpeculativeMethods |
engine.speculative.method, speculator.method |
deepseek_mtp dflash draft_model dspark eagle eagle3 glm4_moe_mtp inkling_mtp kimi_k3_mtp medusa mlp_speculator mtp nemotron_h_mtp ngram ngram_gpu qwen3_next_mtp |
AsyncCompatibleSpec |
Speculative methods that leave async scheduling enabled | deepseek_mtp dflash draft_model dspark eagle eagle3 glm4_moe_mtp inkling_mtp kimi_k3_mtp mtp nemotron_h_mtp ngram_gpu qwen3_next_mtp |
OffloadSpecs |
offload.spec |
CPUOffloadingSpec TieringOffloadingSpec |
DCPCommBackends |
engine.dcp_comm_backend |
a2a ag_rs |
Quantizations |
engine.quantization (in-tree methods) |
auto_awq auto_gptq awq awq_marlin compressed-tensors deepseek_v4_fp8 experts_int8 fbgemm_fp8 fp8 fp8_per_block fp8_per_channel fp8_per_tensor fp_quant gpt_oss_mxfp4 gptq gptq_marlin humming inc int8_per_channel_weight_only modelopt modelopt_fp4 modelopt_mixed modelopt_mxfp8 moe_wna16 mxfp4 mxfp8 nvfp4_per_token online quark torchao |
Connectors |
offload.connector, pd_transfer.connector (in-tree connectors) |
DecodeBenchConnector ExampleConnector ExampleHiddenStatesConnector FlexKVConnectorV1 HF3FSKVConnector LMCacheConnectorV1 LMCacheMPConnector MoRIIOConnector MooncakeConnector MooncakeStoreConnector MultiConnector NixlConnector NixlPullConnector NixlPushConnector OffloadingConnector SimpleCPUOffloadConnector |
EvictionPolicies |
offload.eviction_policy (in-tree policies) |
arc lru |
CustomAllReduceWorldSizes |
Tensor-parallel widths the custom all-reduce kernel supports | 2 4 6 8 16 |
DefaultDBODecodeThreshold |
Default dual-batch-overlap threshold for a uniform-decode batch, in tokens | 32 |
DefaultDBOPrefillThreshold |
Default dual-batch-overlap threshold for any other batch, in tokens | 512 |
TritonFetchPageBytes |
Offload page size, in bytes, at which a CPU-to-GPU fetch uses an SM-consuming kernel | 28672 |
TritonFetchSMs |
SMs that fetch path withholds from the forward pass | 12 |
CascadeAttnOptIn |
Cascade attention is off unless requested | true |
LongPrefillExemptsLoneRequest |
Whether engine.long_prefill_token_threshold is waived for a request alone in the scheduler |
false |
KVCachePacking |
How stated caches are grouped into KV cache groups sharing one block pool | packed groups share one block pool |
The constants in each pack are transcribed from the engine's source. A test re-derives most of them from a checkout of the engine and fails on any difference in either direction; CI runs it against each pack's tagged release. For 0.31.0 the speculative-method lists are the engine's whole literals and are re-derived too. Each architecture's sequence-parallelism condition is parsed from its model module clause by clause, and the facts the collectives rule rests on are pinned. For the startup refusals the rules encode, the test checks that each refusal's message is still in the source, not the condition that triggers it. The 0.29.0 pack's speculative-method lists, and both packs' all-reduce backend names, are not re-derived and rest on review alone. See A new engine release.
Besides checks, a pack carries version-specific arithmetic a consumer applies:
ResolveCacheDType, WindowPagesPerRequest, ModelSequenceParallel, CUDAGraphCaptureSizes,
which resolves the CUDA graph capture sizes a deployment's stated knobs run with, and
KVCacheGroups,
which groups a graph's stated caches into the KV cache groups that share one block pool
and returns the bytes each block costs. Its tests compare it with groupings computed by
running the engine's own packing functions, and pin those functions by digest. The
goldens stub the step before them, mapping each cache to a spec (its kind, block size and
page bytes), with the same mapping KVCacheGroups uses, so they prove the packing and the
block size given that mapping, not the mapping; the engine facts the mapping rests on are
pinned by source tests instead.
Source: rules.