float16 vs float32 for convolutional neural networks

后端 未结 3 816
忘了有多久
忘了有多久 2021-02-07 13:26

The standard is float32 but I\'m wondering under what conditions it\'s ok to use float16?

I\'ve compared running the same covnet with both datatypes and haven\'t noticed

3条回答
  •  离开以前
    2021-02-07 14:28

    Surprisingly, it's totally OK to use 16 bits, even not just for fun, but in production as well. For example, in this video Jeff Dean talks about 16-bit calculations at Google, around 52:00. A quote from the slides:

    Neural net training very tolerant of reduced precision

    Since GPU memory is the main bottleneck in ML computation, there has been a lot of research on precision reduction. E.g.

    • Gupta at al paper "Deep Learning with Limited Numerical Precision" about fixed (not floating) 16-bit training but with stochastic rounding.

    • Courbariaux at al "Training Deep Neural Networks with Low Precision Multiplications" about 10-bit activations and 12-bit parameter updates.

    • And this is not the limit. Courbariaux et al, "BinaryNet: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1". Here they discuss 1-bit activations and weights (though higher precision for the gradients), which makes the forward pass super fast.

    Of course, I can imagine some networks may require high precision for training, but I would recommend at least to try 16 bits for training a big network and switch to 32 bits if it proves to work worse.

提交回复
热议问题