快速入门:量化(Windows)

量化是减少内存使用和加速深度学习模型推理的关键技术。

ModelOpt-Windows中的ONNX量化API提供了高级的训练后量化(PTQ)选项,如激活感知量化(AWQ)。

ONNX 模型量化 (PTQ)

ONNX量化API需要一个模型、校准数据以及量化设置,如算法、校准-EPs等。以下是一个实现int4 AWQ的示例:

from modelopt.onnx.quantization.int4 import quantize as quantize_int4
# import other packages as needed
calib_inputs = get_calib_inputs(dataset, model_name, cache_dir, calib_size, batch_size,...)
quantized_onnx_model = quantize_int4(
    onnx_path,
    calibration_method="awq_lite",
    calibration_data_reader=None if use_random_calib else calib_inputs,
    calibration_eps=["dml", "cpu"]
)
onnx.save_model(
    quantized_onnx_model,
    output_path,
    save_as_external_data=True,
    location=os.path.basename(output_path) + "_data",
    size_threshold=0,
)

查看modelopt.onnx.quantization.quantize_int4了解量化API的详细信息。

有关支持的功能和模型的详细信息,请参阅支持矩阵

要了解更多关于ONNX PTQ的信息,请参考ONNX量化 - Windows示例脚本

部署

量化后的ONNX模型已准备好部署,等同于标准的ONNX模型。ModelOpt-Windows使用ONNX的DequantizeLinear (DQ)节点,这些节点从opset版本21开始支持INT4数据类型。确保模型的opset版本为21或更高。详情请参考应用训练后量化(PTQ)

# write steps (say, upgrade_opset_to_21() method) to upgrade opset to 21, if it is lower than 21.

quantized_onnx_model = upgrade_opset_to_21(quantized_onnx_model)
onnx.save_model(
    quantized_onnx_model,
    output_path,
    save_as_external_data=True,
    location=os.path.basename(output_path) + "_data",
    size_threshold=0,
)

使用DirectML后端部署量化模型。有关详细的部署说明,请参阅DirectML 部署

注意

来自ModelOpt-Windows的即用型优化ONNX模型可在HuggingFace的NVIDIA collections中找到。