在合併使用管道平行處理與張量平行處理組時的排名機制 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在合併使用管道平行處理與張量平行處理組時的排名機制

本區段說明模型平行處理的排名機制如何搭配張量平行處理。這是從 SageMaker 模型平行程式庫的核心功能排名基本資訊延伸而來。借助張量平行處理,程式庫引入三種類型的排名及處理程序群組 API:smp.tp_rank() 用於張量平行等級,smp.pp_rank() 用於管道並平行等級,以及 smp.rdp_rank() 用於縮減資料平行等級。對應的通訊處理程序群組是張量平行群組 (TP_GROUP)、管道平行群組 (PP_GROUP) 與縮減資料平行群組 (RDP_GROUP)。這些群組定義如下:

  • 張量平行群組 (TP_GROUP) 是資料並平行群組的可均分子集,模組在此進行張量平行發佈。當管道平行處理程度為 1 時,TP_GROUP模型平行群組 (MP_GROUP) 相同。

  • 管道平行群組 (PP_GROUP) 是進行管道平行處理的處理程序群組。當張量平行處理程度為 1 時,PP_GROUPMP_GROUP 相同。

  • 縮減資料平行群組 (RDP_GROUP) 是一組處理程序,可同時保留相同管道平行處理分割區與相同張量平行分割區,並且彼此執行資料平行處理。這稱為縮減資料平行群組,因其為整個資料平行處理群組 DP_GROUP 的子集。對於分散在 TP_GROUP 內的模型參數,漸層 allreduce 作業僅針對縮減資料平行群組執行,而對於未分散的參數,漸層 allreduce 會在整個 DP_GROUP 進行。

  • 模型平行群組 (MP_GROUP) 是指集體儲存整個模型的處理程序群組。其包括在目前處理程序 TP_GROUP 內所有等級的 PP_GROUP 聯合。當張量平行處理程度為 1 時,MP_GROUP 等同於 PP_GROUP。它也與先前 smdistributed 發佈內容 MP_GROUP 的現有定義一致。請注意,目前 TP_GROUP 是目前 DP_GROUP 與目前 MP_GROUP 的子集。

若要進一步了解 SageMaker 模型平行程序程式庫中的通訊程序 API,請參閱 SageMaker Python SDK 文件中的通用 API 和PyTorch特定 API。

This figure shows ranking mechanism, parameter distribution, and associated AllReduce operations of tensor parallelism.

例如,假設單一節點具 8 個 GPU 的處理程序群組,其中張量平行處理程度為 2,管道平行處理程度為 2,而資料平行處理程度為 4。上圖的上方中心部分顯示具 4 個圖層的模型範例。圖的左下與右下部分說明使用管道平行處理及張量平行處理分散在 4 個 GPU 的 4 層模型,其中張量平行處理用於中間兩層。這兩個下圖是簡便複本,用於說明不同群組範圍線。分割模型會跨 GPU 0-3 與 4-7 進行資料平行處理複寫。左下圖顯示 MP_GROUPPP_GROUPTP_GROUP 的定義。右下圖顯示同一組 GPU 的 RDP_GROUPDP_GROUPWORLD。具相同顏色圖層與圖層配量的漸層會一起 allreduce,以便進行資料平行處理。例如,第一層 (淺藍色) 跨 DP_GROUP 進行 allreduce 作業,而第二層深橘色配量則僅進行其處理程序 RDP_GROUP 內的 allreduce 作業。深紅色粗體箭頭代表具整個 TP_GROUP 批次的張量。

GPU0: pp_rank 0, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 0 GPU1: pp_rank 1, tp_rank 0, rdp_rank 0, dp_rank 0, mp_rank 1 GPU2: pp_rank 0, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 2 GPU3: pp_rank 1, tp_rank 1, rdp_rank 0, dp_rank 1, mp_rank 3 GPU4: pp_rank 0, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 0 GPU5: pp_rank 1, tp_rank 0, rdp_rank 1, dp_rank 2, mp_rank 1 GPU6: pp_rank 0, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 2 GPU7: pp_rank 1, tp_rank 1, rdp_rank 1, dp_rank 3, mp_rank 3

在此範例,管道平行處理是跨 GPU 配對 (0,1);(2,3);(4,5);(6,7) 進行。此外,資料平行處理 (allreduce) 會跨 GPU 0、2、4、6 進行,並透過 GPU 1、3、5、7 獨立進行。張量平行處理發生於 DP_GROUP 子集及跨 GPU 配對 (0,2);(1,3);(4,6);(5,7)。