本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 SageMaker AI 和 Hydra 簡化從本機開發到可擴展實驗的機器學習工作流程
由 David Sauerwein (AWS)、Julian Ferdinand Grueber (AWS) 和 Marco Geiger (AWS) 建立
Summary
此模式提供統一的方法,用於設定和執行從本機測試到 Amazon SageMaker AI 生產的機器學習 (ML) 演算法。ML 演算法是此模式的重點,但其方法延伸到特徵工程、推論和整個 ML 管道。此模式示範透過範例使用案例,從本機指令碼開發轉換至 SageMaker AI 訓練任務。
典型的 ML 工作流程是在本機機器上開發和測試解決方案、在雲端執行大規模實驗 (例如,使用不同的參數),以及在雲端部署已核准的解決方案。然後,必須監控和維護部署的解決方案。如果沒有統一的工作流程方法,開發人員通常需要在每個階段重構程式碼。如果解決方案依賴於在此工作流程的任何階段可能變更的大量參數,則保持組織和一致性可能會變得越來越困難。
此模式可解決這些挑戰。首先,它提供統一的工作流程,無論在本機機器、容器或 SageMaker AI 上執行,都不需要在環境之間進行程式碼重構。其次,它透過 Hydra 的組態系統簡化參數管理,其中參數是在個別的組態檔案中定義,可輕鬆修改和結合,並自動記錄每個執行的組態。如需此模式如何處理這些挑戰的詳細資訊,請參閱其他資訊。
先決條件和限制
先決條件
限制
此程式碼目前僅鎖定 SageMaker AI 訓練任務。將其擴展到處理任務和整個 SageMaker AI 管道非常簡單。
若要進行完全生產的 SageMaker AI 設定,必須備妥其他詳細資訊。範例可以是用於運算和儲存的自訂 AWS Key Management Service (AWS KMS) 金鑰,或聯網組態。您也可以在
config
資料夾的專用子資料夾中使用 hydra 來設定這些額外的選項。有些 AWS 服務 不適用於所有 AWS 區域。如需區域可用性,請參閱AWS 依區域的服務
。如需特定端點,請參閱服務端點和配額,然後選擇服務的連結。
架構
下圖說明解決方案的架構。

