一. MPI要解決的問題
MPI是一門比較老的技術(shù)捕捂,在高性能計算界(特別是成熟的科學(xué)計算軟件中)幾乎是標(biāo)配瑟枫,其對高性能通信(特別是rdma)優(yōu)化較好。
特定于機器學(xué)習(xí)任務(wù)绞蹦,MPI最大的優(yōu)勢有兩點力奋。一是 MPI有一個高性能 allreduce的實現(xiàn)榜旦,底層實現(xiàn)了 tree aggregation幽七。 二是程序可以無縫移植到異構(gòu)高性能計算環(huán)境,例如 infiniband.
二. RDMA要解決的問題
Remote Direct Memory Access (RDMA)提供了一種跨過cpu溅呢,os和TCP/IP 協(xié)議棧直接訪問遠(yuǎn)端內(nèi)存到本地內(nèi)存的方式澡屡。其有低延遲,低cpu使用率的有點咐旧,原理如下圖驶鹉。
rdma2
RDMA 技術(shù)有好幾種規(guī)范來達(dá)到:
InfiniBand: 這是正統(tǒng),InfiniBand 設(shè)計之初就考慮了 RDMA铣墨,InfiniBand 從硬件級別保證可靠傳輸;
iWARP: 基于 TCP or SCTP 做 RDMA室埋,利用 TCP or SCTP 達(dá)到可靠傳輸,對網(wǎng)絡(luò)設(shè)備的要求比較少;
RoCE: 基于 Ethernet 做 RDMA,消耗的資源比 iWARP 少姚淆,支持的特性比 iWARP 多孕蝉,需要FCoE做可靠傳輸。從wikipedia的評價看 RoCE 還是比正統(tǒng)的 InfiniBand 差點腌逢。
上面三種實現(xiàn)都是需要硬件支持的降淮,IB 需要支持 IB 規(guī)范的網(wǎng)卡和交換機,iWARP 和 RoCE 都可以使用普通的以太網(wǎng)交換機搏讶,但是需要支持 iWARP 或者 RoCE 的網(wǎng)卡佳鳖。
業(yè)界使用的比較多的MPI版本是mvapich2-2.2(基于MPICH-3.1.4)和MPICH-3
三. 機器學(xué)習(xí)平臺中會用到的MPI的操作
MPI常用操作
操作的具體含義
另外的實現(xiàn)了如上操作,可以選擇的技術(shù)是
- Gloo: a collective communications library from facebook
- 基于tcp的協(xié)議(如:zeromq)
- 基于java的一個通訊庫實現(xiàn): ytk-mp4j
四. 結(jié)論
如果你訓(xùn)練的模型比較大媒惕,需要多機多卡的訓(xùn)練系吩。如果你的訓(xùn)練通訊/計算的占比較高。這時候就需要針對通訊做優(yōu)化妒蔚。一個比較好的方式就是mpi + rdma on infiniband淑玫。一個具體的例子就是PaddlePaddle的實現(xiàn)RDMANetwork.h
五. 參考
1. 知乎:MPI 在大規(guī)模機器學(xué)習(xí)領(lǐng)域的前景如何?
2. MPI Tutorial
3. MPI Collective