訓練機器學習模型 - Amazon SageMaker

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

訓練機器學習模型

完整機器學習 (ML) 生命週期的訓練階段如下:存取訓練資料集、產生最終模型,以及選取效能最佳的部署模型。以下各節提供可用 SageMaker 訓練功能和資源的概觀,並提供各項功能的深入技術資訊。

SageMaker 培訓的基本架構

如果您是第一次使 SageMaker 用,並且想要找到快速的 ML 解決方案來訓練資料集上的模型,請考慮使用無程式碼或低程式碼解決方案,例如 SageMaker CanvasJumpStart SageMaker Studio Classic 或 SageMaker Autopilot。

對於中級編碼體驗,請考慮使用 SageMaker Studio 經典筆記本或SageMaker 筆記本執行個體。若要開始使用,請依照 SageMaker 入門指南中步驟 4:訓練模型的指示進行。針對此使用案例,建議您採用機器學習 (ML) 架構建立自己的模型和訓練指令碼。

任 SageMaker 務的核心是機器學習工作負載的容器化,以及管理運算資源的能力。 SageMaker 訓練平台負責設定和管理機器學習訓練工作負載基礎結構相關的繁重工作。透過 SageMaker 訓練,您可以專注於開發、訓練和微調模型。

下列架構圖顯示如何代表 SageMaker 使用者 SageMaker 管理 ML 訓練任務和佈建 Amazon EC2 執行個體。身為 SageMaker 使用者的您可以攜帶自己的訓練資料集,並將其儲存到 Amazon S3。您可以從可用的 SageMaker 內建演算法中選擇機器學習模型訓練,或是使用熱門機器學習架構建立的模型,使用自己的訓練指令碼。

使用者如何提供資料和選擇演算法和 SageMaker 佈建運算基礎結構。

SageMaker 訓練工作流程和功能的完整檢視

整趟機器學習 (ML) 訓練旅程涵蓋範圍極廣,不只侷限於資料擷取至 ML 模型、運算執行個體上的訓練模型,以及取得模型成品和輸出。請務必評估訓練前、中、後的各個階段,以確保您的模型受到良好的訓練,才能符合理想的目標準確度。

下列流程圖顯示您在 ML 生命週期訓練階段中的動作 (以藍色方塊顯示) 和可用 SageMaker 訓練功能 (以淺藍色方塊顯示) 的高階概觀。

ML 訓練工作流程的每個步驟所使用的建議步驟和功能的流程圖。

以下幾節將引導您完成先前流程圖中描述的每個訓練階段,以及在 ML 訓練的三 SageMaker 個子階段中提供的實用功能。

訓練之前

展開訓練之前,建議您多多思考幾個設定資料資源和存取權的情況。請參閱以下圖表和每個訓練前階段的詳細資訊,以釐清您需要做出哪些決定。

流程圖顯示培訓前的任務和相關 SageMaker功能

訓練期間

在訓練期間,您需要持續改善訓練的穩定性、訓練速度、訓練效率,並擴展運算資源、成本最佳化,同時還有最重要的模型效能。請繼續閱讀,瞭解有關期間訓練階段和相關 SageMaker 訓練功能的詳細資訊。

