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

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

使用 SageMaker AI 提供的專案範本

重要

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

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

注意

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

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

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

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

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

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

如需有關如何建立真實專案的逐步指示,您可以遵循其中一個專案演練:

主題
    • 代碼儲存庫:第三方 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 從您的 AWS 帳戶 連線到 Git 儲存庫主機上的 帳戶。

    • 存放成品的 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 專案。這需要在 Git 儲存庫主機上 AWS CodeStar 從 AWS 帳戶 連線到您的帳戶。

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

    模型建置、訓練和部署

    此範本提供以下資源:

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

    • 具有來源、建置、deploy-to-staging和deploy-to-production步驟的 AWS CodePipeline 管道。來源步驟會指向第三方 Git 儲存庫,而建置步驟會從該儲存庫取得程式碼,並產生 CloudFormation 堆疊以進行部署。部署到暫存和部署到生產環境步驟會將 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

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

    監控部署的模型

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

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

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

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

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

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

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

      注意

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

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

    模型建置、訓練和部署

    此範本提供以下資源:

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

    • 產生 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 模型部署管道。

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

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

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

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

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

    • 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-*" ] }