自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

神奇:內存池化和分布式AI集群優(yōu)化

人工智能 分布式
分布式機器學習產生的原因很簡單, 一方面是可供訓練的數據越來越多,另一方面是模型自身的規(guī)模越來越大,所以必須要多個機器來搞。

[[429309]]

分布式機器學習產生的原因很簡單, 一方面是可供訓練的數據越來越多,另一方面是模型自身的規(guī)模越來越大,所以必須要多個機器來搞。RoCE一類的通信協議自然被用到了,這其實也是nVidia要買Mellanox的根本原因,而并行的方法主要有如下兩種:

數據并行很容易解釋,主要是如何存儲訓練樣本,并且在多機器之間傳遞混淆樣本,基本上大家大同小異的都在采用SSD、分布式存儲解決這些問題,當然還有內存池化的需求.

另一個問題便是模型并行,當單個工作節(jié)點無法存儲時,就需要對模型本身進行分割。當分布式訓練每輪迭代完成都需要將參數進行同步,通常是將每個模型對應的參數加總求和再獲得平均值,這種通信被稱為AllReduce

最開始的時候,是采用一個集中式的參數服務器(Parameter Server)構建,但是很快就發(fā)現它成了整個集群的瓶頸,然后又有了一些環(huán)形拓撲的All-Reduce

而對于nVidia而言,它們極力的擴大NVLink的帶寬,同時也快速的迭代NCCL,都是為了解決這個AllReduce的問題,但是這些只在單機或者一個極度緊耦合的集群內部。另一方面主機間的通信,自然就選擇了超算中非常常見的RDMA ROCE了。

但是即便如此,AllReduce的延遲還是極大的影響了整個訓練集群的規(guī)模:

Allreduce算法簡介可以參考鵝廠總結的:

騰訊機智團隊分享--AllReduce算法的前世今生[1]

另一個工作:EFLOPS

阿里在HPCA2020上發(fā)布了一篇論文

阿里其實也看清楚了這個問題,PCIe的擁塞,內部調度的擁塞,網卡的擁塞:

然后解決方案很簡單,反正錢多,一個GPU配一個網卡就好,然后網口多了,交換網也改成兩套Fat-Tree

阿里的文章中有一個結論

也就是說即便是用了HDRM,也就40Gbps的帶寬了,那我先告訴你們NetDAM的一個結論100Gps輕松跑滿,單個Alveo U55N可以跑滿200Gbps,贈送一句話: In me tiger sniffs the rose.

NetDAM實現AllReduce

首先不談AllReduce的算法和相應的拓撲,在帶寬一定的條件下的約束是通信延遲和計算延遲. 如果采用RoCE,從一臺機器讀和寫都要經過一次PCIe,所以從根源上要解決這個問題就是內存前置,延遲不就下來了么?

通信延遲降下來了,我們再來看計算延遲,傳統的方式要怎么加:

 

而在計算域內,CPU嘛,AVX512加咯還能怎么樣,帶上Cache延遲抖動都不好控制,丟GPU上還要多一次Memory Copy,即便是直接使用GPU-Direct不也要過一次PCIe么?所以你跑不到線速100Gbps很正常

直接在網卡上放置大量ALU,收到包的時候,包還在SRAM buffer中,這個時候ALU根據包頭的NetDAM Instruction,可以多個ALU同時去load本地DRAM,然后add到相應的SRAM里。加完以后,整個包改個IP頭直接就轉發(fā),這樣一個9000B的報文可以承載2048個float32,等同于AVX(32*2048)的SIMD-Add,所以我當然比你CPU快咯,而且加的時候沒有DRAM的Store,只有最后一跳才會Store,又省了多少?

除此之外,針對AI訓練的場景,還有很多可以直接通過NetDAM ALU過濾的方法,例如當一個SIMD內部的2048個float32有一半以上的0時,我可以很簡單的使用

