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

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

使用 SageMaker提供的專案範本

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

重要

自 2022 年 7 月 25 日起,我們需要額外角色才能使用專案範本。如需必要角色的完整清單以及有關如何建立這些角色的指示,請參閱SageMaker 使用專案所需的工作室權限。如果您沒有新角色,當您嘗試創建新項目並且無法 AssumeRole 繼續時,您將收到錯誤消息CodePipeline 無法對角色 arn: awn: iam:: xxx: role/服務角色/ AmazonSageMakerServiceCatalogProductsCodePipelineRole 執行

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

  • 代碼存儲庫: AWS CodeCommit 或第三方 Git 存儲庫,如 GitHub 和比特桶

  • CI/CD 工作流程自動化: AWS CodePipeline 或詹金斯

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

下面的討論提供了您在創建 SageMaker 項目時可以選擇的每個模板的概述。您也可以按照以下步驟 1:建立專案步解說的專案,檢視 Studio (或 Studio 傳統版) 中的可用範本。

有 step-by-step 關如何創建真實項目的說明,您可以按照其中一個項目逐步解說:

MLOps模型建立、訓練和部署的範本

此範本是以下兩個範本的組合,每個範本都可以獨立使用,並包含這些範本中提供的所有資源。

  • 代碼存儲庫: AWS CodeCommit

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

MLOps模型建立和訓練的樣板

當您想要MLOps解決方案來處理資料、擷取特徵、訓練和測試模型,以及在模型登錄中註冊 SageMaker 模型時,請使用此範本。

此範本提供以下資源:

  • 包含以 Python 程式碼建立 Amazon SageMaker 管道的範例程式碼的 AWS CodeCommit 儲存庫,並顯示如何建立和更新 SageMaker 管道。這個存儲庫還有一個示例 Python 筆記本,您可以在工作室(或工作室經典)中打開和運行。

  • 具有來源和建置步驟的 AWS CodePipeline 管線。來源步驟會指向 CodeCommit 儲存庫。構建步驟從該存儲庫獲取代碼,創建和更新 SageMaker 管道,啟動管道執行,並等待管道執行完成。

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

下圖說明此範本用來協助您建置和訓練模型的工作流程和 AWS 資源。

使用專案範本建立模型和訓練所建置的管線工作流程。
MLOps模型部署的範本

使用此範本可將 SageMaker 模型登錄中的模型部署到 SageMaker 端點,以進行即時推論。此範本會識別模型註冊表中的變更。註冊並核准新模型版本後,它會自動啟動部署。

範本會佈建包含組態檔的 CodeCommit 存放庫,以指定模型部署步驟、將端點定義為基礎結構的 AWS CloudFormation 範本,以及用於測試端點的種子程式碼。

此範本提供以下資源:

  • 包含將模型部署到測試環境和生產環境中端點的範例程式碼的 AWS CodeCommit 存放庫。

  • 具有來源、組建和 deploy-to-production 步驟的 AWS CodePipeline 管線。 deploy-to-staging源步驟指向 CodeCommit 存儲庫,並且構建步驟從該存儲庫獲取代碼並生成要部署的 CloudFormation 堆棧。 deploy-to-staging 和 deploy-to-production 步驟會將 CloudFormation 堆疊部署到各自的環境。測試階段和生產建置步驟之間有一個手動核准步驟,因此MLOps工程師必須先核准模型,才能將模型部署到生產環境。

    CodeCommit 儲存庫中的範例程式碼中也有一個程式化核准步驟,其中包含預留位置測試。您可以新增其他測試來取代預留位置測試。

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

  • 核准或拒絕模型封裝版本時,用來啟動管線的 CloudWatch 事件。

下圖說明此範本用來協助您部署模型的工作流程和 AWS 資源。

使用用於模型部署的專案範本建置的管線工作流程。

如前所述,請參閱專案演練,以取得使用此範本建立真實專案的示範。

MLOps模型建立、訓練、部署和 Amazon SageMaker 模型監視器的範本

此範本是模型建置、訓練和部署MLOps範本的延伸。它包括範本的模型建置、訓練和部署元件,以及提供下列監控類 SageMaker 型的其他 Amazon Model Monitor 範本:

  • 代碼存儲庫: AWS CodeCommit

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

MLOpsAmazon SageMaker 模型監視器的模板

您可以將此範本用於解MLOps決方案,以部署一或多個 Amazon SageMaker 資料品質、模型品質、模型偏差和模型說明監視器,以便在 SageMaker 推論端點上監控已部署的模型。

此範本提供以下資源:

  • 包含範例 Python 程式碼的 AWS CodeCommit 存放庫,可從 SageMaker 模型登錄取得監視器使用的基準,並更新測試和生產環境的範本參數。它還包含用於創建 Amazon SageMaker 模型監視器的模 AWS CloudFormation 板。

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

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

  • 每次更新暫存 SageMaker 端點或將程式碼變更提交至 CodePipeline儲存庫時, AWS CodePipeline 都會啟動兩個 Amazon EventBridge 事件規則會啟動 Amazon SageMaker 模型監視器。

MLOps影像建置、模型建置和模型部署的範本

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

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

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

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

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

  • Amazon ECR 存儲庫

  • 一個 SageMaker圖像

  • 包含您可以自定義的 Docker 文件的 CodeCommit 存儲庫

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

  • 一個構 CodeBuild 建 Docker 映像並將其註冊到 Amazon ECR 存儲庫中的項目

  • 根據 EventBridge 排程起始 CodePipeline 的規則

