

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

# Amazon SageMaker Training Compiler
<a name="training-compiler"></a>

**重要**  
Amazon Web Services (AWS) 宣佈不再推出新版本的 SageMaker Training Compiler。您可以透過現有的 AWS 適用於 SageMaker Training 的深度學習容器 (DLCs)，繼續利用 SageMaker Training Compiler。請務必注意，雖然現有 DLCs仍可存取，但根據深度學習容器架構支援政策 AWS，他們將不再收到來自 的修補程式或更新。 [AWS](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/support-policy.html)

利用 Amazon SageMaker Training Compiler，在由 SageMaker AI 管理的可擴展 GPU 執行個體加速訓練深度學習 (DL) 模型。

## 什麼是 SageMaker Training Compiler？
<a name="training-compiler-what-is"></a>

此為最先進的深度學習 (DL) 模型，由具有數十億個參數的複雜多層神經網路組成，訓練過程可能需要數千個 GPU 小時。若要在訓練基礎架構最佳化此類模型，需要廣泛的 DL 與系統工程知識；即使對於狹窄的使用案例，這也具有挑戰性。儘管可運用開放原始碼實作的編譯器來最佳化 DL 訓練程序，但其可能缺乏整合 DL 架構與部分硬體 (例如 GPU 執行個體) 的彈性。

SageMaker Training Compiler 是 SageMaker AI 的一項功能，可達成這些難以實作的最佳化功能，並減少 GPU 執行個體的訓練時間。此編譯器能以更有效率的方式運用 SageMaker AI 機器學習 (ML) GPU 執行個體來最佳化 DL 模型，進而加速訓練。SageMaker Training Compiler 可在 SageMaker AI 內免費使用，且可加速訓練，進而減少總計費時間。

![如何搭配使用 SageMaker Training Compiler 與 SageMaker AI 的概念圖。](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/training-compiler-marketing-diagram.png)


SageMaker Training Compiler 已整合至 AWS 深度學習容器 (DLCs)。使用啟用 SageMaker Training Compiler AWS DLCs，您可以在對程式碼進行最少變更的情況下，在 GPU 執行個體上編譯和最佳化訓練任務。將您的深度學習模型帶到 SageMaker AI，並讓 SageMaker Training Compiler 加快 SageMaker AI ML 執行個體的訓練任務速度，並加速運算。

## 運作方式
<a name="training-compiler-how-it-works"></a>

SageMaker Training Compiler 會將 DL 模型從高階語言表達式轉換為硬體最佳化指令。具體而言，SageMaker Training Compiler 會套用圖形層級最佳化、資料層級最佳化以及後端最佳化來產生可有效利用硬體資源的最佳化模型。因此，相較於無編譯的訓練情況，您可以加速訓練模型。

若要啟動 SageMaker Training Compiler 來訓練工作，需採取兩個步驟：

1. 使用您自己的 DL 指令碼，並於必要時運用 SageMaker Training Compiler 進行編譯及訓練。如需詳細資訊，請參閱 [使用自有深度學習模型](training-compiler-modify-scripts.md)。

1. 使用 SageMaker Python SDK 來建立具編譯器組態參數的 SageMaker AI 估算器物件。

   1. 新增 `compiler_config=TrainingCompilerConfig()` 至 SageMaker AI 估算器類別即可開啟 SageMaker Training Compiler。

   1. 調整超參數 (`batch_size` 與 `learning_rate`) 以便最大化 SageMaker Training Compiler 所提供的優點。

      透過 SageMaker Training Compiler 進行編譯會變更模型的記憶體用量。最常見的情況為減少記憶體使用率，並因此提高 GPU 可容納的最大批次大小。在部分情況，編譯器會以智慧方式提升快取，因而減少 GPU 可容納的最大批次大小。請注意，如要變更批次大小，您必須適當調整學習速率。

      如需參考資料了解針對熱門模型測試的 `batch_size`，請參閱[測試過的模型](training-compiler-support.md#training-compiler-tested-models)。

      當您調整批次大小時，必須同時適當調整 `learning_rate`。如需最佳實務了解如何調整學習速率及變更批次大小，請參閱[SageMaker Training Compiler 最佳實務和考量事項](training-compiler-tips-pitfalls.md)。

   1. SageMaker AI 會執行 `estimator.fit()` 類別方法來編譯您的模型並開始訓練任務。

   如需如何啟動訓練工作的說明，請參閱[啟用 SageMaker Training Compiler](training-compiler-enable.md)。

SageMaker Training Compiler 不會改變最終訓練模型，同時可讓您以更有效率的方式運用 GPU 記憶體並於每次重複時納入更大的批次大小，進而加速訓練工作。透過編譯器加速訓練工作的最終訓練模型，與一般訓練工作的模型完全相同。

**提示**  
SageMaker Training Compiler 編譯的 DL 模型僅供由 SageMaker AI 管理且[支援的 GPU 執行個體](https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler-support.html#training-compiler-supported-instance-types)進行訓練。若要編譯模型以供推論，並部署在雲端與邊緣的任何位置，請採用 [SageMaker Neo 編譯器](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html)。

**Topics**
+ [什麼是 SageMaker Training Compiler？](#training-compiler-what-is)
+ [運作方式](#training-compiler-how-it-works)
+ [支援的架構 AWS 區域、執行個體類型和已測試的模型](training-compiler-support.md)
+ [使用自有深度學習模型](training-compiler-modify-scripts.md)
+ [啟用 SageMaker Training Compiler](training-compiler-enable.md)
+ [SageMaker Training Compiler 範例筆記本與部落格](training-compiler-examples-and-blogs.md)
+ [SageMaker Training Compiler 最佳實務和考量事項](training-compiler-tips-pitfalls.md)
+ [SageMaker Training Compiler 常見問題](training-compiler-faq.md)
+ [SageMaker Training Compiler 疑難排解](training-compiler-troubleshooting.md)
+ [Amazon SageMaker Training Compiler 版本備註](training-compiler-release-notes.md)