本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
訓練機器學習模型
完整機器學習 (ML) 生命週期的訓練階段如下:存取訓練資料集、產生最終模型,以及選取效能最佳的部署模型。以下各節提供可用 SageMaker 訓練功能和資源的概觀,並提供各項功能的深入技術資訊。
SageMaker 培訓的基本架構
如果您是第一次使 SageMaker 用,並且想要找到快速的 ML 解決方案來訓練資料集上的模型,請考慮使用無程式碼或低程式碼解決方案,例如 SageMaker Canvas、JumpStart SageMaker Studio Classic 或 SageMaker Autopilot。
對於中級編碼體驗,請考慮使用 SageMaker Studio 經典筆記本或SageMaker 筆記本執行個體。若要開始使用,請依照 SageMaker 入門指南中步驟 4:訓練模型的指示進行。針對此使用案例,建議您採用機器學習 (ML) 架構建立自己的模型和訓練指令碼。
任 SageMaker 務的核心是機器學習工作負載的容器化,以及管理運算資源的能力。 SageMaker 訓練平台負責設定和管理機器學習訓練工作負載基礎結構相關的繁重工作。透過 SageMaker 訓練,您可以專注於開發、訓練和微調模型。
下列架構圖顯示如何代表 SageMaker 使用者 SageMaker 管理 ML 訓練任務和佈建 Amazon EC2 執行個體。身為 SageMaker 使用者的您可以攜帶自己的訓練資料集,並將其儲存到 Amazon S3。您可以從可用的 SageMaker 內建演算法中選擇機器學習模型訓練,或是使用熱門機器學習架構建立的模型,使用自己的訓練指令碼。
SageMaker 訓練工作流程和功能的完整檢視
整趟機器學習 (ML) 訓練旅程涵蓋範圍極廣,不只侷限於資料擷取至 ML 模型、運算執行個體上的訓練模型,以及取得模型成品和輸出。請務必評估訓練前、中、後的各個階段,以確保您的模型受到良好的訓練,才能符合理想的目標準確度。
下列流程圖顯示您在 ML 生命週期訓練階段中的動作 (以藍色方塊顯示) 和可用 SageMaker 訓練功能 (以淺藍色方塊顯示) 的高階概觀。
以下幾節將引導您完成先前流程圖中描述的每個訓練階段,以及在 ML 訓練的三 SageMaker 個子階段中提供的實用功能。
訓練之前
展開訓練之前,建議您多多思考幾個設定資料資源和存取權的情況。請參閱以下圖表和每個訓練前階段的詳細資訊,以釐清您需要做出哪些決定。
-
準備資料:在訓練之前,您必須在資料準備階段完成資料清理和功能工程。 SageMaker 有幾個標籤和功能工程工具來幫助您。請參閱標示資料、準備和分析資料集、處理資料以及建立、儲存和共用功能,以了解詳情。
-
選擇演算法或架構:根據您所需的自訂程度,我們提供了不同的演算法和架構選項。
-
如果您偏好預先建置演算法的低程式碼實作,請使用提供的其中一種內建演算法。 SageMaker如需更多資訊,請參閱選擇演算法。
-
如果您需要更多彈性來自訂模型,請使用中 SageMaker偏好的架構和工具組來執行訓練指令碼。如需更多資訊,請參閱機器學習 (ML) 架構與工具組。
-
要將預先構建的 SageMaker Docker 映像擴展為您自己的容器的基本映像,請參閱使用預構建 SageMaker 的 Docker 映像。
-
要將您的自定義 Docker 容器帶入 SageMaker,請參閱調整您自己的 Docker 容器以使用。 SageMaker您需要將其安裝sagemaker-training-toolkit
到容器上。
-
-
管理資料儲存:瞭解資料儲存 (例如 Amazon S3、Amazon 或 Amazon EFSFSx) 與在 Amazon 運EC2算執行個體中執行的訓練容器之間的對應。 SageMaker 協助對應訓練容器中的儲存區路徑和本機路徑。您也可以手動指定路徑。映射完成後,請考慮使用其中一種數據傳輸模式:文件,管道和 FastFile 模式。若要瞭解如何對 SageMaker應儲存區路徑,請參閱訓練儲存資料夾。
-
設定訓練資料的存取權限:使用 Amazon SageMaker 網域、網域使用者設定檔IAM、AmazonVPC, AWS KMS 以滿足組織對安全性最敏感的需求。
-
如需帳戶管理,請參閱 Amazon SageMaker 網域。
-
如需有關IAM政策和安全性的完整參考資料,請參閱 Amazon 中的安全性 SageMaker。
-
-
串流輸入資料: SageMaker 提供三種資料輸入模式:檔案、管道和 FastFile. 預設的輸入模式為檔案模式,本身會在初始化訓練任務期間載入整個資料集。若要了解將資料從資料儲存串流至訓練容器的一般最佳實務,請參閱存取訓練資料。
在管道模式中,您也可以考慮使用擴增的資訊清單檔案,直接從 Amazon Simple Storage Service (Amazon S3) 串流資料並訓練您的模型。使用管道模式可減少磁碟空間,因為 Amazon Elastic Block Store 只需儲存最終模型成品,無須儲存完整的訓練資料集。如需更多資訊,請參閱向具有擴增資訊清單檔案的訓練任務提供資料集中繼資料。
-
分析資料是否有偏見:在訓練之前,您可以分析資料集和模型是否有偏見對於不受歡迎的群組,以便您可以使用 Clearing 檢查模型是否學習公正的資料集。SageMaker
-
選擇 SageMaker SDK要使用的方式:在中啟動訓練工作的方式有兩種 SageMaker:使用高階 SageMaker PythonSDK,或使 SageMaker APIsSDK用 Python (Boto3) 或. AWS CLI SageMaker Python SDK 抽象化了低級別, SageMaker API以提供方便的工具。如前所述 SageMaker 培訓的基本架構,您還可以使用SageMaker 畫布,在 SageMaker Studio 經典版或自動駕駛儀JumpStart 中追求無代碼或最小代碼選項。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 功能。
-
檢查模型效能並檢查偏差:使用 Amazon CloudWatch 指標和SageMaker 釐清訓練後的偏差,以偵測傳入資料和模型隨著時間的推移與基準的任何偏差。您必須定期或即時評估新資料,並針對新資料進行模型預測。使用這些功能,即可接收有關任何急性變更或異常,以及資料和模型中逐漸出現的變更或漂移之警示。
-
您也可以使用的增量訓練功能, SageMaker 以展開的資料集載入和更新模型 (或微調)。
-
您可以將模型訓練註冊為 SageMakerPipeline 中的一個步驟,或作為其他工作流程功能 SageMaker 的一部分,以協調完整的 ML 生命週期。