本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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-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 訓練編譯器,會發生什麼情況?
對於未測試的模型,您可能需要先修改訓練指令碼,以便與 SageMaker 訓練編譯器相容。如需詳細資訊,請參閱使用自有深度學習模型,並參閱如何準備訓練指令碼,然後遵循其指示。
在更新訓練指令碼之後,即可開始訓練工作。編譯器會繼續編譯模型。然而,訓練速度可能不會增加,甚至可能會相對於未測試模型的基準降低。您可能需要重新調整訓練參數 (例如 batch_size
、learning_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 支援