首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tesla V100上未启用混合精度

在Tesla V100上未启用混合精度
EN

Stack Overflow用户
提问于 2017-11-08 05:25:09
回答 3查看 2.1K关注 0票数 7

我感兴趣的是测试我的神经网络(一个自动编码器,作为生成器+一个CNN作为鉴别器),它使用3dconv/deconv层和新的Volta架构,并从混合精度训练中受益。我使用CUDA9和CudNN 7.0编译了TensorFlow1.4的最新源代码,并将conv/deconv层使用的所有可训练变量转换为tf.float16。而且,我所有的输入和输出张量的大小都是8的倍数。

不幸的是,我没有看到这种配置有任何实质性的速度提升,训练时间大致与使用tf.float32时相似。我的理解是,对于Volta架构和cuDNN 7.0,TF应该自动检测混合精度,因此可以使用张量核心数学。我错了吗,或者我应该做些什么来启用它?我也尝试了TF1.5的夜间构建,它似乎比我的自定义1.4还要慢。

如果Tensorflow中的任何开发人员能回答这个问题,我将不胜感激。

编辑:在与NVIDIA技术支持人员交谈后,似乎在支持float16的同时,TF为简单的2D conv Ops集成了混合精度加速,但到目前为止还没有为3D conv Ops集成混合精度加速。

EN

回答 3

Stack Overflow用户

发布于 2017-11-16 00:57:45

基于NVIDIA documentation,我使用FP16 (TensorCore)运行基准测试。为此,我修改了tensorflow提供的alexnet_benchmarkhttps://gist.github.com/melgor/946b9643aa25dd3839a86804fc580741

总体而言,AlexNet只快了35%,并不是很快。我希望能快2倍。此外,也许Resnet会带来更大的不同。好的是我可以用batch_size = 5120 (fp32不能)来拟合模型,一次FB过程需要0.653,所以用90个时期训练ImageNet需要大约4h。

batch_size=512 alexnet_fp32: Forward-backward across 100 steps, 0.099 +/- 0.000 sec / batch alexnet_fp16: Forward-backward across 100 steps, 0.064 +/- 0.000 sec / batch

编辑:

我设法在FP16上运行ResNet模型(但没有BatchNorm,由于某种原因,BN不能与fp16一起工作):

batch_size=256 resnet50_fp32: Forward-backward across 100 steps, 0.575 +/- 0.001 sec / batch resnet50_fp16: Forward-backward across 100 steps, 0.504 +/- 0.001 sec / batch

batch_size=128 resnet152_fp32: Forward-backward across 100 steps, 0.757 +/- 0.001 sec / batch resnet152_fp16: Forward-backward across 100 steps, 0.581 +/- 0.010 sec / batch

ResNet的收益甚至更小。看起来FP16在V100上并没有太多的收获,不知道为什么。也许目前对TensorCore的支持还没有完全整合。

票数 3
EN

Stack Overflow用户

发布于 2018-02-08 20:17:44

我对这个话题很感兴趣,有没有人有关于Volta张量内核与Tensorflow集成的最新进展?我用Volta V100图形处理器和tensorflow 1.5 cuda 9.0 cudnn进行了测试速度的实验,得出了以下结论:

使用Volta V100的

  • 训练速度并不比使用GeForce 1080 Ti训练的速度快,但它应该要快得多。使用float16或float32不会改变任何东西,使用Volta V100与float 16进行
  • 训练并不比使用Volta V100与float32进行训练更快。volta GPU应该针对float16进行了优化,所以我希望速度能有实质性的提升。

因此,基本上我得到了与OP相同的结论: Tensorflow还没有完全支持Volta GPU。

tensorflow github上的这个PR似乎与这个主题有关,尽管我还没有测试这些更改:https://github.com/tensorflow/tensorflow/pull/16253

票数 2
EN

Stack Overflow用户

发布于 2018-01-06 07:33:26

我相信tensorflow没有使用正确的cudnn API调用来确定最佳算法。我刚刚为cudnnGetConvolutionForwardAlgorithm_v7和cudnnFindConvolutionForwardAlgorithmEx编写了tensorflow代码

也没有匹配的。我将向Tensorflow发起一个罚单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47167670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档