本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 偵測到模型部署程式碼的變更時開始。
總而言之,這些步驟會引導您完成下列任務:
-
建立 AWS 和 GitHub 帳戶之間的連線。
-
建立 Jenkins 帳戶並匯入所需的外掛程式。
-
建立 Jenkins IAM使用者和許可政策。
-
在 Jenkins 伺服器上設定 Jenkins IAM使用者的 AWS 登入資料。
-
建立權API杖以與您的 Jenkins 伺服器通訊。
-
使用 CloudFormation 範本來設定 EventBridge 規則,以監控新核准模型的模型登錄檔。
-
建立 SageMaker AI 專案,此專案會使用模型建置和部署程式碼植入您的 GitHub 儲存庫。
-
使用模型建置種子程式碼建立 Jenkins 模型建置管道。
-
使用模型部署種子程式碼建立 Jenkins 模型部署管道。
此範本是 MLOps 使用 與第三方 Git 建立、訓練和部署模型的範本 CodePipeline 的延伸。它包括該範本的模型建置、訓練和部署元件,以及下列選項:
-
包括處理映像 - 建立管道
-
包括訓練映像 - 建立管道
-
包含推論映像 - 建置管道
對於在建立專案期間選取的每個元件,可使用範本建立下列項目:
-
Amazon ECR儲存庫
-
包含您可以自訂之 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) 設定
-
在 IAM主控台中,刪除
AmazonSageMakerServiceCatalogProductsUseRole
。 -
在 Studio (或 Studio Classic) 控制面板中,選擇編輯設定。
-
切換兩個設定,然後選擇提交。
-
-
在 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-*" ] }