1.數據并行DP(樸素數據并行,Zero數據并行之后補充)
O ( h 2 ? l ) O(h^2*l) O(h2?l)
每臺機器做完自己的梯度后需要做一次All reduce操作來累積梯度,故一個batch計算發送的數據量為每層梯度大小 h 2 h^2 h2乘以層數 l l l
優點:運用簡單,效率高,計算和通訊之間可以做異步。
缺點:有時候單個GPU無法容納下整個大模型做訓練。
流水線并行PP(Gpipe)
O ( b ? s ? h ? l / k ) O(b*s*h*l/k) O(b?s?h?l/k)
每個pp層之間發送中間變量大小(和輸入x相同大小)為 b ? s ? h b*s*h b?s?h,乘以正向和反向一共要傳遞的次數 2 ? ( l / k ? 1 ) 2*(l/k-1) 2?(l/k?1),得到上述大致的數量級
優點:通訊量小,數據無關。
缺點:要保證模型能均勻切分,否則會影響性能。需要用到重計算,來支持更大的批量 b b b,從而保證流水能發揮作用。反傳之前需要等待所以微批量計算。
張量模型并行TMP
O ( b ? s ? h ? l ) O(b*s*h*l) O(b?s?h?l)
MLP層第一個W1縱向切,第二個W2橫向切能保證一個MLP只做一次All reduce操作通訊。同理attn根據頭數來切分投影層。兩者每次的發送數據大小和PP一樣都是 O ( b ? s ? h ) O(b*s*h) O(b?s?h),不同是,TMP發送量和模型Transformer層數成線性關系。