TensorFlow:图形优化(GPU与CPU性能)

maz*_*tor 8 reinforcement-learning tensorflow

此问题最初发布在Github#3320上.最好从那里开始,因为在该线程中有更多关于原始问题的细节而且体积庞大,所以我不希望在StackOverflow上重新发布.问题摘要是使用GPU时性能比CPU处理TensorFlow图表要慢.包含CPU/GPU时间轴(调试)以进行评估.其中一条评论涉及优化图表以加速处理,并要求讨论玩具示例." 原始解决方案 "是我的强化学习代码,表现出缓慢的性能,并为社区讨论和评估创建了一些已发布的代码.

我附上了测试脚本以及一些原始数据,Trace Files和TensorBoard日志文件,以加快审查速度. CPUvsGPU testing.zip

讨论已移至StackOverflow,因为此主题将使所有Tensorflow用户受益.我希望发现的是优化已发布图表性能的方法.可以通过更高效的TensorFlow图解决GPU与CPU的问题.

我做的是采取我的原始解决方案并剥离"游戏环境".我用随机数据生成代替了它.在此游戏环境中,不会创建/修改TensorFlow图.该结构密切关注/利用nivwusquorum的Github强化学习示例.

2016年7月15日,我做了一个"git pull"前往Tensorflow.我在启用和启用GPU的情况下执行图表并记录时间(参见附图).意想不到的结果是GPU的性能超过了CPU(这是最初的期望未达到).因此,带有支持库的代码"cpuvsgpu.py"在GPU上表现更好.所以我把注意力转向了原始解决方案和已发布代码之间的不同之处.我还将头部更新为2016年7月17日.由于原始解决方案上的CPU和GPU之间的整体差异比一周再次接近,因为我看到47s CPU与71s GPU相比,有些东西确实有所改善.快速浏览新的Traces与我的初始跟踪,似乎"摘要"可能已经改变,但也可能有其他改进.

gtx 950计时

我尝试了其他两种组合来更好地反映原始解决方案的功能.那些CPU负载很重(~60% - 70%),并通过并发执行该脚本进行模拟.另一个变化是增加"数据IO",原始解决方案使用观察列表随机选择观察训练.此列表具有固定的上限,然后在附加新列表时开始删除列表中的第一个项目.我想其中一个可能是放慢了数据流到GPU的速度.不幸的是,这些版本都没有导致CPU超越GPU.我还运行了一个快速的GPUTESTER应用程序,它可以进行大型矩阵乘法,以了解与任务大小的时序差异,并且符合预期.

我真的想知道如何改进这个图表并减少小OPS的数量.似乎这是大部分性能可能会发生的地方.学习将较小的ops组合成较大的ops而不影响图形的逻辑(功能)的任何技巧都会很好.

djy*_*hat 2

结果感谢您的精彩帖子。

我遇到了类似的问题:对于 TensorFlow 提供的两个示例:线性回归损失模型和针对初学者的 MNIST,GPU/CPU 处理比单独的 CPU 处理需要更多的 CPU 和运行时间,而 MNIST Deep 脚本显示了 CPU 的显着改进和使用 GPU分析 GPU 和 CPU 性能时的 Elapsed第 10 页开始讨论。

以下是数字:

workload     | win 8.1   win 8.1   win8.1     win 10    win 10    win 10  
workload     | cpu only  cpu       gpu        cpu only  cpu       gpu      
-------------+-----------------------------------------------------------
mnist deep   | 14053     384.26   328.92      12406     289.28   211.79 
mnist deep   | 14044     384.59   328.45      12736     293.71   210.48
mnist10,000  | 24.10      45.85     7.67      26.56      44.42     7.32  
mnist10,000  | 23.94      44.98     7.56      25.80      44.24     7.32  
mnist50,000  | 95.49     198.12    38.26     109.99     197.82    36.15  
mnist50,000  | 96.07     197.86    37.91     109.46     195.39    39.44  
   lr10,000  |  6.23      15.08     1.78       7.38      16.79     1.91  
   lr10,000  |  6.33      15.23     1.78       7.44      16.59     1.91  
  lr100,000  | 48.31     124.37    17.67      62.14     148.81    19.04  
  lr100,000  | 48.97     123.35    17.63      61.40     147.69    18.72  
Run Code Online (Sandbox Code Playgroud)

(来源:GPU 和 CPU 性能分析,图 64结果