使用 SageMaker AI 提供的專案範本 - Amazon SageMaker AI

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

使用 SageMaker AI 提供的專案範本

重要

截至 2024 年 10 月 28 日, AWS CodeCommit 範本已移除。對於新專案,請從使用第三方 Git 儲存庫的可用專案範本中選取 。

Amazon SageMaker AI 提供專案範本,可建立您需要的基礎設施,以建立 ML 模型的持續整合和持續部署 (CI/CD) MLOps解決方案。使用這些範本來處理資料、擷取功能、訓練和測試模型、在模型登錄檔中註冊 SageMaker 模型,以及部署模型以進行推論。您可以根據自己的需求自訂種子程式碼和組態檔。

注意

使用專案範本需要其他角色。如需必要角色的完整清單以及有關如何建立這些角色的指示,請參閱授予使用專案所需的 SageMaker Studio 許可。如果您沒有新的角色,當您嘗試建立新專案且無法繼續時,您會收到CodePipeline 未獲授權執行角色 arn:aws:iam::xxx: AssumeRole 的role/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineRole錯誤訊息。

SageMaker AI 專案範本提供下列程式碼儲存庫、工作流程自動化工具和管道階段的選擇:

  • 程式碼儲存庫:第三方 Git 儲存庫,例如 GitHub 和 Bitbucket

  • CI/CD 工作流程自動化: AWS CodePipeline 或 Jenkins

  • 管道階段:模型建置和訓練、模型部署或兩者兼有

下列討論提供您在建立 SageMaker AI 專案時可以選擇的每個範本的概觀。您也可以依照建立專案演練,在 Studio (或 Studio Classic) 中檢視可用的範本。

如需有關 step-by-step如何建立真實專案的說明,您可以遵循其中一個專案演練:

