Learning Fp8LinearMethod
核心结论
Fp8LinearMethod 是 vLLM 中实现 FP8 量化的核心组件,通过在 ColumnParallelLinear 中注册量化方法,在推理时将计算 dispatch 到 FP8 GEMM kernel,实现显存和计算加速。
DeepSeek V4 中的 Linear 生命周期
- 模型初始化:Attention 模块中定义
ColumnParallelLinear- 计算 TP 分区对应的权重切分
- 父类初始化获取量化方法
- 调用
quant_method.create_weights()创建参数量化并注册 loader - 处理 bias 并更新 TP 参数
- 权重加载:模型加载权重时遍历调用已注册的 loader
- 前向传播:
quant_method.apply()dispatch 到具体 kernelFp8BlockScaledMMLinearKernel处理 input 量化后调用 GEMM kernel
待确认:非 Parallel 权重如何处理?
MergedColumnParallelLinear的定义?
Fp8LinearMethod 关键方法
| 方法 | 功能 |
|---|---|
__init__ |
保存量化配置、检测 deepgemm、判定量化粒度(per-tensor/block/token)、创建量化 key |
create_weights |
创建 ModelWeightParameter 和 scale 参数、保存 TP 信息、选择并缓存 FP8 kernel |
process_weights_after_loading |
权重加载后的 hook 处理 |
apply |
dispatch 到 self.fp8_linear 执行具体 kernel |