mixed tf.keras.mixed_precision 是否适用于推理?

Does mixed tf.keras.mixed_precision work for inference?

不知道是否理解了tensorflow keras的思路mixed precision。我的目标是 运行 具有浮点 16 精度的 tf.keras 模型以提高推理速度。这可以用混合精度完成吗?

我在训练我的模型之前设置此政策:

from tensorflow.keras.mixed_precision import experimental as mixed_precision
policy = mixed_precision.Policy('mixed_float16')
mixed_precision.set_policy(policy)

或者这只是为了加速训练。如果是这种情况,我如何才能使 tf.keras 模型的 weights/activations 达到 FP16 精度?

注:我用的是tensorflow==2.3.0

正如您提到的link,训练中存在混合精度。 Nvidia 有一些更深入的信息,这意味着什么: https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html

这是描述实际过程的论文,以及如何以及为什么在 FP32 中有一个 FP16 权重的副本作为主权重(因此是精度的混合)。 https://arxiv.org/pdf/1710.03740.pdf

但是硬件中也有混合精度运算,当你的数据是 FP32 而你的 weights/biases 是 FP16 时,这些可以加速你的推理,使用支持混合精度运算的硬件可以大大加速推理。

例如,对于 Nvidia T4,我在 YOLO3 上有大约 2 的加速,但在 Nvidia 1080 上没有加速。

模型的推理也获得了混合精度加速。 如果您想转换一个在没有混合精度策略的情况下训练的模型以利用混合精度模式,您应该:

  1. 使用混合精度策略创建模型
  2. 仅加载模型的权重。

如果有人找到其他解决方案,我会很高兴。