詳細解釋
模型並行(Model Parallelism)是將大型模型分割到多個GPU的技術,當模型太大無法放入單個GPU記憶體時使用。
工作原理:
- 模型分割:將網絡層分組,分配到不同GPU
- 前向傳播:GPU0計算完畢後將激活傳給GPU1,依此類推
- 反向傳播:反向順序,梯度從後向前傳播
- 參數分佈:每個GPU只存儲部分參數
與數據並行的對比:
- 數據並行:完整模型在每個GPU,不同數據
- 模型並行:模型分佈到多GPU,相同數據流經各層
- 適用場景:
- 數據並行:模型能放入單個GPU
- 模型並行:模型太大,必須分割
挑戰:
- GPU利用率低:只有當前計算的GPU忙碌,其他閒置
- 通信開銷:層間激活傳輸(特別是跨節點)
- 流水線氣泡:前向和反向傳播的等待時間
- 複雜性:需要仔細設計層分配
優化:
- 流水線並行:流水線化提高利用率
- 層間平衡:使每個GPU計算量相近
- 激活檢查點(Gradient Checkpointing):減少激活存儲
- 通信優化:合併小張量傳輸
應用場景:
- 大語言模型:GPT-3 175B分佈到多GPU
- 大圖像模型:超大分辨率輸入
- 嵌入層:大詞彙表的嵌入表分片
與流水線並行的關係:
- 模型並行是層級分割的基礎
- 流水線並行在此基礎上添加微批次流水線
- 通常組合:模型+流水線+數據三維並行
模型並行是超大模型訓練的必需技術。