模型量化-量化训练

    Paddle模型量化包含三种量化方法,分别是动态离线量化方法、静态离线量化方法和量化训练方法。

    下图展示了如何选择模型量化方法。

    下图综合对比了模型量化方法的使用条件、易用性、精度损失和预期收益。

    img )

    大家可以根据不同情况选用不同的量化方法,有几点着重注意:

    • 动态离线量化方法主要用于减小模型体积,对性能提升不太明显

    • 静态离线量化方法和量化训练方法既可以减小模型体积,也可以加快性能,性能加速基本相同

    • 静态离线量化方法比量化训练方法更加简单,一般建议首先使用静态离线量化方法,如果量化模型精度损失较大,再尝试使用量化训练方法。

    动态离线量化方法参考文档,静态离线量化方法参考,下文主要介绍量化训练方法。

    本文主要介绍使用PaddleSlim量化训练方法产出的量化模型,使用PaddleLite加载量化模型进行推理部署,

    使用条件:

    • 有预训练模型

    • 有较多训练数据(通常大于5000)

    使用步骤:

    • 量化模型预测:使用PaddleLite加载量化模型进行预测推理

    优点:

    • 减小计算量、降低计算内存、减小模型大小

    • 模型精度受量化影响小

    缺点:

    • 使用条件较苛刻,使用门槛稍高

    建议首先使用“静态离线量化”方法对模型进行量化,然后使用使用量化模型进行预测。如果该量化模型的精度达不到要求,再使用“量化训练”方法。

    温馨提示:如果您是初次接触PaddlePaddle框架,建议首先学习新人入门和。

    使用PaddleSlim模型压缩工具训练量化模型,请参考文档:

    首先,使用PaddleLite提供的模型转换工具(model_optimize_tool)将量化模型转换成移动端预测的模型,然后加载转换后的模型进行预测部署。

    参考模型转换准备模型转换工具,建议从Release页面下载。

    参考使用模型转换工具,参数按照实际情况设置。比如在安卓手机ARM端进行预测,模型转换的命令为:

    3.2 量化模型预测

    和FP32模型一样,转换后的量化模型可以在Android/IOS APP中加载预测,建议参考、Java Demo、。

    问题:Compiled with WITH_GPU, but no GPU found in runtime

    解答:检查本机是否支持GPU训练,如果不支持请使用CPU训练。如果在docker进行GPU训练,请使用nvidia_docker启动容器。

    解答:正确设置run.sh脚本中,确保显卡剩余内存大于需要内存。