該圖顯示以下工作流程:
資料科學家可以在本機環境中以小規模反覆運算演算法、調整參數,以及快速測試訓練指令碼,而不需要 Docker 或 SageMaker AI。(如需詳細資訊,請參閱《Epics》中的「在本機執行以進行快速測試」任務。)
滿足演算法後,資料科學家會建置 Docker 映像並將其推送至名為 的 Amazon Elastic Container Registry (Amazon ECR) 儲存庫
hydra-sm-artifact
。(如需詳細資訊,請參閱《Epics》中的「在 SageMaker AI 上執行工作流程」。)資料科學家使用 Python 指令碼啟動 SageMaker AI 訓練任務或超參數最佳化 (HPO) 任務。對於一般訓練任務,調整後的組態會寫入名為 的 Amazon Simple Storage Service (Amazon S3) 儲存貯體
hydra-sample-config
。對於 HPO 任務,會套用位於config
資料夾中的預設組態設定。SageMaker AI 訓練任務會提取 Docker 映像、從 Amazon S3 儲存貯體 讀取輸入資料
hydra-sample-data
,以及從 Amazon S3 儲存貯體擷取組態hydra-sample-config
或使用預設組態。訓練後,任務會將輸出資料儲存至 Amazon S3 儲存貯體hydra-sample-data
。
自動化和擴展
對於自動訓練、重新訓練或推論,您可以將 AWS CLI 程式碼與 AWS Lambda、 AWS CodePipeline或 Amazon EventBridge 等服務整合。
可以透過變更執行個體大小的組態或新增分散式訓練的組態來實現擴展。
工具
AWS 服務
AWS CloudFormation 可協助您設定 AWS 資源、快速且一致地佈建資源,以及在整個 AWS 帳戶 和 生命週期中管理資源 AWS 區域。
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您 AWS 服務 透過命令列 shell 中的命令與 互動。對於此模式, AWS CLI 適用於初始資源組態和測試。
Amazon Elastic Container Registry (Amazon ECR) 是一種受管容器映像登錄服務,安全、可擴展且可靠。
Amazon SageMaker AI 是一種受管機器學習 (ML) 服務,可協助您建置和訓練 ML 模型,然後將模型部署到生產就緒的託管環境中。SageMaker AI Training 是 SageMaker AI 內的全受管 ML 服務,可大規模訓練 ML 模型。該工具可以有效地處理訓練模型的運算需求,利用內建的可擴展性和與其他模型的整合 AWS 服務。SageMaker AI Training 也支援自訂演算法和容器,使其適用於各種 ML 工作流程。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
其他工具
程式碼儲存庫
此模式的程式碼可在 GitHub configuring-sagemaker-training-jobs-with-hydra
最佳實務
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
建立並啟用虛擬環境。 | 若要建立和啟用虛擬環境,請在儲存庫的根目錄中執行下列命令:
| 一般 AWS |
部署 基礎設施。 | 若要使用 CloudFormation 部署基礎設施,請執行下列命令:
| 一般 AWS,DevOps 工程師 |
下載範例資料。 | 若要將輸入資料從 openml
| 一般 AWS |
在本機執行 以進行快速測試。 | 若要在本機執行訓練程式碼進行測試,請執行下列命令:
所有執行的日誌會依執行時間儲存在名為 的資料夾中 您也可以使用 | 資料科學家 |
任務 | 描述 | 所需的技能 |
---|---|---|
設定環境變數。 | 若要在 SageMaker AI 上執行任務,請設定下列環境變數,並提供您的 AWS 區域 和 AWS 帳戶 ID:
| 一般 AWS |
建立並推送 Docker 映像。 | 若要建立 Docker 映像並將其推送至 Amazon ECR 儲存庫,請執行下列命令:
此任務假設您在環境中擁有有效的登入資料。Docker 映像會推送至先前任務中環境變數中指定的 Amazon ECR 儲存庫,並用於啟用訓練任務將在其中執行的 SageMaker AI 容器。 | ML 工程師,一般 AWS |
將輸入資料複製到 Amazon S3。 | SageMaker AI 訓練任務需要接收輸入資料。若要將輸入資料複製到 Amazon S3 儲存貯體以取得資料,請執行下列命令:
| 資料工程師,一般 AWS |
提交 SageMaker AI 訓練任務。 | 若要簡化指令碼的執行,請在
| 一般 AWS、ML 工程師、資料科學家 |
執行 SageMaker AI 超參數調校。 | 執行 SageMaker AI 超參數調校類似於提交 SageMaker AII 訓練任務。不過,執行指令碼在一些重要方面有所不同,如您在 start_sagemaker_hpo_job.py 若要啟動超參數最佳化 (HPO) 任務,請執行下列命令:
| 資料科學家 |
故障診斷
問題 | 解決方案 |
---|---|
權杖過期 | 匯出新的 AWS 登入資料。 |
缺少 IAM 許可 | 請務必匯出具備所有必要 IAM 許可的 IAM 角色憑證,以部署 CloudFormation 範本並啟動 SageMaker AI 訓練任務。 |
相關資源
使用 Amazon SageMaker AI 訓練模型 (AWS 文件)
其他資訊
此模式可解決下列挑戰:
從本機開發到大規模部署的一致性 – 透過此模式,開發人員可以使用相同的工作流程,無論他們是使用本機 Python 指令碼、執行本機 Docker 容器、在 SageMaker AI 上執行大型實驗,還是在 SageMaker AI 上於生產環境中部署。由於下列原因,此一致性很重要:
更快速的反覆運算 – 它允許快速的本機實驗,而不需要在擴展時進行重大調整。
不重構 – 在 SageMaker AI 上轉換到更大的實驗是無縫的,不需要對現有設定進行大修。
持續改進 – 開發新功能並持續改進演算法非常簡單,因為程式碼在環境中保持不變。
組態管理 – 此模式使用組態管理工具 hydra
參數是在組態檔案中定義,與程式碼分開。
不同的參數集可以輕鬆交換或組合。
實驗追蹤會簡化,因為每個執行的組態都會自動記錄。
雲端實驗可以使用與本機執行相同的組態結構,以確保一致性。
使用 Hydra,您可以有效管理組態,啟用下列功能:
分割組態 – 將您的專案組態分成可獨立修改的較小、可管理的部分。這種方法可讓您更輕鬆地處理複雜的專案。
輕鬆調整預設值 – 快速變更基準組態,讓您更輕鬆地測試新想法。
對齊 CLI 輸入和組態檔案 – 順暢地將命令列輸入與您的組態檔案合併。這種方法可以減少雜亂和混淆,讓您的專案隨著時間更易於管理。