首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式感应器-- Reinpect人体检测模型的流训练

分布式感应器-- Reinpect人体检测模型的流训练
EN

Stack Overflow用户
提问于 2016-09-30 09:48:15
回答 2查看 282关注 0票数 1

我正在研究分布式Tensorflow,特别是使用以下论文https://github.com/Russell91/TensorBox中给出的分布式Tensorflow实现复现模型。

我们正在使用图与图之间的异步实现分布式tensorflow设置,但结果非常令人惊讶。在替补席上,我们发现分布式训练的训练时间几乎是单机训练的2倍。任何关于可能发生的事情和可以尝试的其他事情的线索都会被真正感谢。谢谢

注:文章中有更正,我们使用的是图之间的实现,而不是图中的实现.对不起,我错了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-02 02:39:51

一般来说,如果从模型的单进程实现转移到多机器实现会导致放缓,我不会感到惊讶。从您的问题中可以看出,究竟发生了什么,但以下是一些一般性的提示:

  • 如果模型相对于计算量有大量的参数(例如,如果它主要执行大的矩阵乘法而不是卷积),那么您可能会发现网络是瓶颈。您的网络连接的带宽是多少?
  • 进程之间是否有大量副本,可能是由于设备放置不当造成的?尝试收集和可视化一个时间线,看看在运行模型时发生了什么。
  • 您提到您正在使用“图中复制”,这是用于可伸缩性的目前不建议。图中复制可能在单个主服务器上造成瓶颈,特别是当您有一个包含多个副本的大型模型图时。
  • 您是使用跨副本的单个输入管道,还是使用多个输入管道?使用单个输入管道将在运行输入管道的进程中造成瓶颈。(但是,使用图中复制,运行多个输入管道也会造成瓶颈,因为将有一个Python进程使用大量线程驱动I/O。)
  • 还是你用的是进给装置?当需要跨越进程边界时,喂入数据要慢得多,就像在复制的设置中那样。使用图间复制至少可以消除单个客户端进程的瓶颈,但是要获得更好的性能,应该使用输入管道。(作为雅罗斯拉夫,在分布式版本中,输入和获取大的张量值比较慢,因为数据是通过RPC传输的。在单个进程中,它们将使用一个简单的memcpy()。)
  • 您正在使用多少进程?缩放曲线是什么样子的?当您切换到使用参数服务器和单个工作人员副本(与单个组合进程相比)时,是否立即出现了减速?当您添加更多的副本时,性能会变得更好还是更差?
票数 2
EN

Stack Overflow用户

发布于 2016-10-01 17:49:46

最近我看到了类似的事情,我注意到将数据从grpc迁移到Python运行时比预期的要慢。特别是考虑遵循以下模式

代码语言:javascript
运行
复制
add_op = params.assign_add(update)
...
sess.run(add_op)

如果add_op位于不同的进程上,那么sess.run添加了一个解码步骤,其速率为50-100MB/秒。

这是一个基准测试相关讨论

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

https://stackoverflow.com/questions/39788542

复制
相关文章

相似问题

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