[DSv4] Loading Time Weight Dequant - #27867
Conversation
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
/tag-and-rerun-ci |
|
/tag-and-rerun-ci |
ab31789 to
0d30568
Compare
|
@b8zhong hi, could you please review this pr,the ci passed |
| "Auto-detected DSV4 routed-expert layout: is_fp4_experts=%s", | ||
| self.is_fp4_experts, | ||
| ) | ||
| if envs.SGLANG_DSV4_FP4_DEQUANT.is_set(): |
There was a problem hiding this comment.
In ModelConfig, the new logic uses envs.SGLANG_DSV4_FP4_DEQUANT.is_set() to decide whether to enter the dequant path. is_set() only checks whether the env var exists, so explicitly setting SGLANG_DSV4_FP4_DEQUANT=0 or false is still treated as enabling the feature. Then set(self.is_fp4_experts is not None) writes True because self.is_fp4_experts is always a bool here.
Could we use .get() for the enable check, and write back self.is_fp4_experts instead?
| fp8_method = Fp8MoEMethod(self) | ||
|
|
||
| if self.is_fp4_experts and self.dequant_fp4_to_fp8: | ||
| assert not get_moe_runner_backend().is_marlin() |
There was a problem hiding this comment.
When is_fp4_experts and dequant_fp4_to_fp8 is true, Fp8Config.get_quant_method() returns the plain Fp8MoEMethod. That works for the normal FP8-compatible backend path, but if the user also passes --moe-runner-backend flashinfer_mxfp4, Fp8MoEMethod.create_moe_runner() does not create self.runner for that backend. Later apply() can hit an unsupported/missing-runner path.
Could we either reject this combination with a clear error, or normalize the backend to an FP8-compatible backend when dequant is enabled?
|
@BBuf Comments solved. please check. |
|
/rerun-failed-ci |
Co-authored-by: Peng Zhang <aniz1905@gmail.com>
Co-authored-by: Peng Zhang <aniz1905@gmail.com>
Co-authored-by: Peng Zhang <aniz1905@gmail.com>
Motivation
Current available weights for DSv4 Flash (from deepseek-ai or sgl-project) do not support TP8, which performs better in H20.
Dequanting FP4 to FP8 would be more preferrable during weight loading. Because this process depends on the TP size.
usage:
cc @AniZpZ #23602
Accuracy Tests
MMLU tests pass.

Benchmark
Setup:
1P1D 8xH20, radix cache off
Prefill: TP8+CP8
Decode: TP8
ISL: 15k, OSL: 700
Results:
batch size = 1
qps=0.83
Checklist
Review and Merge Process
/tag-and-rerun-ci,/tag-run-ci-label,/rerun-failed-ciCI States
Latest PR Test (Base): ✅ Run #28561076492
Latest PR Test (Extra): ❌ Run #28561076381