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官方教程中的三种量化方式,包括静态量化、动态量化和量化意识训练。阐述了它们在标度和零点位置选择、模型运算能力等方面的区别,如静态量化需自定义参数,量化后模型需解量化才能运算;动态量化系统自动选参数,量化后可推理但不能训练等。

1315

被折叠的 条评论
为什么被折叠?



