小编maz*_*tor的帖子

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

此问题最初发布在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而不影响图形的逻辑(功能)的任何技巧都会很好.

reinforcement-learning tensorflow

8
推荐指数
1
解决办法
2979
查看次数

是否有一种简单的方法来在TensorFlow中实现Optimizer.Maximize()函数

有一些实验依赖于梯度上升而不是梯度下降。我已经研究了一些使用“成本”和最小化函数来模拟“最大化”函数的方法,但是我仍然不确定我是否知道如何正确地实现一个maximize()函数。另外,在大多数情况下,我会说它们更接近于无监督的学习。因此,考虑到成本函数的以下代码概念:

cost = (Yexpected - Ycalculated)^2
train_step = tf.train.AdamOptimizer(0.5).minimize(cost)
Run Code Online (Sandbox Code Playgroud)

如果我遵循正梯度并且可能没有Yexpected值,我想写点东西:

maxMe = Function(Ycalculated)
train_step = tf.train.AdamOptimizer(0.5).maximize(maxMe)
Run Code Online (Sandbox Code Playgroud)

带有循环强化学习的http://cs229.stanford.edu/proj2009/LvDuZhai.pdf ” 就是这种需求的一个很好的例子。

我已经阅读了几篇论文和参考文献,指出改变符号的状态会将运动方向翻转为逐渐增加的梯度,但是鉴于TensorFlow对梯度的内部计算,我不确定这是否会最大化,因为我不知道验证结果的方法:

maxMe = Function(Ycalculated)
train_step = tf.train.AdamOptimizer(0.5).minimize( -1 * maxMe )
Run Code Online (Sandbox Code Playgroud)

machine-learning reinforcement-learning tensorflow

6
推荐指数
1
解决办法
5535
查看次数

如果服务器关闭,如何在C#中创建gRPC客户端超时?

我正在使用来自MS Windows 10上的C#平台的gRPC写回TensorFlow服务系统的连接.我已经看到许多对gRPC的C++ API的超时和死线的引用,但似乎无法弄清楚如何在C#下进行超时.

我只是打开一个到服务器的通道,设置客户端和调用服务器.我希望这个Classify在5秒左右后超时.任何帮助或方向将不胜感激.

channel = new Channel(modelServer,ChannelCredentials.Insecure);

var client = MyService.NewClient(channel);

MyResponse classvalue = client.Classify(featureSet);

c# grpc

5
推荐指数
2
解决办法
3552
查看次数