首页 文章

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

提问于
浏览
8

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

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

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

我做的是拿走我的 Original Solution 并剥离了"Game Environment" . 我用随机数据生成代替了它 . 在此游戏环境中,不会创建/修改TensorFlow图 . 该结构密切关注/利用nivwusquorum's Github Reinforcement Learning Example .

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

gtx 950 timing

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

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

1 回答

  • 2

    Results
    感谢优秀的帖子 .

    我遇到了类似的问题:由TensorFlow提供的两个示例:GPU / CPU处理比单独的CPU处理需要更多的CPU和经过时间:线性回归损耗模型和初学者的MNIST,而MNIST Deep脚本显示CPU的显着改进和使用GPU时的Elapsed Profiling GPU and CPU Performance第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
    

    (来源:Profiling GPU and CPU Performance,图64 Results

相关问题