Status
Scheme Status
Architectural Cleanup (Done)
#40601 @yiliu30
Original RFC
Related RFCs
Motivation
Previously, we merged auto_round.py into inc.py as the unified Intel quantization backend. The vllm-xpu-kernels replacement for IPEX is a work in progress. This H1 2026 roadmap covers completing the consolidation, migrating from IPEX to vllm-xpu-kernels, and extending quantization scheme coverage on Intel CPU and XPU platforms.
Goals
- Broad scheme coverage β support the quantization formats that matter for Intel hardware (
wNa16 INT, w8a16 FP8), for both Linear and MoE layers, on both XPU and CPU.
- Architectural cleanup β decouple the
quant_method dispatch logic from INCConfig so INC acts purely as a config translator, not a kernel router.
1. Extend Quantization Scheme Coverage
Expand Intel platform support for the quantization schemes needed by production workloads.
1a. wNa16 (INT) β Weight-Only Integer Quantization
- XPU: Linear (W4A16), MoE (W4A16)
- CPU: Linear (W4A16), MoE (W4A16)
1b. w8a16 (FP8) β FP8 Weight-Only Quantization
- XPU: Linear (W8A16 FP8), MoE (W8A16 FP8)
- CPU: Linear (W8A16 FP8), MoE (W8A16 FP8)
Note: Some schemes may depend on kernel readiness.
2. Architectural Cleanup
Decouple the quant_method dispatch logic from INCConfig. Today, INCConfig.get_quant_method() contains per-backend routing that duplicates logic already in GPTQ/AWQ/Marlin configs:
get_quant_method()
βββ is_cpu/is_xpu/ipex? β apply_ipex_quant_layer() # dead code
βββ gptq format? β apply_gptq_quant_layer() # duplicates GPTQConfig
βββ awq format? β apply_awq_quant_layer() # duplicates AWQConfig
Proposed Refactoring
Replace the monolithic get_quant_method() with a two-level dispatch architecture, inspired by the compressed-tensors design:
Level 1 β Module-type method (AutoRoundQuantLinearMethod, AutoRoundMoEMethod):
Implements the vLLM method interface (LinearMethodBase / FusedMoEMethodBase). A static factory (get_method() / get_moe_method()) resolves the per-layer quantization scheme and delegates to the correct Level 2 impl.
Level 2 β Scheme-specific impl (e.g. AutoRoundWNA16LinearImpl, AutoRoundFP8LinearImpl):
Implements an abstract AutoRoundQuantImpl base class that defines create_weights(), process_weights_after_loading(), and apply_weights(). Each impl owns a single quantization scheme and its kernel calls.
INCConfig.get_quant_method(layer, prefix)
β
βββ LinearBase β AutoRoundQuantLinearMethod.get_method(config, layer, prefix)
β βββ wNa16 INT β AutoRoundWNA16LinearImpl
β βββ w8a16 FP8 β AutoRoundFP8LinearImpl
β
βββ FusedMoE β AutoRoundMoEMethod.get_moe_method(config, layer, prefix)
βββ wNa16 INT β AutoRoundWNA16MoEImpl
βββ w8a16 FP8 β AutoRoundFP8MoEImpl
Feedback Period.
Please comment on the proposal or suggest alternatives. If there are no strong objections, we will proceed with the timeline above and submit implementation PRs. Thanks!
CC List.
cc @hshen14 @thuang6 @wenhuach21 @Zhenzhong1 @jikunshang @xinyu-intel @xuechendi
cc @robertgshaw2-redhat
Any Other Things.
No response
Before submitting a new issue...
Status
Scheme Status
auto_round:auto_gptq;β Merged #43404 @Liangliang-Ma
auto_round:auto_awqArchitectural Cleanup (Done)
#40601 @yiliu30
Original RFC
Related RFCs
Motivation
Previously, we merged
auto_round.pyintoinc.pyas the unified Intel quantization backend. Thevllm-xpu-kernelsreplacement for IPEX is a work in progress. This H1 2026 roadmap covers completing the consolidation, migrating from IPEX tovllm-xpu-kernels, and extending quantization scheme coverage on Intel CPU and XPU platforms.Goals
wNa16 INT,w8a16 FP8), for both Linear and MoE layers, on both XPU and CPU.quant_methoddispatch logic fromINCConfigso INC acts purely as a config translator, not a kernel router.1. Extend Quantization Scheme Coverage
Expand Intel platform support for the quantization schemes needed by production workloads.
1a. wNa16 (INT) β Weight-Only Integer Quantization
1b. w8a16 (FP8) β FP8 Weight-Only Quantization
2. Architectural Cleanup
Decouple the
quant_methoddispatch logic fromINCConfig. Today,INCConfig.get_quant_method()contains per-backend routing that duplicates logic already in GPTQ/AWQ/Marlin configs:Proposed Refactoring
Replace the monolithic
get_quant_method()with a two-level dispatch architecture, inspired by thecompressed-tensorsdesign:Level 1 β Module-type method (
AutoRoundQuantLinearMethod,AutoRoundMoEMethod):Implements the vLLM method interface (
LinearMethodBase/FusedMoEMethodBase). A static factory (get_method()/get_moe_method()) resolves the per-layer quantization scheme and delegates to the correct Level 2 impl.Level 2 β Scheme-specific impl (e.g.
AutoRoundWNA16LinearImpl,AutoRoundFP8LinearImpl):Implements an abstract
AutoRoundQuantImplbase class that definescreate_weights(),process_weights_after_loading(), andapply_weights(). Each impl owns a single quantization scheme and its kernel calls.Feedback Period.
Please comment on the proposal or suggest alternatives. If there are no strong objections, we will proceed with the timeline above and submit implementation PRs. Thanks!
CC List.
cc @hshen14 @thuang6 @wenhuach21 @Zhenzhong1 @jikunshang @xinyu-intel @xuechendi
cc @robertgshaw2-redhat
Any Other Things.
No response
Before submitting a new issue...