啟動 CodePipeline 時,它會構建一個新的 Docker 容器並將其註冊到 Amazon ECR 存儲庫中。在 Amazon ECR 儲存庫中註冊新容器時,會在 SageMaker 映像中新增ImageVersion一個新容器。這會啟動模型建置管道,進而啟動部署管道。

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

MLOps使用第三方 Git 儲存庫進行模型建置、訓練和部署的範本 CodePipeline

  • 代碼儲存庫:第三方 Git。建立從您的 AWS 帳戶到您的 GitHub 使用者或組織的 AWS CodeStar 連線。將含有索引鍵 sagemaker 和值 true 的標籤新增至此 AWS CodeStar 連線。

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

此範本提供以下資源:

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

  • 具有來源、組建和 deploy-to-production 步驟的 AWS CodePipeline 管線。 deploy-to-staging原始碼步驟會指向協力廠商 Git 儲存庫,而建置步驟會從該儲存庫取得程式碼,並產生要部署的 CloudFormation 堆疊。 deploy-to-staging 和 deploy-to-production 步驟會將 CloudFormation堆疊部署到各自的環境。測試階段和生產建置步驟之間有一個手動核准步驟,因此MLOps工程師必須先核准模型,才能將模型部署到生產環境。

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

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

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

MLOps使用 Jenkins 使用第三方 Git 儲存庫進行模型建置、訓練和部署的範本

  • 代碼儲存庫:第三方 Git。建立從您的 AWS 帳戶到您的 GitHub 使用者或組織的 AWS CodeStar 連線。將含有鍵 sagemaker 和值 true 的標籤新增至此 AWS CodeStar 連線。

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

此範本提供以下資源:

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

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

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

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

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

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

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

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

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

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

  3. 創建詹金斯IAM用戶和權限策略。

  4. 設置詹金斯服務器上詹金斯IAM用戶的 AWS 憑據。

  5. 創建一個API令牌與您的詹金斯服務器進行通信。

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

  7. 創建 SageMaker 項目,該項目使用模型構建和部署代碼為 GitHub 存儲庫種子。

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

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

Salesforce 的模型部署

  • 代碼存儲庫: AWS CodeCommit

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

此範本提供以下資源:

  • 包含使用 Python 程式碼建立 Amazon SageMaker 管道的範例程式碼的 AWS CodeCommit 儲存庫,並顯示如何建立和更新管道。此存儲庫還有一個 Python Jupyter 筆記本,您可以在工作室(或工作室經典)中打開和運行。

  • 具有來源和建置步驟的 AWS CodePipeline 管線。來源步驟會指向 CodeCommit 儲存庫。構建步驟從存儲庫獲取代碼,創建和更新 SageMaker 管道,啟動管道運行,並等待管道運行完成。

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

您的管理員可能需要執行其他設定,才能從 Salesforce 資料雲端存取至 SageMaker Studio 的資料,以建置 AI/ML 模型。請參閱部落格文章中的解決方案概觀使用 Amazon SageMaker 和 Salesforce 資料雲端整合,透過 AI/ML 為您的 Salesforce 應用程式提供支援,以取得詳細資訊和指示

下圖會說明此範本用來協助您建置和訓練模型的高階工作流程。在您設定 Salesforce 資料雲端與 Data Wrangler 之間的連線並預先處理資料之後,請使用 Salesforce 的模型部署專案範本自動化模型訓練和部署。範本提供可自訂的模型部署程式碼和範例筆記本, AWS CodePipeline 以訓練您的模型並將其註冊到 SageMaker 模型登錄中。一旦您核准模型,端點就會以API透過API閘道的形式向 Salesforce 公開,客戶可以從 Salesforce 內部開始使用已部署的模型進行預測。

注意

此範本允許API閘道安裝程式的傳輸層安全性 (TLS) 原則版本 1.0 和 1.1 版。您可以使用自訂網域名稱讓此組態更安全。如需詳細資訊,請參閱設定的自訂網域名稱RESTAPIs

Salesforce 專案範本使用步驟的簡化圖表。

部落格文章使用 Amazon SageMaker 和 Salesforce 資料雲端整合,透過 AI/ML 為您的 Salesforce 應用程式提供支援,提供詳細指示,引導您完成下列步驟:

  1. 選取 Salesforce 的模型部署專案範本,並提供密碼管理員名稱。

  2. 複製存放庫以使用可自訂 SageMaker的範例筆記本和模型部署程式碼。

  3. 使用 Data Wrangler 預先處理您的資料。

    1. 建立與 Salesforce 資料雲端的連線,然後將資料匯入 Data Wrangler。

    2. 使用 Data Wrangler 來準備具有一些轉換範例的資料。

    3. 啟動處理工作以使用 Data Wrangler 組態來處理資料。

  4. 訓練模型。

  5. 在模型登錄檔中登錄模型。

  6. 在模型登錄檔中核准模型。

  7. 在 SageMaker 主控台中檢視您的端點。

  8. 調用APIURL從 Salesforce 愛因斯坦工作室註冊和使用愛因斯坦工作室的模型推論。

下圖更詳細地顯示了與 Salesforce 數據雲集成 SageMaker 項目模板使用的工作流程和 AWS 資源。

Salesforce 專案範本使用步驟和資源的圖表。

更新 SageMaker 專案以使用第三方 Git 儲存庫

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

  • 刪除角色並切換工作室(或工作室經典)設置

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

    2. 在「工作室」(或「工作室傳統版」) 控制台中,選擇「編輯設定」。

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