Quantized FP8 MTP Layers hurt acceptance rates

#13
by andrew-stanton - opened

In the FP8 variant, MTP layers are quantized to FP8. This turns out to have a real impact on draft acceptance rates, with an average drop in my experiments of around 3-4% across each position. I'd recommend updating this repo with the full BF16 (it costs ~0.4GB of VRAM) as the speed up is noticeable - I've validated this locally as well with the exact patch (Unsloth's NVFP4 also preserves the original BF16 MTP layers).

FP8 版本在grounding 定位方面极速下降, 分析原因可能是 VIT 模块被量化,导致坐标计算误差扩大

Does anyone have the BF16 mtp layers ready so we can test it?

I vibecoded the script that made things work bf16 MTP but I used original model to extract MTP head not NVFP4. Probably it doesn't matter, sizes are the same.
So

  1. Download bf16 mtp hf download hf://unsloth/Qwen3.8-27B-NVFP4/model_mtp.safetensors --local-dir .
  2. Rename model_mtp.safetensors to mtp.safetensors
  3. Replace model.safetensors.index.json with https://gist.github.com/kryoz/7e31dcf2724e679b50cc36f488051513

I've tested bf16 mtp and haven't found any significant improvement in acceptance rate over fp8 mtp built-in head. More on that bf16 is slower so overall speed is better with default fp8 mtp.

Sign up or log in to comment