預訓練
資料平行(data parallelism)
資料平行是跨多裝置訓練最單純的做法:在每個裝置上放一份完整的模型副本,再切分批次,讓每個裝置處理資料的不同片段。各自在自己的片段上算梯度,裝置之間把梯度平均起來,所有副本套用相同的更新——保持完全同步。裝置越多,每步處理的總批次就越大,訓練也就越快結束。
那個平均步驟是一種叫 all-reduce 的集體運算,也是主要的開銷:每個裝置在每一步都必須把自己的梯度分享給其他所有裝置。經典的限制是記憶體——每個裝置都握著整個模型、梯度與優化器狀態,一旦模型變得巨大就行不通了。分片版本如全分片資料平行(FSDP)與 ZeRO 解決了這點:把這些狀態切散到各裝置上,只在需要時才把每一片收攏回來。
正因為這份單純加上分片的升級,資料平行是幾乎每次大型訓練賴以建立的骨幹,再與張量平行、管線平行結合,去應付那些大到連單一裝置都放不下一份副本的模型。
又称
另见