顯示訓練期間工作和相關 SageMaker功能的流程圖
  • 設定基礎設施:為您的使用案例選擇合適的執行個體類型和基礎設施管理工具。不妨從小型執行個體開始,再根據工作負載縱向擴展。若要在表格式資料集上訓練模型,請從 C4 或 C5 CPU 執行個體系列的最小執行個體開始。若要訓練大型模型以進行電腦視覺或自然語言處理,請從 P2、P3、G4dn 或 G5 GPU 執行個體系列的最小執行個體開始。您也可以在叢集中混合不同的執行個體類型,或使用下列提供的執行個體管理工具將執行個體保留在暖集區中 SageMaker。或者也能使用持久性快取來減少反覆訓練任務的延遲和應計費時間,只需透過暖集區減少延遲即可。如需進一步了解,請參閱下列主題。

    您必須有足夠的配額才能執行訓練任務。如果在配額不足的執行個體上執行訓練任務,就會收到 ResourceLimitExceeded 的錯誤訊息。若要查看您帳戶中目前可用的配額,請使用 Service Quotas 主控台。想了解如何請求提高配額,請參閱支援的區域與配額。此外,若要尋找定價資訊和可用執行個體類型 AWS 區域,請查看 Amazon SageMaker 定價頁面中的表格。

  • 從本機程式碼執行訓練任務:您可以使用遠端裝飾器為本機程式碼加上註解,從 Amazon SageMaker Studio Classic、Amazon SageMaker 筆記型電腦或本機整合式開發環境中執行程式碼做為 SageMaker 訓練任務。如需詳細資訊,請參閱執行您的本機程式碼做為 SageMaker 訓練工作

  • 追蹤訓練任務:使用 SageMaker 實驗、 SageMaker 偵錯工具或 Amazon 監控和追蹤您的訓練任務 CloudWatch。您可以觀看精確度和收斂性方面的模型效能,並使用「 SageMaker實驗」對多個訓練任務之間的度量執行比較分析。您可以使用 SageMaker 偵錯工具的分析工具或 Amazon 來觀看運算資源使用率 CloudWatch。如需進一步了解,請參閱下列主題。

    此外,對於深度學習任務,請使用 Amazon Innover 模型 SageMaker 偵錯工具內建規則來識別模型整合和權重更新程序中更複雜的問題。

  • 分散式訓練:如果您的訓練工作進入穩定的階段,而不會因為訓練基礎結構或 out-of-memory 問題設定錯誤而中斷,您可能想要找到更多選項來擴展工作,並在長時間內執行數天甚至數月。當您準備好擴展規模時,請考慮分散式訓練。 SageMaker 提供各種分散式運算選項,從輕度 ML 工作負載到繁重的深度學習工作負載。

    對於涉及在非常大型資料集上訓練非常大型模型的深度學習工作,請考慮使用其中一種SageMaker 分散式訓練策略來擴展並達成資料平行處理原則、建模平行程度或兩者的組合。您也可以使用SageMaker 訓練編譯器來編譯和最佳化GPU執行個體上的模型圖形。這些 SageMaker 功能支援深度學習架構,例如 PyTorch TensorFlow、和 Hugging Face 部變形金剛。

  • 模型超參數調整:使用「自動模型微調」功能來調整模型超參數。 SageMaker SageMaker 提供超參數調整方法,例如網格搜尋和貝葉斯搜尋,啟動 parallel 超參數調整工作,具有提前停止功能的非改進超參數調整工作。

  • 使用 Spot 執行個體設定檢查點和節省成本:如果訓練時間不是個大問題,則可考慮使用受管 Spot 執行個體來最佳化模型訓練成本。請注意,您必須啟用 Spot 訓練的檢查點,才能繼續從因為取代 Spot 執行個體而間歇性發生的工作暫停中復原。在非預期的訓練任務終止時,您也可以使用檢查點功能來備份模型。如需進一步了解,請參閱下列主題。

訓練之後

訓練後,您會取得最終的模型成品,以用於模型部署和推論。另有參與訓練後階段的其他動作,如下圖所示。

流程圖顯示訓練後的任務和相關 SageMaker功能
  • 取得基準模型:取得模型成品後,可將其設定為基準模型。在繼續進行模型部署到生產環境之前,請考慮下列訓練後的動作和使用 SageMaker 功能。

  • 檢查模型效能並檢查偏差:使用 Amazon CloudWatch 指標和SageMaker 釐清訓練後的偏差,以偵測傳入資料和模型隨著時間的推移與基準的任何偏差。您必須定期或即時評估新資料,並針對新資料進行模型預測。使用這些功能,即可接收有關任何急性變更或異常,以及資料和模型中逐漸出現的變更或漂移之警示。

  • 您也可以使用的增量訓練功能, SageMaker 以展開的資料集載入和更新模型 (或微調)。

  • 您可以將模型訓練註冊為 SageMakerPipeline 中的一個步驟,或作為其他工作流程功能 SageMaker 的一部分,以協調完整的 ML 生命週期。