模型訓練 - Amazon SageMaker

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

模型訓練

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

SageMaker 訓練的基本架構

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

對於中繼編碼體驗,請考慮使用 SageMaker Studio Classic 筆記本SageMaker 筆記本執行個體 。若要開始使用,請遵循 SageMaker 入門指南訓練模型中的指示。針對此使用案例,建議您採用機器學習 (ML) 架構建立自己的模型和訓練指令碼。

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

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

使用者提供資料並選擇演算法和 SageMaker 佈建運算基礎設施的方式。

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

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

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

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

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

訓練之前

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

顯示訓練前任務和相關 SageMaker功能的流程圖
  • 準備資料:在訓練之前,您必須在資料準備階段完成資料清理和特徵工程。 SageMaker 具有數個標籤和特徵工程工具,可協助您。請參閱標示資料準備和分析資料集處理資料以及建立、儲存和共用功能,以了解詳情。

  • 選擇演算法或架構:根據您所需的自訂程度,我們提供了不同的演算法和架構選項。

  • 管理資料儲存:了解資料儲存體 (例如 Amazon S3EFS、Amazon 或 Amazon FSx) 與在 Amazon EC2運算執行個體中執行的訓練容器之間的映射。 SageMaker 有助於映射訓練容器中的儲存路徑和本機路徑。您也可以手動指定路徑。映射完成後,請考慮使用其中一種資料傳輸模式:檔案、管道和 FastFile 模式。若要了解如何 SageMaker映射儲存路徑,請參閱訓練儲存資料夾

  • 設定訓練資料的存取權:使用 Amazon SageMaker 網域、網域使用者設定檔、VPC、IAMAmazon 和 AWS KMS ,以滿足最安全敏感組織的需求。

  • 串流您的輸入資料: SageMaker 提供三種資料輸入模式:檔案 管道 FastFile。預設的輸入模式為檔案模式,本身會在初始化訓練任務期間載入整個資料集。若要了解將資料從資料儲存串流至訓練容器的一般最佳實務,請參閱存取訓練資料

    管道模式中,您也可以考慮使用擴增的資訊清單檔案,直接從 Amazon Simple Storage Service (Amazon S3) 串流資料並訓練您的模型。使用管道模式可減少磁碟空間,因為 Amazon Elastic Block Store 只需儲存最終模型成品,無須儲存完整的訓練資料集。如需更多資訊,請參閱向具有擴增資訊清單檔案的訓練任務提供資料集中繼資料

  • 分析資料的偏差:在訓練之前,您可以分析資料集和模型,以針對偏頗的群組進行偏差分析,以便檢查模型是否使用 SageMaker Clarify 學習到無偏差的資料集。

  • 選擇要使用哪個 SageMaker SDK:有兩種方式可在 中啟動訓練任務 SageMaker:使用高階 SageMaker Python SDK,或使用SDK適用於 Python (Boto3) 的低階 SageMaker APIs 或 AWS CLI。 SageMaker Python SDK會摘要低階 SageMaker API ,以提供方便的工具。如上所述 SageMaker 訓練的基本架構,您也可以使用 SageMaker Canvas JumpStart SageMaker Studio ClassicSageMaker Autopilot 來追求無程式碼或最小程式碼選項。

訓練期間

在訓練期間,您需要持續改善訓練的穩定性、訓練速度、訓練效率,並擴展運算資源、成本最佳化,同時還有最重要的模型效能。請繼續閱讀,以取得訓練階段及相關 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 Experiments、 SageMaker Debugger 或 Amazon 監控和追蹤您的訓練任務 CloudWatch。您可以在準確度和收斂方面觀察模型效能,並使用 Experiments 在多個訓練任務 SageMaker之間執行指標比較分析。您可以使用 SageMaker Debugger 的分析工具或 Amazon 來查看運算資源使用率 CloudWatch。如需進一步了解,請參閱下列主題。

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

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

    對於涉及在非常大型資料集上訓練非常大型模型的深度學習任務,請考慮使用其中一個SageMaker 分散式訓練策略來擴展和實現資料平行處理、模型平行處理或兩者的組合。您也可以使用 SageMaker Training Compiler 在GPU執行個體上編譯和最佳化模型圖表。這些 SageMaker 功能支援深度學習架構,例如 PyTorch TensorFlow、 和 Hugging Face Transformer。

  • 模型超參數調校:使用具有 的自動模型調校 SageMaker來調校模型超參數。 SageMaker 提供超參數調校方法,例如網格搜尋和貝葉斯式搜尋、啟動平行超參數調校任務,以及針對未改善超參數調校任務的提前停止功能。

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

訓練之後

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

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

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

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

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