

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

# 擴展訓練
<a name="distributed-training-scenarios"></a>

下列各節涵蓋您可能想要擴展訓練的案例，以及如何使用 AWS 資源進行擴展。您可能想要在下列其中一種情況下擴展訓練：
+ 從單一 GPU 擴展至多個 GPU
+ 從單一執行個體擴展至多個執行個體
+ 使用自訂訓練指令碼

## 從單一 GPU 擴展至多個 GPU
<a name="scaling-from-one-GPU"></a>

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


|  執行個體類型  |  GPU  | 
| --- | --- | 
|  p3.2xlarge  |  1  | 
|  p3.8xlarge  |  4  | 
|  p3.16xlarge  |  8  | 
|  p3dn.24xlarge  |  8  | 

**注意**  
SageMaker 訓練所使用的 ml 執行個體類型與對應的 p3 執行個體類型具有相同的 GPU 數量。例如，`ml.p3.8xlarge` 的 GPU 數目與 `p3.8xlarge` -4 相同。

## 從單一執行個體擴展至多個執行個體
<a name="scaling-from-one-instance"></a>

如果您想要進一步擴展訓練規模，可以使用更多執行個體。不過，您應該先選擇較大的執行個體類型，然後再新增更多執行個體。請參閱上表，了解每個 p3 執行個體類型有多少 GPU。

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

當您準備好擴展執行個體數目時，您可以透過設定 `instance_count` 使用 SageMaker AI Python SDK `estimator` 函式來實現此目的。例如，您可以建立 `instance_type = p3.16xlarge` 與 `instance_count = 2`。您可以在兩個相同的執行個體擁有 16 個 GPU，而不是單一 `p3.16xlarge` 的 8 個 GPU。下圖顯示了[擴展功能及輸送量，從單一執行個體的 8 個 GPU 開始，](https://aws.amazon.com/blogs/machine-learning/scalable-multi-node-training-with-tensorflow/)逐漸增加到 64 個執行個體，總共 256 個 GPU。

 ![Chart showing how throughput increases and time to train decreases with more GPUs.](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/distributed/Distributed-Training-in-SageMaker-image.png) 

## 自訂訓練指令碼
<a name="custom-training-scripts"></a>

雖然 SageMaker AI 可以輕鬆部署和擴展執行個體及 GPU 的數量，但視您選擇的架構而定，管理資料與結果可能非常具有挑戰性，這也是經常使用外部支援程式庫的原因。這種最基本的分散式訓練形式需要修改訓練指令碼以管理資料分散。

SageMaker AI 也支援 Horovod 以及每個主要深度學習架構原生的分散式訓練實作。如果您選擇使用這些架構的範例，可以遵循 SageMaker AI 適用於 Deep Learning Containers 的[容器指南](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html)，以及示範實作的各種[範例筆記本](https://sagemaker-examples.readthedocs.io/en/latest/training/bring_your_own_container.html)。