Skip to content

模型量化:PTQ 与 QAT 实战

模型量化将浮点权重和激活转换为低精度整数表示,大幅减少模型大小和推理延迟。

模型量化

量化方法

python
import torch.quantization as quant

# PTQ(训练后量化)
model.eval()
model.qconfig = quant.get_default_qconfig('fbgemm')
prepared = quant.prepare(model)
with torch.no_grad():
    for batch in calibration_dataloader:
        prepared(batch)  # 校准
quantized = quant.convert(prepared)

# QAT(量化感知训练)
model.train()
model.qconfig = quant.get_default_qat_qconfig('fbgemm')
prepared = quant.prepare_qat(model)
for epoch in range(num_epochs):
    for batch in train_dataloader:
        prepared(batch)  # 模拟量化训练
quantized = quant.convert(prepared)

PTQ vs QAT

PTQ 简单快速,适合大多数场景;QAT 精度更高但需要完整训练。INT8 量化通常只损失 <1% 精度,INT4 需要更精细的校准。

相关资源

最近更新