快速入门:量化(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中找到。