我正在尝试优化我的pytorch模型。我了解量化的基本原理(将32位浮点值更改为16位或8位的其他数据类型(,但我不知道这两种方法有何不同,也不知道该选择什么。
我看到AMP(自动混合精度(https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html和常规量化https://pytorch.org/tutorials/recipes/quantization.html.
有人能解释一下区别和应用吗?非常感谢。
自动混合精度(AMP(的主要目标是减少训练时间。另一方面,量化的目标是提高推理速度。
AMP:并非所有图层和操作都需要fp32的精度,因此最好使用较低的精度。AMP负责为什么操作使用什么精度。它最终有助于加快训练速度。
混合精度尝试将每个操作与其适当的数据类型匹配,这可以减少网络的运行时和内存占用。
此外,请注意,在启用Tensor Core的GPU架构上可以观察到最大性能增益。
量化将模型参数中的32位浮点数转换为8位整数。这将显著减小模型大小并提高推理速度。然而,它可能会严重影响模型的准确性。这就是为什么你可以使用像量化感知训练(QAT(这样的技术。休息一下,你可以阅读你分享的教程。