Repository navigation
[MiniMax-M3.1] DSpark draft follows --online_quant_config - #2743
Closed
zhuyuhua-v wants to merge 1 commit into
Closed
zhuyuhua-v wants to merge 1 commit into
zhuyuhua-v wants to merge 1 commit into
Conversation
Contributor
🏷️ CI GuideRuns automatically on every eligible PR before approval:
Heavy model tests:
|
MengqingCao
added a commit
that referenced
this pull request
Oct 27, 2026
MengqingCao
added a commit
that referenced
this pull request
Oct 28, 2026
The MiniMax-M3.1 DSpark draft built its QuantizationConfig from its own MXFP8 checkpoint block only, so --online_quant_config re-quantized the target and never the draft: under ptpc_fp8 the draft linears still ran MXFP8's triton block-scale GEMM plus a separate activation quant per linear. Pass the server's online quant config to _draft_quant_config, so the draft is re-quantized at load the way the target is. Without --online_quant_config nothing changes.
zhuyuhua-v
force-pushed
the
yuhzhu/m31-dspark-draft-ptpc
branch
from
October 28, 2026 07:12
9a928df to
4e2394c
Compare
zhuyuhua-v
marked this pull request as ready for review
October 28, 2026 07:13
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The inference-numerics and GPU GEMM dispatch changes require validation beyond source-only review, with current-revision GSM8K accuracy and GPU A/B results still pending.
No open issues 🎉
What changed in this PR
This PR makes MiniMax-M3.1’s DSpark draft honor ATOM’s existing --online_quant_config, aligning its load-time re-quantization with the target model.
Changes:
- Pass the server’s online quantization configuration into draft quantization setup.
- Preserve checkpoint validation and existing behavior when the option is absent.
- Add a parameterized regression test covering default MXFP8 and
ptpc_fp8configurations.
| File | Description |
|---|---|
tests/test_dspark.py |
Tests draft quantization with and without the online override. |
atom/models/minimax_m3/dspark.py |
Forwards online quantization settings to the draft’s quantization configuration. |
Review effort: Balanced
Collaborator
Author
|
drop this pr since SA won't allow re-quant in draft models. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The MiniMax-M3.1 DSpark draft builds its quantization from its own checkpoint block only (
_draft_quant_config, MXFP8[1, 32]), never from--online_quant_config. So with--online_quant_config '{"global_quant_config": "ptpc_fp8", ...}':_gemm_afp8wfp8) plus a separatequantize_fp8per linear.Decode trace of MiniMax-M3.1-Flash TP4 on MI355X, per
propose_dsparkspan, averaged over 400 spans:_gemm_afp8wfp8quantize_fp8)kernel_gemm_0The c32 trace runs larger draft batches than the c16 one, so the saving is, if anything, understated.
Change
_draft_quant_config(config, online_quant_config)now gets the server's--online_quant_config. The draft is re-quantized at load the same way the target is.--online_quant_confignothing changes.[1, 32]or BF16.tests/test_dspark.py::test_minimax_m31_draft_follows_online_quant_configcovers both cases (withptpc_fp8the draft is re-quantized per token; without it, it stays MXFP8).Validation
MiniMax-M3.1-Flash-Quark-MXFP4, TP4, MI355X, fp8 KV/index,
--online_quant_config ptpc_fp8, gpu-memory-utilization 0.9, imagerocm/atom-dev:nightly_202610261558. Mono is off on main with DSpark.A/B on this branch's code: main 035a78a with and without this change, same launch, c1, 1200 s per arm, synthetic AL 4.04.
Earlier A/B with the same re-quantization, behind an environment flag in the first revision of this PR. Main 481c2bf, c1, 1200 s per arm:
Accuracy. lm-eval gsm8k as InferenceX CI runs it: 5-shot, chat template, temperature 0, all 1319 samples, real acceptance, draft re-quantized.
🤖 Generated with Claude Code