Computer vision Reinpect人体检测模型的分布式张量流训练

Computer vision Reinpect人体检测模型的分布式张量流训练,computer-vision,tensorflow,distributed,multi-gpu,Computer Vision,Tensorflow,Distributed,Multi Gpu,我正在研究分布式Tensorflow,特别是使用本文中给出的分布式Tensorflow实现重新检查模型 我们正在使用图间异步实现分布式tensorflow设置,但结果非常令人惊讶。在进行基准测试时,我们发现分布式训练所需的训练时间几乎是单机训练的2倍多。任何关于可能发生的事情以及可以尝试的其他事情的线索都将非常感谢。谢谢 注意:这篇文章中有一个更正,我们使用的是图之间的实现,而不是图中的实现。为这个错误感到抱歉我最近看到了类似的事情,我注意到将数据从grpc移动到Python运行时比预期的要慢。

我正在研究分布式Tensorflow,特别是使用本文中给出的分布式Tensorflow实现重新检查模型

我们正在使用图间异步实现分布式tensorflow设置,但结果非常令人惊讶。在进行基准测试时,我们发现分布式训练所需的训练时间几乎是单机训练的2倍多。任何关于可能发生的事情以及可以尝试的其他事情的线索都将非常感谢。谢谢


注意:这篇文章中有一个更正,我们使用的是图之间的实现,而不是图中的实现。为这个错误感到抱歉

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

add_op = params.assign_add(update)
...
sess.run(add_op)
如果
add_op
位于不同的进程上,则
sess.run
添加以50-100 MB/秒的速率发生的解码步骤


这里有一个和

一般来说,如果从模型的单进程实现转移到多机器实现会导致速度减慢,我不会感到惊讶。从你的问题来看,可能发生的事情并不明显,但这里有一些一般性的提示:

  • 如果模型具有大量与计算量相关的参数(例如,如果模型主要执行大型矩阵乘法而不是卷积),则您可能会发现网络是瓶颈。网络连接的带宽是多少

  • 进程之间是否存在大量拷贝,可能是由于设备放置不当所致?尝试收集并可视化时间线,以查看运行模型时发生的情况

  • 您提到您正在使用“图内复制”,这是为了可伸缩性。图内复制可能会在单个主机上造成瓶颈,特别是当您有一个包含多个副本的大型模型图时

  • 您是跨复制副本使用单个输入管道还是多个输入管道?使用单个输入管道会在运行输入管道的进程上造成瓶颈。(但是,在图内复制中,运行多个输入管道也可能会造成瓶颈,因为一个Python进程将用大量线程驱动I/O。)

  • 或者你在使用送料机构?当数据必须跨越进程边界时,传送数据的速度要慢得多,就像在复制设置中一样。使用图间复制至少可以消除单客户端进程的瓶颈,但为了获得更好的性能,应该使用输入管道。(同样,在分布式版本中,馈送和获取大张量值的速度较慢,因为数据是通过RPC传输的。在单个进程中,这些将使用简单的
    memcpy()

  • 您使用了多少个进程?缩放曲线是什么样子的?当您切换到使用参数服务器和单个工作副本(与单个组合进程相比)时,是否会立即减速?随着您添加更多副本,性能是提高了还是降低了