我有兴趣测试我的神经网络(一个作为生成器的自动编码器 + 一个作为鉴别器的 CNN),它使用 3dconv/deconv 层和新的 Volta 架构,并从混合精度训练中受益。我使用 CUDA 9 和 CudNN 7.0 编译了 Tensorflow 1.4 的最新源代码,并将我的 conv/deconv 层使用的所有可训练变量转换为 tf.float16。此外,我所有的输入和输出张量的大小都是 8 的倍数。
不幸的是,我没有看到这种配置有任何显着的速度提升,训练时间与使用 tf.float32 时大致相似。我的理解是,使用 Volta 架构和 cuDNN 7.0,TF 应该会自动检测混合精度,因此可以使用 Tensor Core 数学。我错了,还是我应该做些什么来启用它?我还尝试了 TF1.5 夜间构建,它似乎比我自定义的 1.4 还要慢。
如果任何参与 Tensorflow 的开发人员能够回答这个问题,我将不胜感激。
编辑:在与 NVIDIA 技术支持人员交谈后,TF 似乎在支持 float16 的同时,为简单的 2D conv Ops 集成了混合精度加速,但目前还没有为 3D conv Ops 集成。