大模型面經(jīng)—分布式訓練指南 原創(chuàng)
?分布式訓練指南理論篇。
本篇來總結(jié)一些分布式訓練的知識,還是按照面經(jīng)的形式給出,希望能給到大家一些幫助。
題目
1 訓練一個LLM,需要的顯存規(guī)模跟參數(shù)的關(guān)系是什么?
2. 如果有N張顯存足夠大的顯卡,怎么加速訓練?
3. 如果有N張顯卡,但每個顯卡顯存都不足以裝下一個完整的模型,應(yīng)該怎么辦?
4. PP推理時是串行的,1個GPU計算但其他空閑,有什么其他的優(yōu)化方式?
5. DP、TP、PP這3種并行方式可以疊加嗎?
6. 3D并行或者直接上多機多卡的ZeRO的條件是什么?
答案
1. 訓練一個LLM,需要的顯存跟參數(shù)的關(guān)系是什么?
主要公式是 模型本身占用顯存 + 多個batch數(shù)據(jù)運算的存儲 , 跟實際精度,模型大小、中間變量計算以及batch郵官。
2. 如果有N張顯存足夠大的顯卡,怎么加速訓練?
數(shù)據(jù)并行(DP),充分利用多張顯卡的算力。
3. 如果有N張顯卡,但每個顯卡顯存都不足以裝下一個完整的模型,應(yīng)該怎么辦?
PP,流水線并行,需要分層加載,把不同的層加載到不同的GPU上(accelerate的device_map)
4. PP推理時是串行的,1個GPU計算但其他空閑,有什么其他的優(yōu)化方式?
1) 流水線并行(PP), 橫向切分,也就是分層加載到不同的顯卡上。
2) 張量并行(TP),縱向切分,在 DeepSpeed 里叫模型并行(MP)
下面來簡單梳理一下DP,PP,TP,ZeRO以及其中MP的關(guān)系。
- DP Data parallelism
數(shù)據(jù)并行算法在多個設(shè)備上都拷貝一份完整的模型參數(shù),彼此之間可以獨立計算,所以每個設(shè)備傳入的輸入數(shù)據(jù)不一樣,這也是為什么叫數(shù)據(jù)并行。
只不過每隔一段時間(比如一個batch或者若干個batch)后需要彼此之間同步模型權(quán)重的梯度。
- PP Pipeline Parallelism
屬于 Model Parallelism (MP), 模型并行算法,它是模型做層間劃分,即inter-layer parallelism。
以下圖為例,如果模型原本有6層,你想在2個GPU之間運行pipeline,那么每個GPU只要按照先后順序存3層模型即可。
- TP Tensor Parallelism
Tensor Parallelism就是對模型層內(nèi)做劃分,也叫inter-layer parallelism。
就是把一個變量分散到多個設(shè)備并共同完成某個或多個計算操作。對于單個 Tensor/Op 很大 或者模型很大(如GPT3, chatGPT等)的情況,Tensor parallelism 的重要性非常明顯。
- ZeRO
這個之前有比較詳細的介紹。??大模型微調(diào)實踐必看——一文看懂Deepspeed:用ZeRO訓練大模型原理解析及參數(shù)含義解釋??
5. DP、TP、PP這3種并行方式可以疊加嗎?
可以,DP+TP+PP,這就是3D并行。
如果真有1個超大模型需要預(yù)訓練,3D并行是必不可少的。
單卡80g,可以完整加載小于40B的模型,但是訓練時需要加上梯度和優(yōu)化器狀態(tài),5B模型就是上限了,更別說 activation的參數(shù)也要占顯存,batch size還得大。而現(xiàn)在100億以下(10B以下)的LLM只能叫small LLM。
6. 3D并行或者直接上多機多卡的ZeRO的條件是什么?
3D并行的基礎(chǔ)是,節(jié)點內(nèi)顯卡間NVLINK超高速連接才能上TP。顯卡有沒有NVLINK都是個問題。
Zero3 需要滿足通信量,假設(shè)當65B模型用Zero3,每一個step的每一張卡上需要的通信量是195GB(3倍參數(shù)量),也就 是1560Gb。萬兆網(wǎng)下每步也要156s的通信時間,非常不現(xiàn)實。
?
文轉(zhuǎn)載自公眾號瓦力算法學研所,作者:喜歡瓦力的卷卷
原文鏈接:??https://mp.weixin.qq.com/s/_Hg8k-uijw8ntACiiWnhiw??
