本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立自訂 Docker 容器映像 for SageMaker ,並將其用於 AWS Step Functions 中的模型訓練
由 Julia Bluszcz (AWS)、Neha Sharma (AWS)、Aubrey Oosthuizen (AWS)、Mohan Gowda Purushothama (AWS) 和 Mateusz Zaremba (AWS) 建立
環境:生產 | 技術:機器學習和 AI; DevOps | AWS 服務:Amazon ECR;Amazon SageMaker;AWS Step Functions |
Summary
此模式說明如何為 Amazon SageMaker 建立 Docker 容器映像,並將其用於 AWS Step Functions 中的訓練模型。透過在容器中封裝自訂演算法,您可以在 SageMaker 環境中執行幾乎任何程式碼,無論程式設計語言、架構或相依性為何。
在提供的 SageMaker 筆記本範例中,自訂 Docker 容器映像儲存在 Amazon Elastic Container Registry (Amazon ECR) 中。然後,Step Functions 會使用存放在 Amazon ECR 中的容器來執行 Python 處理指令碼 for SageMaker。然後,容器將模型匯出至 Amazon Simple Storage Service (Amazon S3)。
先決條件和限制
先決條件
作用中的 AWS 帳戶
具有 Amazon S3Amazon S3 許可的 AWS 的 SageMaker Identity and Access Management (IAM) 角色
熟悉 Python
熟悉 Amazon SageMaker Python SDK
熟悉 AWS Command Line Interface (AWS CLI)
熟悉 Python SDK的 AWS (Boto3)
熟悉 Amazon ECR
熟悉 Docker
產品版本
AWS Step Functions 資料科學 SDK 2.3.0 版
Amazon SageMaker Python SDK 2.78.0 版
架構
下圖顯示建立 Docker 容器映像 for SageMaker 的範例工作流程,然後在 Step Functions 中將其用於訓練模型:
該圖顯示以下工作流程:
資料科學家或 DevOps 工程師使用 Amazon SageMaker 筆記本來建立自訂 Docker 容器映像。
資料科學家或 DevOps 工程師會將 Docker 容器映像存放在私有登錄檔中的 Amazon ECR 私有儲存庫中。
資料科學家或 DevOps 工程師使用 Docker 容器在 Step Functions 工作流程中執行 Python SageMaker 處理任務。
自動化和擴展
此模式中的範例 SageMaker 筆記本使用ml.m5.xlarge
筆記本執行個體類型。您可以變更執行個體類型以符合您的使用案例。如需 SageMaker 筆記本執行個體類型的詳細資訊,請參閱 Amazon SageMaker 定價
工具
Amazon Elastic Container Registry (Amazon ECR) 是安全、可擴展且可靠的受管容器映像登錄服務。
Amazon SageMaker 是一項受管機器學習 (ML) 服務,可協助您建置和訓練 ML 模型,然後將模型部署到生產就緒的託管環境中。
Amazon SageMaker Python SDK
是一個開放原始碼程式庫,用於訓練和部署機器學習模型 on SageMaker。 AWS Step Functions 是一種無伺服器協調服務,可協助您結合 AWS Lambda 函數和其他 AWS 服務來建置業務關鍵型應用程式。
AWS Step Functions 資料科學 Python SDK
是一個開放原始碼程式庫,可協助您建立 Step Functions 工作流程,以處理和發佈機器學習模型。
Epics
任務 | 描述 | 所需的技能 |
---|---|---|
設定 Amazon ECR 並建立新的私有登錄檔。 | 如果您尚未設定 Amazon ECR,請遵循 Amazon Word 使用者指南中的使用 Amazon ECR 設定 中的指示來設定 Amazon Word。 ECR 每個 AWS 帳戶都會提供預設的私有 Amazon ECR 登錄檔。 | DevOps 工程師 |
建立 Amazon ECR 私有儲存庫。 | 請遵循 Amazon ECR 使用者指南中建立私有儲存庫的指示。 注意:您建立的儲存庫是您存放自訂 Docker 容器映像的位置。 | DevOps 工程師 |
建立 Dockerfile,其中包含執行 SageMaker 處理任務所需的規格。 | 建立 Dockerfile,其中包含透過設定 Dockerfile 執行您的 SageMaker 處理任務所需的規格。如需指示,請參閱 Amazon SageMaker 開發人員指南中的調整您自己的訓練容器。 如需 Dockerfiles 的詳細資訊,請參閱 Docker 文件中的 Dockerfile 參考 建立 Dockerfile 的 Jupyter 筆記本程式碼儲存格範例 儲存格 1
儲存格 2
| DevOps 工程師 |
建置 Docker 容器映像並將其推送至 Amazon ECR。 |
如需詳細資訊,請參閱在在 onWord 上建置您自己的演算法容器中建置和註冊 建置和註冊 Docker 映像的 Jupyter 筆記本程式碼儲存格範例 重要事項:在執行下列儲存格之前,請確定您已建立 Dockerfile,並將其存放在名為 的目錄中 儲存格 1
儲存格 2
儲存格 3
儲存格 4
注意:您必須向私有登錄檔驗證 Docker 用戶端,才能使用 | DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
建立 Python 指令碼,其中包含您的自訂處理和模型訓練邏輯。 | 撰寫要在資料處理指令碼中執行的自訂處理邏輯。然後,將其儲存為名為 的 Python 指令碼 如需詳細資訊,請參閱使用 SageMaker Script 模式 onWord 自帶模型 包含自訂處理和模型訓練邏輯的 Python 指令碼範例
| 資料科學家 |
建立 Step Functions 工作流程,其中包含您的 SageMaker 處理任務作為其中一個步驟。 | 安裝和匯入 AWS Step Functions 資料科學 SDK, 重要:請確定您已在 IAM 帳戶中為 Step Functions 建立 Word 執行角色 要上傳至 Amazon S3 的環境設定和自訂訓練指令碼範例
使用自訂 Amazon Word 映像和 Python 指令碼的 ExampleECR SageMaker 處理步驟定義 注意:請確定您使用
執行 a SageMaker 處理任務的 Step Functions 工作流程範例 注意:此範例工作流程僅包含 SageMaker 處理任務步驟,而非完整的步驟函數工作流程。如需完整的工作流程範例,請參閱 SageMaker Step Functions Data Science Word 文件中的 inWord 筆記本範例
| 資料科學家 |
相關資源
程序資料 (Amazon SageMaker 開發人員指南)
調整您自己的訓練容器 (Amazon SageMaker 開發人員指南)