文档
注册

量化感知训练

QAT(Quantization-Aware Training)即量化感知训练,量化感知训练会重新训练量化模型,从而减小模型大小,并且加快推理过程。当前支持对PyTorch框架的CNN模型进行量化,并将量化后的模型保存为.onnx文件,量化过程中,需要用户自行提供模型与数据集,调用API接口完成模型的量化调优。

执行量化感知训练前需参考环境准备完成开发环境部署、Python环境变量、PyTorch框架及训练服务器环境变量配置。

表1 量化感知训练已验证模型列表

类型

名称

框架

图像分类

Resnet50

PyTorch

MobileNetV2

PyTorch

操作步骤

  1. 用户需自行准备模型、训练脚本和数据集,本样例以PyTorch框架的Resnet50和数据集ImageNet为例。
  2. 编辑训练脚本pytorch_resnet50_apex.py文件,导入如下接口。
    from modelslim.pytorch.quant.qat import qsin_qat
    from modelslim.pytorch.quant.qat import save_qsin_qat_model
  3. (可选)调整日志输出等级,启动调优任务后,将打屏显示量化调优的日志信息。
    from modelslim import set_logger_level
    set_logger_level("info")        #根据实际情况配置
  4. 用户需自行关闭混合精度训练或降低混合精度训练的级别(将“opt_level”设为“O1”)。
  5. 在模型训练脚本中识别模型、优化器、损失函数的初始化顺序,将优化器的初始化调整到模型和损失函数之后。本样例使用Resnet50因符合该顺序无需执行此步骤。
  6. 在优化器初始化之前调用“qsin_qat”函数,将模型和损失函数替换为“qsin_qat”的输出。如在“optimizer = torch.optim.SGD(”前,调用函数替换模型和损失函数。请参考qsin_qat进行配置。
    model, criterion = qsin_qat(model, criterion)        #根据实际情况配置待量化模型实例和损失函数
  7. “main_worker”函数的最后调用“save_qsin_qat_model”函数,导出量化完成的ONNX模型。请参考save_qsin_qat_model进行配置。
    save_qsin_qat_model(model, 'quantized_model.onnx', (1, 3, 224, 224))        #根据实际情况配置导出后模型文件名(文件后缀需为.onnx)和输入的shape
  8. 调用原训练流程进行单卡训练。

    修改train_full_1p.sh文件,建议修改“batch_size”为128(batch size根据实际情况改小),“optimizer-batch-size”修改为-1(关闭梯度累积),同时在加载预训练模型时,建议将“train_epochs”设为1。执行如下命令启动单卡训练任务。

    bash ./test/train_full_1p.sh --data_path=/datasets/imagenet  #请根据实际情况配置数据集路径
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词