Pytorch 模型优化:自动混合精度与量化?

问题描述 投票:0回答:2

我正在尝试优化我的 pytorch 模型。我了解量化的基础知识(将 32 位浮点数更改为 16 位或 8 位的其他数据类型),但我不知道这两种方法有何不同或应该选择什么。

我看到 AMP(自动混合精度)https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html 和常规量化 https://pytorch.org/tutorials/recipes/quantization.html.

有人可以解释一下区别和应用吗? 谢谢你。

optimization pytorch
2个回答
5
投票

自动混合精度(AMP)的主要目标是减少训练时间。另一方面,量化的目标是提高推理速度。

AMP:并非所有层和操作都需要 fp32 的精度,因此最好使用较低的精度。 AMP 负责处理什么操作使用什么精度。它最终有助于加快训练速度。

混合精度尝试将每个操作与其适当的数据类型相匹配,这可以减少网络的运行时间和内存占用。

另请注意,在启用 Tensor Core 的 GPU 架构上观察到最大性能增益。

量化将模型参数中的 32 位浮点数转换为 8 位整数。这将显着减小模型大小并提高推理速度。然而,它可能会严重影响模型的准确性。这就是为什么您可以利用量化感知训练 (QAT) 等技术。剩下的你可以阅读你分享的教程。


0
投票

这可能是一个愚蠢的问题,但如果量化只是将 M 位浮点转换为 N 位整数 (M>N),那么为什么我们不能使用“model.int8( 将类型转换为双精度或浮点模型” )”。为什么我们需要所有这些不同的框架,例如 torch.quantization、AMP、TensorRT 等。是否有任何文档描述了量化方面所有这些不同方法之间的细微差别(即类型转换、torch 量化 API、AMP、TensorRT 和任何其他)对于这个量化主题的完全初学者?

© www.soinside.com 2019 - 2024. All rights reserved.