而在AllGather階段,也就是說算好數據需要再次分發(fā)的時候,RoCE的組播似乎只是一個概念上的東西,而NetDAM則可以在這個階段充分發(fā)揮以太網組播或者廣播的能力,當然具體的丟包重傳,這些都在NetDAM之間就可以完成,FPGA檢測到Seq丟失直接產生一個READ報文給源就行了,壓根不需要CPU參與,具體內容明天講擁塞控制的時候詳細說。

關鍵還不止這一點,它還內帶了一個Segment Routing頭,可以做鏈式反應,就像原子彈那樣~嘣~~~

鏈式反應另一個特點就是,打開了通向3D-Torus拓撲的新空間,畢竟連交換機延遲都省了,而且用RingAllreduce跑滿帶寬還不需要考慮incast,漂亮不?香不香?

而Google TPU集群為什么要用Torus-Ring,甚至一些超算用6D-Torus,想明白了么?其實就是在擴展性上,Non-Blocking成本很高,而且臨時擴大或者縮小集群規(guī)模需要添加額外的設備構成FatTree,Incast也不好控制,而Torus雖然是有阻塞的但是可以通過通信模式來避免阻塞。

即便是用Fat-Tree的數據中心,我們也給你們準備了Ruta的方案來做流量工程,比起那啥搞什么PortRank,更加簡單直觀的是哪兒不堵走哪兒~ 擁塞控制,明天給你們安排~

NetDAM實現內存池

NetDAM是一個標準的UDP協議,NetDAM可以獨立于主機單獨部署, 因此可以構成一個非常大規(guī)模的內存池:

因此普通主機 用戶態(tài)不需要任何特殊的開發(fā)套件,直接一個UDP Socket就可以控制整個內存集群,爽不爽?

而當你主機自己有了NetDAM卡了以后,可以玩的更High, 分區(qū)全局地址空間(partitioned global address space:PGAS)了解一下, 在這種場景下,我們可以把一個交換機芯片改造成MMU,對外提供一個虛擬的IP地址和UDP端口,然后構成一個大的虛擬化池隱藏內部拓撲。而每個netDAM報文訪問的內存地址由交換芯片查表做地址轉換到最終的NetDAM。這種情況下,交換機MMU還可以采用Interleave編址來解決內存局部使用過熱的問題...

繼續(xù)從分布式AI訓練集群來看,對內存池的需求主要是一個是訓練數據集的分發(fā)和混淆,另一個是參數和梯度的更新。所以這次HotChip中Cerebras提供了一個Memory-X套件:

計算任務上,MemoryX還添加了Optimizer

結論 NetDAM也可以同樣的實現這個功能:)

預告....EFLOPS談完了,我們來談談HPCC?當延遲為確定性時,只需要考慮Buffer深度了,那么算法就更簡單了:

Reference

[1]騰訊機智團隊分享--AllReduce算法的前世今生:

 

https://zhuanlan.zhihu.com/p/79030485

 

責任編輯:武曉燕 來源: zartbot
相關推薦

2017-09-11 15:17:01

分布式集群負載均衡

2020-09-08 13:25:52

HBase分布式數據庫

2022-10-19 08:39:46

?可?分布式集群

2017-08-10 10:17:32

Hadoop分布式搭建

2019-09-26 15:43:52

Hadoop集群防火墻

2022-03-29 23:17:52

PostgreSQL集群Citus

2023-03-09 11:35:40

2018-11-15 12:35:25

Ceph分布式存儲

2022-03-21 19:44:30

CitusPostgreSQ執(zhí)行器

2020-07-15 09:20:48

MyCatMySQL分布式

2022-03-27 06:37:37

SQLPostgreSQL集群

2010-07-06 09:39:20

SQL Server分

2018-06-28 14:00:01

分布式集群架構

2020-07-16 20:55:19

ElasticSear集群分布式

2020-07-03 13:29:08

Redis集群哈希槽

2019-05-24 14:45:17

分布式微服務運維

2022-03-21 06:45:22

PostgreSQL數據庫Citus

2014-08-13 10:47:18

分布式集群

2019-10-10 09:16:34

Zookeeper架構分布式

2023-05-29 14:07:00

Zuul網關系統
點贊
收藏

51CTO技術棧公眾號