Learning Fp8LinearMethod

核心结论

Fp8LinearMethod 是 vLLM 中实现 FP8 量化的核心组件,通过在 ColumnParallelLinear 中注册量化方法,在推理时将计算 dispatch 到 FP8 GEMM kernel,实现显存和计算加速。

DeepSeek V4 中的 Linear 生命周期

  1. 模型初始化:Attention 模块中定义 ColumnParallelLinear
    • 计算 TP 分区对应的权重切分
    • 父类初始化获取量化方法
    • 调用 quant_method.create_weights() 创建参数量化并注册 loader
    • 处理 bias 并更新 TP 参数
  2. 权重加载:模型加载权重时遍历调用已注册的 loader
  3. 前向传播quant_method.apply() dispatch 到具体 kernel
    • Fp8BlockScaledMMLinearKernel 处理 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