擴展訓練 - Amazon SageMaker

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

擴展訓練

下列各節涵蓋您可能想要擴展訓練的案例,以及如何使用 AWS 資源進行擴展。您可能想要在下列其中一個情況下擴展訓練:

  • 從單一擴展GPU到許多 GPUs

  • 從單一執行個體擴展至多個執行個體

  • 使用自訂訓練指令碼

從單一擴展GPU到許多 GPUs

機器學習使用的資料量或模型大小可能會導致訓練模型的時間比您願意等待的時間更長。有時,訓練根本沒有作用,因為模型或訓練資料太大。一個解決方案是增加GPUs您用於訓練的數目。在具有多個 的執行個體上GPUs,例如具有八個 p3.16xlarge的 GPUs,資料和處理會分割到八個 GPUs。當您使用分散式訓練程式庫時,這可能會導致訓練模型所需的時間近乎線性的加速。使用p3.2xlarge一個 需要稍微超過 1/8 的時間GPU。

執行個體類型 GPUs
p3.2xlarge 1
p3.8xlarge 4
p3.16xlarge 8
p3dn.24xlarge 8
注意

SageMaker 訓練所使用的 ml 執行個體類型,其數量與對應的 p3 GPUs 執行個體類型相同。例如, ml.p3.8xlarge 的 數目與 p3.8xlarge - 4 GPUs相同。

從單一執行個體擴展至多個執行個體

如果您想要進一步擴展訓練規模,可以使用更多執行個體。不過,您應該先選擇較大的執行個體類型,然後再新增更多執行個體。檢閱上一個資料表,以查看每個 p3 執行個體類型GPUs有多少。

如果您已在 GPU 上從單一 躍升p3.2xlarge至四個 GPUs p3.8xlarge,但決定您需要更多的處理能力,則如果您在嘗試增加執行個體計數p3.16xlarge之前選擇 ,可能會看到更好的效能並產生更低的成本。視您使用的程式庫而定,當您在單一執行個體進行訓練時,與使用多個執行個體的情況相比,效能更好、成本更低。

當您準備好擴展執行個體數量時,可以透過設定 來使用 SageMaker Python SDKestimator函數執行此操作instance_count。例如,您可以建立 instance_type = p3.16xlargeinstance_count = 2。與單一 GPUs上的八個不同p3.16xlarge,您在兩個相同的執行個體GPUs之間有 16 個。下列圖表顯示擴展和輸送量,從單一執行個體GPUs上的八個 開始,增加到 64 個執行個體,總共 256 個 GPUs。

Chart showing how throughput increases and time to train decreases with more GPUs.

自訂訓練指令碼

雖然 SageMaker 可讓您輕鬆地部署和擴展執行個體和 的數量GPUs,但根據您的所選架構,管理資料和結果可能非常困難,這就是為什麼經常使用外部支援程式庫的原因。這種最基本的分散式訓練形式需要修改訓練指令碼來管理資料分佈。

SageMaker 也支援 Horovod 和實作每個主要深度學習架構原生的分散式訓練。如果您選擇使用這些架構的範例,您可以遵循 SageMaker的深度學習容器指南,以及示範實作的各種範例筆記本