Environment
- Image:
lazymio/vllm-backport:v0.13.1-sm80 (A100 80G x2, TP2 + EP)
- Model:
Intel/Qwen3.8-Flash-Next-W4A16-AutoRound (config quant_method: auto-round, no ignore entries for PLE)
- Worked on v0.12.0-sm80 with the same launch flags; fails on v0.13.1-sm80.
Error
(Worker_TP0_EP0) NotImplementedError: Qwen4Exp PLE embedding does not support quantization config INCConfig
Root cause (code diff between v0.12.0 and v0.13.1)
-
v0.12.0 vllm/models/qwen4_exp/nvidia/ple_layer.py::_get_ple_embedding_quant_method:
if not isinstance(quant_config, Fp8Config):
return None # -> falls back to unquantized PLE loading
Unknown quant config types (INCConfig for auto-round checkpoints) are treated as unquantized — and this works, because AutoRound keeps the PLE embedding weights themselves in BF16 (only quant_method is declared globally with no per-layer ignore list).
-
v0.13.1 vllm/models/qwen4_exp/nvidia/ngram_embedding.py::Qwen4ExpPLEEmbeddingMethod.from_quant_config:
rewritten as an explicit whitelist (None / ModelOpt / CompressedTensors / Fp8). Anything else now hits:
if not isinstance(quant_config, Fp8Config):
raise NotImplementedError(...)
Suggested fix
Add a permissive branch for INCConfig (or any unhandled config whose PLE weights are BF16 in the checkpoint), e.g. treat INCConfig like the unquantized path — matching v0.12.0 behavior:
if isinstance(quant_config, INCConfig):
return Qwen4ExpPLEUnquantizedEmbeddingMethod()
Alternatively, a friendlier error message could suggest adding PLE layers to ignore as a workaround (Intel ships the checkpoint, so users cannot edit it easily).
Happy to test a patched image if needed. Thanks for the great fork!
Environment
lazymio/vllm-backport:v0.13.1-sm80(A100 80G x2, TP2 + EP)Intel/Qwen3.8-Flash-Next-W4A16-AutoRound(configquant_method: auto-round, noignoreentries for PLE)Error
Root cause (code diff between v0.12.0 and v0.13.1)
v0.12.0
vllm/models/qwen4_exp/nvidia/ple_layer.py::_get_ple_embedding_quant_method:Unknown quant config types (INCConfig for auto-round checkpoints) are treated as unquantized — and this works, because AutoRound keeps the PLE embedding weights themselves in BF16 (only
quant_methodis declared globally with no per-layer ignore list).v0.13.1
vllm/models/qwen4_exp/nvidia/ngram_embedding.py::Qwen4ExpPLEEmbeddingMethod.from_quant_config:rewritten as an explicit whitelist (None / ModelOpt / CompressedTensors / Fp8). Anything else now hits:
Suggested fix
Add a permissive branch for INCConfig (or any unhandled config whose PLE weights are BF16 in the checkpoint), e.g. treat INCConfig like the unquantized path — matching v0.12.0 behavior:
Alternatively, a friendlier error message could suggest adding PLE layers to
ignoreas a workaround (Intel ships the checkpoint, so users cannot edit it easily).Happy to test a patched image if needed. Thanks for the great fork!