训练典型深度神经网络的最佳精度是多少?

问题描述:

我只是研究训练DNN的最佳精度。我知道,为了推理,即使是压缩的8位精度也应该可以工作。对于训练,我们需要更高精度的数字。 深度学习(fp16,fp32或fp64)的最佳精度是多少? 我可能会为此使用tensorflow-gpu。训练典型深度神经网络的最佳精度是多少?

+0

我大部分时间看到的是float32,不知道是否所有的操作都是用float64实现的但是 –

+0

这个问题比如https://github.com/tensorflow/tensorflow/issues/13097 –

这取决于您对“最佳”的评估函数:您的焦点训练时间(精度更低,速度更快),准确性(精度更低,精度更低)还是其他资源?这也取决于模型的复杂性和拓扑结构。

ConvNet(MNIST)在8位浮点数上会很好;训练速度更快,并且准确度差异(如果有的话)将是微不足道的。如果你转向更加相互依赖和脆弱的东西(可能是内核饥饿的GNN),那么你会注意到丢失到8位的准确性会降低。

再次根据您的需要,您可以通过降低到8位浮点数来节省训练时间,但是可以通过扩大模型(卷积层中的更多内核)少量来恢复一些丢失的精度。

+0

使用8或者16几乎所有的GPU都不会让训练速度更快。 GPU不具备较低精度的处理单元,而是使用相同的32位处理单元。 – BlueSun

+0

@BlueSun:对 - 我错过了最后一句话。我做了大部分关于CPU的工作。 – Prune

在大多数情况下,最佳精度是float32。 float64会使gpu上的执行速度明显变慢。另一方面,除非你有特斯拉p100 GPU,否则使用float16不会使执行速度更快。