

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

# SageMaker Training Compiler 常見問題
<a name="training-compiler-faq"></a>

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

請利用下列常見問題項目來針對 SageMaker Training Compiler 的常見問題尋找解答。

**問：如何知道 SageMaker Training Compiler 正在處理中？**

如您已利用 SageMaker Training Compiler 成功啟動訓練工作，您會收到下列記錄訊息：
+ 搭配 `TrainingCompilerConfig(debug=False)`

  ```
  Found configuration for Training Compiler
  Configuring SM Training Compiler...
  ```
+ 搭配 `TrainingCompilerConfig(debug=True)`

  ```
  Found configuration for Training Compiler
  Configuring SM Training Compiler...
  Training Compiler set to debug mode
  ```

**問：SageMaker Training Compiler 會加速哪些模型？**

SageMaker Training Compiler 支援 Hugging Face 轉換器程式庫最熱門的深度學習模型。對於編譯器支援的多數運算子，可利用 SageMaker Training Compiler 加快訓練這些模型。可編譯模型包括但不限於下列項目：`bert-base-cased`、`bert-base-chinese`、`bert-base-uncased`、`distilbert-base-uncased`、`distilbert-base-uncased-finetuned-sst-2-english`、`gpt2`、`roberta-base`、`roberta-large`、`t5-base`、`xlm-roberta-base`。此編譯器可與多數 DL 運算子與資料結構搭配使用，且除已經過測試的模型外，可加速許多其他 DL 模型。

**問：如採用未經測試的模型來啟用 SageMaker Training Compiler，會發生什麼情況？**

對於未測試的模型，您可能需要先修改訓練指令碼，以便相容 SageMaker Training Compiler。如需詳細資訊，請參閱[使用自有深度學習模型](training-compiler-modify-scripts.md)，並參閱如何準備訓練指令碼，然後遵循其指示。

在更新訓練指令碼之後，即可開始訓練工作。編譯器會繼續編譯模型。然而，訓練速度可能不會增加，甚至可能會相對於未測試模型的基準降低。您可能需要重新調整訓練參數 (例如 `batch_size`、`learning_rate`)，以便達到任何加速效益。

如未測試模型編譯失敗，編譯器會傳回錯誤。如需失敗類型與錯誤訊息的詳細資訊，請參閱[SageMaker Training Compiler 疑難排解](training-compiler-troubleshooting.md)。

**問：運用 SageMaker Training Compiler 是否總是可加快訓練工作？**

不，不一定。首先，在加速正在進行的訓練程序之前，SageMaker Training Compiler 會增加部分編譯額外負荷。最佳化的訓練工作必須執行足夠長的時間，才能攤銷並彌補初期訓練工作的增量編譯額外負荷。

此外，與任何模型訓練程序一樣，若採用非最佳化參數進行訓練可能增加訓練時間。例如，SageMaker Training Compiler 可透過變更工作記憶體用量來變更訓練工作的特性。由於這些差異，您可能需要重新調整訓練工作參數以利加速訓練。請參閱參考表格 [測試過的模型](training-compiler-support.md#training-compiler-tested-models)，針對不同執行個體類型與模型的訓練工作找到指定的最佳效能參數。

最後，訓練指令碼的部分程式碼可能增加額外負荷，或中斷編譯的運算圖形，導致訓練速度緩慢。如使用自訂或未測試模型，請參閱[將 SageMaker Training Compiler 與 PyTorch/XLA 搭配使用的最佳實務](training-compiler-pytorch-models.md#training-compiler-pytorch-models-best-practices)的指示。

**問：若運用 SageMaker Training Compiler 是否一律可使用較大批次大小？**

在多數 (但非全部) 情況，批次大小會增加。SageMaker Training Compiler 所做的最佳化可變更訓練工作的特性，例如記憶體用量。一般而言，相較於使用原生架構的未編譯訓練工作，Training Compiler 工作所佔用的記憶體較少，因此在訓練期間可允許較大批次大小。較大批次大小，加上對學習速率進行相應調整，可增加訓練輸送量，並減少總訓練時間。

然而，在部分情況，SageMaker Training Compiler 實際上可能根據最佳化方案增加記憶體用量。編譯器會使用分析成本模型，針對任何運算密集型運算子，以最低執行成本預測執行排程。此模型可能找到最佳排程，但會增加記憶體用量。在這種情況，您將無法增加批次大小，但範例輸送量仍會較高。

**問：SageMaker Training Compiler 可否與其他 SageMaker 訓練功能搭配使用，例如 SageMaker AI 分散式訓練程式庫與 SageMaker Debugger？**

SageMaker Training Compiler 目前不相容 SageMaker AI 分散式訓練程式庫。

SageMaker Training Compiler 相容 SageMaker Debugger，但 Debugger 可能增加額外負荷並降低運算效能。

**問：SageMaker Training Compiler 是否支援自訂容器 (自有容器)？**

SageMaker Training Compiler 是透過 AWS 深度學習容器提供，您可以擴展容器的子集，以針對您的使用案例進行自訂。SageMaker Training Compiler 支援從 AWS DLCs 延伸的容器。如需詳細資訊，請參閱[支援的架構](https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler-support.html#training-compiler-supported-frameworks)與 [使用 SageMaker AI Python SDK 和衍伸 SageMaker AI 架構深度學習容器](training-compiler-enable-tensorflow.md#training-compiler-enable-tensorflow-sdk-extend-container)。如需進一步支援，請透過 [AWS 支援](https://console.aws.amazon.com/support/)或 [Amazon SageMaker AI 的AWS 開發人員論壇](https://forums.aws.amazon.com/forum.jspa?forumID=285)與 SageMaker AI 團隊聯絡。