深度学习

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

2017-06-13  本文已影响365人  skywalker

一. 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

上一篇 下一篇

猜你喜欢

热点阅读