FreeToken detects the checkpoint as `qwen4_exp`, but resolves its routed experts as unquantized. It consequently selects the BF16 expert-bank provider, whose generic reader finds none of the NVFP4 expert tensors and reports every expert layer as missing.
Command:
uv run ft serve \
--model /home/ubuntu/models/nvidia/Qwen3.8-Flash-Next-NVFP4 \
--port 8181 \
--host 0.0.0.0 \
--kv-reserve-tokens 262144
Relevant log:
[core|rank=0] INFO Auto-selected attention backend: qsa_sparse
[core|rank=0] INFO Auto-selected MoE backend: offload
[core|rank=0] INFO Resolved config: moe_backend='offload', attention_backend='qsa_sparse', cache_type='hybrid_radix', page_size=64
Loading weights: 100%|██████████| 11/11 [00:02<00:00, 3.77it/s]
[core|rank=0] WARNING parallel reader unavailable (freetoken.models.qwen4_exp provides no iter_weights_parallel); falling back to serial build
Process freetoken-TP0-scheduler:
[FrontendAPI] ERROR Backend supervisor: ValueError: Missing MoE expert source layers: {'gate_up': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], 'down': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]}
Traceback (most recent call last):
File "/home/ubuntu/git/FreeToken/python/freetoken/models/loader.py", line 419, in _load
raise ValueError(f"Missing MoE expert source layers: {missing}")
ValueError: Missing MoE expert source layers: {'gate_up': [0, 1, 2, ..., 47], 'down': [0, 1, 2, ..., 47]}
Environment:
- FreeToken 0.1.2, source commit `af71ba4`
- Ubuntu 24.04.3 LTS, kernel 7.0.0-29-generic
- NVIDIA GeForce RTX 5090, 32607 MiB VRAM, driver 595.84
- AMD Ryzen 9 9950X3D, 249 GiB system RAM
The two checkpoints use compatible expert tensor names, but describe their quantization differently:
expert_quant=nvfp4
dense_quant=none
attn_quant=none
lm_head_quant=none
I tested this locally by adding mixed-precision group detection plus a regression test shaped like NVIDIA's config. The Qwen3.8 config test suite passes (9 passed), and both the NVIDIA and RadixArk configs resolve to the flags above. With that change, the NVIDIA checkpoint proceeds through expert-bank loading successfully.
Before you start
Hugging Face link
https://huggingface.co/nvidia/Qwen3.8-Flash-Next-NVFP4
Is the model architecture already supported
Yes, but this checkpoint or quantization does not load
Is the quantization already supported
Yes, but this checkpoint's weight format does not load
What happens when you load it
Anything else
Root cause and suggested fix
The two checkpoints use compatible expert tensor names, but describe their quantization differently:
quant_algo: NVFP4.quant_algo: MIXED_PRECISION. Itsconfig_groups.group_0describes 4-bit float weights with group size 16 and targetsmodel.language_model.layers.*.mlp.experts.freetoken.models.qwen4_exp.config.parse_config()currently checks only whether the top-level algorithm containsfp4. It therefore setsexpert_quant="none"for the NVIDIA checkpoint.The parser should recognize a ModelOpt
MIXED_PRECISIONgroup as routed-expert NVFP4 when its weights havenum_bits=4,type=float,group_size=16, and its targets are the main language model's.mlp.experts. For this checkpoint the resulting flags should be:I tested this locally by adding mixed-precision group detection plus a regression test shaped like NVIDIA's config. The Qwen3.8 config test suite passes (
9 passed), and both the NVIDIA and RadixArk configs resolve to the flags above. With that change, the NVIDIA checkpoint proceeds through expert-bank loading successfully.I searched existing issues and found related Qwen3.8/NVFP4 reports, including #335, but none with this
MIXED_PRECISIONmetadata detection failure.