主題
    • 代碼儲存庫:第三方 Git。

      注意

      建立從 AWS 您的帳戶到 GitHub 使用者或組織的 AWS CodeStar 連線。將具有金鑰sagemaker和值的標籤true新增至此 AWS CodeStar 連線。

    • CI/CD 工作流程自動化: AWS CodePipeline

    模型建置和訓練

    此範本提供以下資源:

    • 與一個客戶指定的 Git 儲存庫建立關聯。儲存庫包含在 Python 程式碼中建立 Amazon SageMaker AI 管道的範例程式碼,並說明如何建立和更新 SageMaker AI 管道。此儲存庫也有範例 Python 筆記本,您可以在 Studio (或 Studio Classic) 中開啟和執行。

    • 具有來源和建置步驟的 AWS CodePipeline 管道。來源步驟指向第三方 Git 儲存庫。建置步驟會從該儲存庫取得程式碼、建立和更新 SageMaker AI 管道、啟動管道執行,並等待管道執行完成。

    • 將種子程式碼資訊填入 Git 儲存庫的 AWS CodeBuild 專案。這需要從您的 AWS CodeStar 連線到 Git 儲存庫主機上的 AWS 帳戶 帳戶。

    • Amazon S3 儲存貯體,用於存放成品,包括 CodePipeline 和 CodeBuild 成品,以及從 SageMaker AI 管道執行產生的任何成品。

    模型部署

    此範本提供以下資源:

    • 與一個客戶指定的 Git 儲存庫建立關聯。儲存庫包含範例程式碼,可將模型部署到預備和生產環境中的端點。

    • 具有來源 deploy-to-staging、建置和 deploy-to-production步驟的 AWS CodePipeline 管道。來源步驟指向第三方 Git 儲存庫,而建置步驟會從該儲存庫取得程式碼,並產生要部署的 AWS CloudFormation 堆疊。 deploy-to-staging 和 deploy-to-production 步驟會將 AWS CloudFormation 堆疊部署到其各自的環境。預備和生產建置步驟之間有手動核准步驟,因此MLOps工程師必須先核准模型,才能部署到生產環境。

    • 將種子程式碼資訊填入 Git 儲存庫的 AWS CodeBuild 專案。這需要從您的 AWS CodeStar 連線到 Git 儲存庫主機上的 AWS 帳戶 帳戶。

    • Amazon S3 儲存貯體,用於存放成品,包括 CodePipeline 和 CodeBuild 成品,以及從 SageMaker AI 管道執行產生的任何成品。

    模型建置、訓練和部署

    此範本提供以下資源:

    • 與一或多個客戶指定的 Git 儲存庫建立關聯。

    • 具有來源 deploy-to-staging、建置和 deploy-to-production步驟的 AWS CodePipeline 管道。來源步驟指向第三方 Git 儲存庫,而建置步驟會從該儲存庫取得程式碼, CloudFormation並產生要部署的堆疊。 deploy-to-staging 和 deploy-to-production 步驟會將 CloudFormation 堆疊部署到其各自的環境。預備和生產建置步驟之間有手動核准步驟,因此MLOps工程師必須先核准模型,才能部署到生產環境。

    • 將種子程式碼資訊填入 Git 儲存庫的 AWS CodeBuild 專案。這需要 AWS CodeStar 從 AWS 您的帳戶連線到 Git 儲存庫主機上的 帳戶。

    • Amazon S3 儲存貯體,用於存放成品,包括 CodePipeline 和 CodeBuild 成品,以及從 SageMaker AI 管道執行產生的任何成品。

    如前所述,請參閱使用第三方 Git 儲存庫的專案演練,以取得使用此範本建立真實專案的示範。

    • 代碼儲存庫:第三方 Git。

      注意

      建立從 AWS 您的帳戶到 GitHub 使用者或組織的 AWS CodeStar 連線。將具有金鑰sagemaker和值的標籤true新增至此 AWS CodeStar 連線。

    • CI/CD 工作流程自動化: AWS CodePipeline

    下列範本包含額外的 Amazon SageMaker Model Monitor 範本,可提供下列類型的監控:

    模型建置、訓練、部署和 Amazon SageMaker Model Monitor

    此範本是使用 Git 儲存庫進行模型建置、訓練和部署的MLOps範本延伸 CodePipeline。它包含範本的模型建置、訓練和部署元件,以及提供下列監控類型的額外 Amazon SageMaker Model Monitor 範本:

    監控部署的模型

    您可以使用此範本做為MLOps解決方案,部署一或多個 Amazon SageMaker AI 資料品質、模型品質、模型偏差和模型可解釋性監控器,以監控 SageMaker AI 推論端點上部署的模型。此範本提供以下資源:

    • 與一或多個客戶指定的 Git 儲存庫建立關聯。儲存庫包含 Python 程式碼範例,這些程式碼會從 Amazon SageMaker Model Registry 取得監視器使用的基準,並更新範本的預備和生產環境參數。它也包含範本 AWS CloudFormation 來建立 Amazon SageMaker Model Monitors。

    • 具有來源、建置和部署步驟的 AWS CodePipeline 管道。來源步驟指向 CodePipeline 儲存庫。建置步驟會從該儲存庫取得程式碼、從模型註冊表取得基準,並更新暫存和生產環境的範本參數。部署步驟會將設定的監視器部署到暫存和生產環境中。在DeployStaging階段內的手動核准步驟需要您確認生產 SageMaker AI 端點是否在核准和移至DeployProd階段InService之前。

    • 將種子程式碼資訊填入 Git 儲存庫的 AWS CodeBuild 專案。這需要從您的 AWS CodeStar 連線到 Git 儲存庫主機上的 AWS 帳戶 帳戶。

    • 範本使用MLOps範本建立、訓練和部署的相同 Amazon S3 儲存貯體,以存放監視器的輸出。

    • 每次更新預備 SageMaker AI 端點 AWS CodePipeline 時,兩個 Amazon EventBridge 事件規則都會啟動 Amazon SageMaker Model Monitor。

    • 代碼儲存庫:第三方 Git。

      注意

      建立從 AWS 您的帳戶到 GitHub 使用者或組織的 AWS CodeStar 連線。將具有金鑰sagemaker和值的標籤true新增至此 AWS CodeStar 連線。

    • CI/CD 工作流程自動化:Jenkins

    模型建置、訓練和部署

    此範本提供以下資源:

    • 與一或多個客戶指定的 Git 儲存庫建立關聯。

    • 產生具有來源、建置 deploy-to-staging、 和 deploy-to-production 步驟的 Jenkins 管道的種子程式碼。來源步驟會指向客戶指定的 Git 儲存庫。建置步驟會從該儲存庫取得程式碼,並產生兩個 CloudFormation 堆疊。部署步驟會將 CloudFormation 堆疊部署到其各自的環境。預備步驟與生產步驟之間有核准步驟。

    • 將種子程式碼資訊填入 Git 儲存庫的 AWS CodeBuild 專案。這需要 AWS CodeStar 從 AWS 您的帳戶連線到 Git 儲存庫主機上的 帳戶。

    • Amazon S3 儲存貯體,用於存放 SageMaker AI 專案和 SageMaker AI 管道的成品。

    範本會在您的專案與來源控制儲存庫之間建立關聯,但您需要執行額外的手動步驟,以在 AWS 您的帳戶與 Jenkins 之間建立通訊。如需詳細步驟,請參閱使用第三方來源控制和 Jenkins 建立 Amazon SageMaker 專案

    這些指示可協助您建置下圖所示的架構,在此範例中使用 GitHub 做為來源控制儲存庫。如圖所示,您正在將 Git 儲存庫附加至專案以簽入和管理程式碼版本。當 Jenkins 在 Git 儲存庫中偵測到模型建置程式碼的變更時,會啟動模型建置管道。您也會將專案連線至 Jenkins,以協調模型部署步驟,這些步驟會在您核准在模型登錄檔中登錄的模型時開始,或在 Jenkins 偵測到模型部署程式碼的變更時開始。

    使用專案範本建置的管道工作流程。

    總而言之,這些步驟會引導您完成下列任務:

    1. 建立 AWS 和 GitHub 帳戶之間的連線。

    2. 建立 Jenkins 帳戶並匯入所需的外掛程式。

    3. 建立 Jenkins IAM使用者和許可政策。

    4. 在 Jenkins 伺服器上設定 Jenkins IAM使用者的 AWS 登入資料。

    5. 建立權API杖以與您的 Jenkins 伺服器通訊。

    6. 使用 CloudFormation 範本來設定 EventBridge 規則,以監控新核准模型的模型登錄檔。

    7. 建立 SageMaker AI 專案,此專案會使用模型建置和部署程式碼植入您的 GitHub 儲存庫。

    8. 使用模型建置種子程式碼建立 Jenkins 模型建置管道。

    9. 使用模型部署種子程式碼建立 Jenkins 模型部署管道。

    此範本是 MLOps 使用 與第三方 Git 建立、訓練和部署模型的範本 CodePipeline 的延伸。它包括該範本的模型建置、訓練和部署元件,以及下列選項:

    • 包括處理映像 - 建立管道

    • 包括訓練映像 - 建立管道

    • 包含推論映像 - 建置管道

    對於在建立專案期間選取的每個元件,可使用範本建立下列項目:

    • Amazon ECR儲存庫

    • SageMaker AI 映像

    • 包含您可以自訂之 Dockerfile 的 CodeCommit 儲存庫

    • 由儲存 CodePipeline 庫變更所 CodePipeline 啟動的

    • 建置 Docker 映像並在 Amazon ECR儲存庫中註冊的 CodeBuild 專案

    • CodePipeline 依排程啟動 的 EventBridge 規則

    啟動 CodePipeline 時,它會建立新的 Docker 容器,並將其註冊至 Amazon ECR儲存庫。當新的容器向 Amazon ECR儲存庫註冊時,新的 ImageVersion 會新增至 SageMaker AI 映像。這會啟動模型建置管道,進而啟動部署管道。

    如果適用,新建立的映像將用於工作流程的模型建置、訓練和部署部分。

    附加至 AmazonSageMakerServiceCatalogProductsUseRole 角色的受管政策已於 2021 年 7 月 27 日更新,以便與第三方 Git 範本搭配使用。在此日期之後加入 Amazon SageMaker Studio (或 Studio Classic) 並啟用專案範本的使用者會使用新的政策。在此日期之前加入的使用者必須更新政策才能使用這些範本。使用下列其中一項來更新政策:

    • 刪除角色並切換 Studio (或 Studio Classic) 設定

      1. 在 IAM主控台中,刪除 AmazonSageMakerServiceCatalogProductsUseRole

      2. 在 Studio (或 Studio Classic) 控制面板中,選擇編輯設定

      3. 切換兩個設定,然後選擇提交

    • 在 IAM主控台中,將下列許可新增至 AmazonSageMakerServiceCatalogProductsUseRole

      { "Effect": "Allow", "Action": [ "codestar-connections:UseConnection" ], "Resource": "arn:aws:codestar-connections:*:*:connection/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/sagemaker": "true" } } }, { "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::sagemaker-*" ] }