本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 存儲庫
包含您可以自定義的 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 偵測到模型部署程式碼的變更時開始。
總而言之,這些步驟會引導您完成下列任務:
-
建立您 AWS 和 GitHub 帳戶之間的連接。
-
建立 Jenkins 帳戶並匯入所需的外掛程式。
-
創建詹金斯IAM用戶和權限策略。
-
設置詹金斯服務器上詹金斯IAM用戶的 AWS 憑據。
-
創建一個API令牌與您的詹金斯服務器進行通信。
-
使用 CloudFormation 範本來設定 EventBridge 規則,以監視新核准模型的模型登錄。
-
創建 SageMaker 項目,該項目使用模型構建和部署代碼為 GitHub 存儲庫種子。
-
使用模型建置種子程式碼建立 Jenkins 模型建置管道。
-
使用模型部署種子程式碼建立 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。
部落格文章使用 Amazon SageMaker 和 Salesforce 資料雲端整合,透過 AI/ML 為您的 Salesforce 應用程式提供
選取 Salesforce 的模型部署專案範本,並提供密碼管理員名稱。
複製存放庫以使用可自訂 SageMaker的範例筆記本和模型部署程式碼。
使用 Data Wrangler 預先處理您的資料。
建立與 Salesforce 資料雲端的連線,然後將資料匯入 Data Wrangler。
使用 Data Wrangler 來準備具有一些轉換範例的資料。
啟動處理工作以使用 Data Wrangler 組態來處理資料。
訓練模型。
在模型登錄檔中登錄模型。
在模型登錄檔中核准模型。
在 SageMaker 主控台中檢視您的端點。
調用APIURL從 Salesforce 愛因斯坦工作室註冊和使用愛因斯坦工作室的模型推論。
下圖更詳細地顯示了與 Salesforce 數據雲集成 SageMaker 項目模板使用的工作流程和 AWS 資源。
更新 SageMaker 專案以使用第三方 Git 儲存庫
附加至 AmazonSageMakerServiceCatalogProductsUseRole
角色的受管政策已於 2021 年 7 月 27 日更新,以便與第三方 Git 範本搭配使用。在此日期之後加入 Amazon SageMaker 工作室 (或工作室經典版) 並啟用專案範本的使用者使用新政策。在此日期之前加入的使用者必須更新政策才能使用這些範本。使用下列其中一項來更新政策:
-
刪除角色並切換工作室(或工作室經典)設置
-
在IAM主控台中,刪除
AmazonSageMakerServiceCatalogProductsUseRole
。 -
在「工作室」(或「工作室傳統版」) 控制台中,選擇「編輯設定」。
-
切換兩個設定,然後選擇提交。
-
-
在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-*" ] }