SageMaker 訓練編譯器 FAQ - Amazon SageMaker

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

SageMaker 訓練編譯器 FAQ

重要

Amazon Web Services(AWS)宣布將不會有新版本或 SageMaker 培訓編譯器版本。您可以透過現有的 AWS Deep Learning Containers (DLCs) 繼續使用 SageMaker 訓練編譯器進行 SageMaker 訓練。請務必注意,儘管現有的DLCs保持可存取,但根據 AWS Deep Learning Containers 架構 Support 政策 AWS,它們將不再從中接收修補程式或更新。

使用下列FAQ項目來尋找有關「 SageMaker 訓練編譯器」的常見問題解答。

問:如何知道 SageMaker 訓練編譯器正在運作?

如果您使用訓練編譯器成功啟動 SageMaker 訓練工作,您會收到下列記錄訊息:

  • 搭配 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 訓練編譯器會加速哪些模型?

SageMaker 訓練編譯器支援 Hugging Face 變壓器庫中最受歡迎的深度學習模型。與大多數的編譯器支持的運算符,這些模型可以 SageMaker 訓練與訓練編譯器更快。可編譯模型包括但不限於下列項目:bert-base-casedbert-base-chinesebert-base-uncaseddistilbert-base-uncaseddistilbert-base-uncased-finetuned-sst-2-englishgpt2roberta-baseroberta-larget5-basexlm-roberta-base。此編譯器可與多數 DL 運算子與資料結構搭配使用,且除已經過測試的模型外,可加速許多其他 DL 模型。

問:如果我使用未經測試的模型啟用 SageMaker 訓練編譯器,會發生什麼情況?

對於未測試的模型,您可能需要先修改訓練指令碼,以便與 SageMaker 訓練編譯器相容。如需詳細資訊,請參閱使用自有深度學習模型,並參閱如何準備訓練指令碼,然後遵循其指示。

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

如未測試模型編譯失敗,編譯器會傳回錯誤。如需失敗類型與錯誤訊息的詳細資訊,請參閱SageMaker 訓練編譯器疑難

問:使用訓練編譯器,我是否一定能獲得更快的 SageMaker 訓練工作?

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

此外,與任何模型訓練程序一樣,使用次優參數進行訓練可能會增加訓練時間。 SageMaker 訓練編譯器可以變更訓練工作的特性,例如,變更工作的記憶體佔用量。由於這些差異,您可能需要重新調整訓練工作參數以利加速訓練。請參閱參考表格 測試模型模型,針對不同執行個體類型與模型的訓練工作找到指定的最佳效能參數。

最後,訓練指令碼的部分程式碼可能增加額外負荷,或中斷編譯的運算圖形,導致訓練速度緩慢。如使用自訂或未測試模型,請參閱搭配 PyTorch /XLA 使用 SageMaker 訓練編譯器的最佳作法的指示。

問: SageMaker 訓練編譯器是否可以一律使用較大的批次大小?

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

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

問: SageMaker 訓練編譯器是否可與其他 SageMaker 訓練功能搭配使用,例如 SageMaker 分散式訓練程式庫和 SageMaker 偵錯工具?

SageMaker 訓練編譯器目前與 SageMaker分散式訓練程式庫不相容。

SageMaker 培訓編譯器與 SageMaker 調試器兼容,但調試器可能會通過添加開銷降低計算性能。

問: SageMaker 訓練編譯器是否支援自訂容器 (攜帶自己的容器)?

SageMaker 訓練編譯器是透過 AWS Deep Learning Containers 提供,您可以擴充容器的子集,以針對您的使用案例進行自訂。 SageMaker 訓練編譯器支援擴充來源 AWS DLCs的容器。如需詳細資訊,請參閱支援的架構使用 SageMaker Python SDK 和擴充 SageMaker 架構 Deep Learning Containers。如果您需要進一步的 Support,請透過 Amazon 的AWS 支援或AWS 開發人員論壇與 SageMaker 團隊聯絡 SageMaker。