深度学习工业界应用-加速-训练-MPI和RDMA

一. MPI要解决的问题

MPI是一门比较老的技术,在高性能计算界(特别是成熟的科学计算软件中)几乎是标配,其对高性能通信(特别是rdma)优化较好。
特定于机器学习任务,MPI最大的优势有两点。一是 MPI有一个高性能 allreduce的实现,底层实现了 tree aggregation。 二是程序可以无缝移植到异构高性能计算环境,例如 infiniband.

二. RDMA要解决的问题

Remote Direct Memory Access (RDMA)提供了一种跨过cpu,os和TCP/IP 协议栈直接访问远端内存到本地内存的方式。其有低延迟,低cpu使用率的有点,原理如下图。

rdma2

RDMA 技术有好几种规范来达到:
InfiniBand: 这是正统,InfiniBand 设计之初就考虑了 RDMA,InfiniBand 从硬件级别保证可靠传输;
iWARP: 基于 TCP or SCTP 做 RDMA,利用 TCP or SCTP 达到可靠传输,对网络设备的要求比较少;
RoCE: 基于 Ethernet 做 RDMA,消耗的资源比 iWARP 少,支持的特性比 iWARP 多,需要FCoE做可靠传输。从wikipedia的评价看 RoCE 还是比正统的 InfiniBand 差点。
上面三种实现都是需要硬件支持的,IB 需要支持 IB 规范的网卡和交换机,iWARP 和 RoCE 都可以使用普通的以太网交换机,但是需要支持 iWARP 或者 RoCE 的网卡
业界使用的比较多的MPI版本是mvapich2-2.2(基于MPICH-3.1.4)和MPICH-3

三. 机器学习平台中会用到的MPI的操作

MPI常用操作
操作的具体含义

另外的实现了如上操作,可以选择的技术是

四. 结论

如果你训练的模型比较大,需要多机多卡的训练。如果你的训练通讯/计算的占比较高。这时候就需要针对通讯做优化。一个比较好的方式就是mpi + rdma on infiniband。一个具体的例子就是PaddlePaddle的实现RDMANetwork.h

五. 参考

1. 知乎:MPI 在大规模机器学习领域的前景如何?
2. MPI Tutorial
3. MPI Collective

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 141,625评论 20 608
  • 关于Mellanox 我们是基于InfiniBand和以太网标准的端到端高性能互连产品和解决方案的集成供应商。我们...
    亚瑟谦阅读 2,308评论 0 0
  • 转自http://blog.csdn.net/xugangwen/article/details/44811783...
    扎Zn了老Fe阅读 9,605评论 1 140
  • 近五年半的时间了,一转眼,距离外婆离世。 在听闻室友外公突然走了之后,正在做着每天简单重复生活琐事的我,忽...
    柳晚阅读 70评论 0 1
  • 生明确指向死,生命长短是比较的结果,物质满足也是,说白了长寿也好,健康也好,富足也好,睿智也好,都是,假如天地间只...
    晚霞消失之时阅读 30评论 0 0