快速入门:量化

量化

量化是一种有效的技术,可以减少深度学习模型的内存占用并加速推理速度。

ModelOpt的mtq.quantize() API允许用户使用SmoothQuant、AWQ等高级算法对模型进行量化。ModelOpt支持训练后量化(PTQ)和量化感知训练(QAT)。

提示

请参考量化格式了解ModelOpt支持的量化格式及其使用场景。

PyTorch模型的PTQ

mtq.quantize 需要模型、适当的量化配置和前向循环作为输入。以下是一个使用 mtq.quantize 对模型进行 int8 SmoothQuant 量化的快速示例:

import modelopt.torch.quantization as mtq

# Setup the model
model = get_model()

# The quantization algorithm requires calibration data. Below we show a rough example of how to
# set up a calibration data loader with the desired calib_size
data_loader = get_dataloader(num_samples=calib_size)


# Define the forward_loop function with the model as input. The data loader should be wrapped
# inside the function.
def forward_loop(model):
    for batch in data_loader:
        model(batch)


# Quantize the model and perform calibration (PTQ)
model = mtq.quantize(model, mtq.INT8_SMOOTHQUANT_CFG, forward_loop)

请参考量化配置以了解ModelOpt提供的量化配置。

部署

量化模型就像一个常规的Pytorch模型,可以用于评估或部署。

Huggingface 或 Nemo LLM 模型可以使用 ModelOpt 导出到 TensorRT-LLM。 请参阅 TensorRT-LLM 部署 指南以获取更多详细信息。

该模型也可以使用 torch.onnx.export导出到ONNX。


Next Steps
  • 了解更多关于量化和模型优化器量化的高级用法,请参阅 量化指南

  • 查看GitHub上的端到端示例,了解PTQ和QAT 这里