快速入门:量化
量化
量化是一种有效的技术,可以减少深度学习模型的内存占用并加速推理速度。
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。