和 PyTorch 官方一样,我们推荐您优先使用的 fx 量化模式。horizon_plugin_pytorch 目前支持采用 eager 模式进行量化。 Eager 模式的整体流程同样参考了 PyTorch 官方的量化接口和思路,因此,建议您先阅读 PyTorch 官方文档中 Eager 模式相关部分。
在 horizon_plugin_pytorch 中使用 eager 模式,和 fx 模式的主要区别在于:
| 原始的浮点算子 | 需要替换的算子 |
| torch.nn.functional.relu | torch.nn.ReLU() |
| a + b / torch.add | horizon.nn.quantized.FloatFunctional().add |
| Tensor.exp | horizon.nn.Exp() |
| torch.nn.functional.interpolate | horizon.nn.Interpolate() |
fuser_func。如下所示:其他步骤和 FX 模式一致,请参阅“快速入门”章节