Azure Machine Learning 的分散式定型

在本文中,您將了解分散式訓練,以及 Azure Machine Learning 如何支援分散式訓練來建立深度學習模型。

在分散式定型中,要定型模型的工作負載會分割並共用多個迷你處理器,稱為背景工作節點。 這些背景工作節點平行運作以加速模型訓練。 分散式定型可用於傳統機器學習模型,但更適合用於計算和密集時間的工作,例如 深度學習 來定型深度神經網路。

深度學習和分散式訓練

分散式訓練有兩個主要類型:資料平行處理模型平行處理。 針對深度學習模型的分散式定型,Python 中的 Azure 機器學習 SDK 支援與 PyTorch 和 TensorFlow 的整合。 兩者都是熱門架構,採用數據平行處理原則進行分散式定型,而且可以使用 Horovod 將計算速度優化。

如需不需要分散式定型的機器學習模型,請參閱使用 Azure 機器學習 將模型定型,以取得使用 Python SDK 來定型模型的不同方式。

資料平行處理原則

資料平行處理是實作兩種分散式訓練方法中最簡單的方式,且足以用於大部分的使用案例。

在此方法中,資料會分割成分割區,而分割區數目等於計算叢集或無伺服器計算中可用節點的總數。 模型會在每個背景工作節點中複製,而每個節點都會在其本身的數據子集上運作。 請記住,每個節點都必須有容量來支援正在定型的模型,也就是說,整個模型必須符合每個節點。

下圖顯示此方法。

數據同位主義圖表,顯示複製到背景工作節點的模型。

每個節點都會個別計算其訓練範例的預測和已標記輸出之間的誤差。 接著,每個節點都會根據誤差來更新其模型,而且必須將其所有變更傳達給其他節點,以更新其對應的模型。 背景工作節點必須在批次計算結束時同步處理模型參數或漸層,以確保它們正在定型 consis 帳篷模式 l。

模型平行處理

在模型平行處理原則,也稱為網路平行處理原則中,模型會分割成可在不同節點中並行執行的不同部分,而且每個元件都會在相同的數據上執行。 此方法的延展性取決於演算法的工作平行化程度,而且實作比數據平行處理原則更複雜。

在模型平行處理中,背景工作節點只需要同步共用參數,通常是針對每個向前或向後傳播步驟進行一次同步。 此外,較大的模型也不會有問題,因為每個節點都是在相同訓練資料的模型子區段上運作。