Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
833bf0c
[None][feat] Add Step3p7 model support with tests
kaiyux May 26, 2026
6c3bbb9
[None][docs] Add Step3p7 entry to supported models matrix
kaiyux May 28, 2026
8e1b2b4
[None][chore] Refactor Step3p7 model for readability
kaiyux May 28, 2026
5e68ef1
[None][chore] Remove unused scan_fp8_scale_inv_tensors helper
kaiyux May 28, 2026
62e84f7
Support vision
kaiyux May 28, 2026
10342e5
[None][feat] Add MMMU post-processing options for thinking models
kaiyux May 28, 2026
8212f86
Update documents
kaiyux May 28, 2026
db87ac2
[None][chore] Remove Step3p7 parity test driver and HF reference helper
kaiyux May 29, 2026
3e630c2
Update tests
kaiyux May 29, 2026
a948217
[None][fix] Resolve MTP max_draft_len from checkpoint and clamp KV lens
kaiyux May 29, 2026
c474acd
[None][fix] Use TRT-LLM LayerNorm in Step3p7 vision tower and keep me…
kaiyux May 29, 2026
95ff065
[None][test] Add Step3p7 accuracy tests and restructure unit tests
kaiyux May 29, 2026
2bebc3e
[None][refactor] Make Step3p7 helper classes public
kaiyux May 29, 2026
c186896
[None][test] Add Step3p7 multimodal accuracy and vision tower tests
kaiyux May 29, 2026
58a0e99
[None][test] Register Step3p7 tests in L0 CI test lists
kaiyux May 29, 2026
ca65fb3
[None][fix] Support NVFP4 checkpoint layout in Step3p7 vision tower
kaiyux May 31, 2026
6bb4069
[None][feat] Add multimodal hashing hooks to Step3p7VL input processor
kaiyux May 31, 2026
4558e54
[None][fix] Always resolve MTP spec config from model config
kaiyux May 31, 2026
a19f3c3
[None][refactor] Simplify MTP max_draft_len resolution
kaiyux Jun 1, 2026
9b232ce
[None][fix] Defer Step3p7VL vision tower init outside MetaInitMode
kaiyux Jun 1, 2026
de0a3c6
[None][fix] Correct Step3p7 vision LN defaults and enforce strict load
kaiyux Jun 1, 2026
eeca934
[None][test] Drop moe_backend assertions from Step3p7 checkpoint test
kaiyux Jun 1, 2026
93fe8a9
[None][test] Keep only FP8+MTP Step3p7 case in L0, move rest to QA
kaiyux Jun 1, 2026
5d5bf37
Minor fixes
kaiyux Jun 1, 2026
db120bc
[None][fix] Resolve MTP layer count across checkpoint field names
kaiyux Jun 2, 2026
4209c3f
Move accuracy test from l0 to qa
kaiyux Jun 4, 2026
3cbd08d
Merge remote-tracking branch 'origin' into user/kaiyu/step3p7
kaiyux Jun 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/source/features/speculative-decoding.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ llm = LLM("/path/to/target_model", speculative_config=speculative_config, disabl

### MTP

MTP is currently only supported by Deepseek. MTP can be tuned with the following configuration options:
MTP is supported by DeepSeek models and other architectures that ship native MTP modules (including Step-3.x). MTP can be tuned with the following configuration options:

* `max_draft_len`: Maximum draft candidate length.
* `num_nextn_predict_layers`: Number of MTP modules to use. Currently must match `max_draft_len`.
Expand Down
4 changes: 4 additions & 0 deletions docs/source/models/supported-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ The following is a table of supported models for the PyTorch backend:
| `SeedOssForCausalLM` [^5] | Seed OSS, Seed-Coder | `ByteDance-Seed/Seed-OSS-36B-Instruct` |
| `SkyworkR1V2ForConditionalGeneration` [^5] | Skywork R1V2, Skywork SWE | `Skywork/Skywork-R1V2-38B` |
| `SmolLM3ForCausalLM` [^5] | SmolLM3 | `HuggingFaceTB/SmolLM3-3B` |
| `Step3p7ForConditionalGeneration` [^8]| Step-3.7-Flash | `stepfun-ai/Step-3.7-Flash` |


## Model-Feature Support Matrix (Key Models)
Expand All @@ -69,13 +70,15 @@ Note: Support for other models may vary. Features marked "N/A" are not applicabl
| `Glm4MoeLiteForCausalLM` [^5] | Yes | Yes | Untested | Untested | Yes | No | No | No | No | Yes | Untested | Untested | N/A | Untested | Untested |
| `NemotronHForCausalLM` (Super) | Yes | Yes | Untested | Untested | Yes | Yes | No | No | No | Yes | Yes | Untested | N/A | Untested | Untested |
| `Gemma4ForConditionalGeneration` | Untested | Yes | Untested | No | Yes | No | No | No | No | Yes | Untested | No | Yes | Untested | Untested |
| `Step3p7ForConditionalGeneration`| Yes | Yes | Yes | Untested | Untested | Yes | No | No | No | Yes | Untested | Untested | Yes | Untested | Untested |

[^1]: Chunked Prefill for MLA can only be enabled on SM100/SM103.
[^2]: KV cache reuse for MLA can only be enabled on SM90/SM100/SM103 and in BF16/FP8 KV cache dtype.
[^3]: Qwen3-Next-80B-A3B exhibits relatively low accuracy on the SciCode-AA-v2 benchmark.
[^5]: Supported via the [AutoDeploy](../features/auto_deploy/auto-deploy.md) backend. See [AD Configs](../../../examples/auto_deploy/model_registry/configs).
[^6]: Also supports text-only inference via the [AutoDeploy](../features/auto_deploy/auto-deploy.md) backend.
[^7]: Text-only support via the [AutoDeploy](../features/auto_deploy/auto-deploy.md) backend.
[^8]: Supports text and image inputs. The vision tower runs in BF16 even when the text decoder is quantized (FP8 block-scale or NVFP4). The text decoder is also usable standalone (text-only) via the `Step3p5ForCausalLM` architecture.
[^9]: Audio modality only supported on E2B/E4B variants.

# Multimodal Feature Support Matrix (PyTorch Backend)
Expand All @@ -96,6 +99,7 @@ Note: Support for other models may vary. Features marked "N/A" are not applicabl
| `Qwen2_5_VLForConditionalGeneration` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | L + I + V |
| `Qwen3VLForConditionalGeneration` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | L + I + V |
| `Qwen3VLMoeForConditionalGeneration` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | L + I + V |
| `Step3p7ForConditionalGeneration` | Yes | Yes | Untested | Yes | Untested | Untested | Untested | Untested | L + I |

Note:
- L: Language
Expand Down
4 changes: 4 additions & 0 deletions tensorrt_llm/_torch/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
from .modeling_seedoss import SeedOssForCausalLM
from .modeling_siglip import SiglipVisionModel
from .modeling_starcoder2 import Starcoder2ForCausalLM
from .modeling_step3p7 import Step3p7ForCausalLM
from .modeling_step3p7vl import Step3p7VLForConditionalGeneration
from .modeling_utils import get_model_architecture
from .modeling_vila import VilaModel

Expand Down Expand Up @@ -98,6 +100,8 @@
"Qwen3VLModel",
"MiniMaxM2ForCausalLM",
"Cohere2ForCausalLM",
"Step3p7ForCausalLM",
"Step3p7VLForConditionalGeneration",
]

if transformers.__version__ >= "4.45.1":
Expand Down
3 changes: 3 additions & 0 deletions tensorrt_llm/_torch/models/modeling_speculative.py
Original file line number Diff line number Diff line change
Expand Up @@ -1423,6 +1423,9 @@ def __init__(
case "qwen3_next" | "qwen3_5_text" | "qwen3_5_moe_text":
from .modeling_qwen3_next import Qwen3NextMTP
mtp_layer = Qwen3NextMTP
case "step3p7" | "step3p5":
from .modeling_step3p7 import Step3p7MTP
mtp_layer = Step3p7MTP
case _:
raise ValueError(
f"Model type {model_type} not supported for MTP")
Expand Down
Loading
Loading