pytorch的三种量化方式详解

pytorch的三种量化方式详解

这篇博客详细介绍了pytorch官方教程提到的三种量化方式的原理,详细解释了三种量化方式的区别;

1. 静态量化 :torch.quantize_per_tensor

  • scale (标度)和 zero_point(零点位置)需要自定义。量化后的模型,不能训练(不能反向传播),也不能推理,需要解量化后,才能进行运算
    详细的解释,参考这篇博客: 静态量化

2. 动态量化 : torch.quantization.quantize_dynamic

  • 系统自动选择最合适的scale (标度)和 zero_point(零点位置),不需要自定义。量化后的模型,可以推理运算,但不能训练(不能反向传播)
  • 详细的解释,参考这篇博客: 动态量化

3. 量化意识训练

  • 系统自动选择最合适的scale (标度)和 zero_point(零点位置),不需要自定义。但这是一种伪量化,量化后的模型权重仍然是32位浮点数,但大小和8位定点数权重的大小相同。伪量化后的模型可以进行训练。虽然是以32位浮点数进行的训练,但结果与8位定点数的结果一致。
  • 示例程序: 量化意识训练

pytorch量化官方教程:

中文教程
English Tutorial

posted @ 2021-11-23 12:03  皮皮宽K  阅读(3897)  评论(0编辑  收藏  举报