大規模訓練
序列平行(sequence parallelism)
張量平行切分的是 transformer 區塊裡含大型矩陣乘法的部分,卻把 dropout、layer-norm 與殘差區留作複製狀態——而對長序列來說,這些被複製的激活正是記憶體的大頭。序列平行補上這個漏洞:它沿序列(token)維度切分那些被複製的區段,使每個裝置在該處只持有部分 token 的激活。與張量平行結合後,被複製的激活佔用就以平行度下降,且不增加額外的權重記憶體。
機制上它改變了出現哪些集合通訊:純張量平行在區塊邊界做一次 all-reduce,而張量加序列的安排把它換成——進入注意力/MLP 區段時做 all-gather(以重組矩陣乘法所需的完整序列),離開時做 reduce-scatter(以沿序列重新切分)。搬動的總位元組數與原本的 all-reduce 相同,因此記憶體節省幾乎是免費的。一個相關變體是上下文平行,它用環狀傳遞鍵與值的方式把注意力計算本身沿序列切分,使連注意力激活與 KV 快取都能擴展到極長的上下文。
序列平行讓百萬 token 的上下文訓練變得可行:注意力的激活與記憶體成本隨序列長度成長,而切分 token 軸是唯一能在上下文視窗拉長到數十萬時、仍把每裝置記憶體限制住的辦法。
張量與序列平行通常一起部署:它們共用同一個平行群組、搬動相同的位元組數,因此序列平行本質上是免費附加在張量平行上的記憶體紅利。
又稱
另見