Views
No views yet
sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-NVFP4
in vLLM. It is a tiny (≈0.4 B) single-layer drafter that proposes tokens the NVFP4 target then verifies, so single-stream decode runs faster with identical-quality (greedy-lossless) output.speculative_config draft for the NVFP4 target above.| config | base t/s | with this MTP draft | speedup | draft acceptance |
|---|---|---|---|---|
| TP=1 (1× RTX PRO 2000) | 129.8 | 154.2 | 1.19× | 59.8 % |
| TP=4 (4× RTX PRO 2000) | 301.9 | 339.8 | 1.13× | 59.8 % |
num_speculative_tokens=1. Acceptance is a property of the draft (TP-independent). Speedup is larger at lower TP (the target is slower there, so the draft saves relatively more).1from vllm import LLM, SamplingParams
2
3llm = LLM(
4 model="sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-NVFP4",
5 quantization="modelopt",
6 speculative_config={
7 "method": "eagle3",
8 "model": "sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-MTP-NVFP4",
9 "num_speculative_tokens": 1,
10 },
11 max_model_len=8192,
12)
13# This is a reasoning/chat model — ALWAYS chat-template prompts.
14sp = SamplingParams(temperature=0.0, max_tokens=256)
15print(llm.chat([{"role": "user", "content": "Explain speculative decoding."}], sp)[0].outputs[0].text)vllm serve)1vllm serve sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-NVFP4 \
2 --quantization modelopt \
3 --speculative-config '{"method":"eagle3","model":"sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-MTP-NVFP4","num_speculative_tokens":1}' \
4 --max-model-len 8192 \
5 --reasoning-parser deepseek_r1 # optional: the model emits <think>…</think>1NCCL_P2P_DISABLE=1 NCCL_CUMEM_ENABLE=0 \
2vllm serve sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-NVFP4 \
3 --quantization modelopt \
4 --tensor-parallel-size 4 \
5 --disable-custom-all-reduce \
6 --speculative-config '{"method":"eagle3","model":"sakamakismile/Huihui-LFM2.5-8B-A1B-abliterated-MTP-NVFP4","num_speculative_tokens":1}' \
7 --max-model-len 8192| flag | why |
|---|---|
--quantization modelopt | the target is NVFP4 (ModelOpt FP4) |
--speculative-config '{"method":"eagle3","model":"…MTP-NVFP4","num_speculative_tokens":1}' | turn on EAGLE-3 spec-decode with this draft (k=1) |
--tensor-parallel-size N + --disable-custom-all-reduce | multi-GPU |
NCCL_P2P_DISABLE=1 NCCL_CUMEM_ENABLE=0 (env) | required on no-NVLink/PCIe boxes or NCCL deadlocks at init |
--max-model-len 8192 | context window (raise as needed) |
do not pass --enforce-eager | the compiled path is where spec-decode is actually faster; eager misleads |
LLM(...) equivalents: quantization="modelopt", speculative_config={…}, tensor_parallel_size=N, disable_custom_all_reduce=True, enforce_eager=False, max_model_len=8192.⚠️ Requires a vLLM withlfm2_moespeculative-decode support. Stock vLLM does not yet wire EAGLE-3 /short_convspec-decode correctly for this hybrid (short-conv + attention + MoE) arch. The fix is upstream PR vllm-project/vllm#44296 (+ a model-sideSupportsEagle3patch). Until merged, apply those patches (4 files). On unpatched vLLM the draft loads but acceptance is ~0 %. For multi-GPU on no-NVLink boxes:NCCL_P2P_DISABLE=1 NCCL_CUMEM_ENABLE=0+disable_custom_all_reduce.
fc: 3·H→H fusing aux from target layers (2, 12, 21), own lm_head, d2t vocab map.Eagle3LlamaForCausalLM)eagle_config.use_aux_hidden_state: true.num_speculative_tokens ≥ 2 currently diverges on the short_conv kernel (a separate multi-query conv bug); higher k is the main lever left for bigger speedups (the ~400 t/s TP=4 target needs it).license_name: lfm1.0) — see the bundled
LICENSE. Lineage: LiquidAI/LFM2.5-8B-A1B → huihui-ai/Huihui-LFM2.5-8B-A1B-abliterated
→ …-NVFP4 (the target) →
this MTP / EAGLE-3 draft. The draft only proposes tokens the target verifies — greedy output is
unchanged vs the abliterated base.bc1qqnkhuchxw0zqjh2ku3lu4hq45hc6gy84uk70ge