將自訂的 Docker 映像檔附加到 Amazon SageMaker Studio 領域需要幾個步驟。首先,您需要將映像檔建立並推送到 Amazon Elastic Container Registry (Amazon ECR)。您還需要確保 Amazon SageMaker 領域執行角色擁有從 Amazon ECR 拉取映像檔所需的權限。在將映像檔推送到 Amazon ECR 之後,您需要在 AWS 管理控制台上創建一個 SageMaker 自訂映像檔。最後,您需要更新 SageMaker 領域配置,以指定自訂映像檔的 Amazon 資源名稱 (ARN)。這個多步驟的過程每次當最終用戶創建新的自訂 Docker 映像檔時,都需要手動遵循,以使它們在 SageMaker Studio 中可用。
在這篇文章中,我們將解釋如何自動化這個過程。這種方法允許您更新 SageMaker 配置,而不需要編寫額外的基礎設施代碼,提供自訂映像檔並將它們附加到 SageMaker 領域。通過採用這種自動化,您可以在整個組織中部署一致且標準化的分析環境,從而提高團隊的生產力,並減少使用一次性映像檔所帶來的安全風險。
這篇文章所描述的解決方案是針對機器學習 (ML) 工程師和平台團隊的,他們通常負責在整個組織中管理和標準化自訂環境。對於尋求自助服務體驗的個別數據科學家,我們建議您使用 SageMaker Studio 中的原生 Docker 支持,正如在《加速 ML 工作流程與 Amazon SageMaker Studio 本地模式和 Docker 支持》中所描述的。這個功能允許數據科學家在 SageMaker Studio 集成開發環境 (IDE) 中直接構建、測試和部署自訂 Docker 容器,讓您能夠在熟悉的 SageMaker Studio 界面中無縫地進行逐步實驗。
解決方案概述
以下圖示說明了解決方案架構。
我們使用 AWS CodePipeline 部署一個管道,這個管道自動化了自訂 Docker 映像檔的創建和將映像檔附加到 SageMaker 領域的過程。該管道首先從 GitHub 倉庫檢出代碼基礎,並根據配置文件中聲明的配置創建自訂 Docker 映像檔。在成功創建並推送 Docker 映像檔到 Amazon ECR 之後,管道通過掃描和檢查映像檔中的安全漏洞來驗證映像檔。如果沒有發現關鍵或高安全性漏洞,管道將繼續進入手動批准階段,然後再進行部署。在手動批准完成後,管道將自動部署 SageMaker 領域並附加自訂映像檔。
前置條件
實施本文所述解決方案的前置條件包括:
部署解決方案
完成以下步驟以實施解決方案:
使用 AWS CLI 在終端機中登錄到您的 AWS 帳戶(有關詳細信息,請參見使用短期憑證進行 AWS CLI 認證)。
運行以下命令以確保您已成功登錄到 AWS 帳戶:
將 GitHub 倉庫分支到您的 GitHub 帳戶。
使用以下命令將分支的倉庫克隆到本地工作站:
登錄到控制台並創建一個 AWS CodeStar 連接到前一步中的 GitHub 倉庫。詳細說明請參見創建 GitHub 連接(控制台)。
複製您創建的連接的 ARN。
前往終端機,運行以下命令以進入倉庫目錄:
運行以下命令以從 npm 安裝所有庫:
運行以下命令在終端機中運行 shell 腳本。這個腳本將您的 AWS 帳戶號碼和 AWS 區域作為輸入參數,並部署 AWS CDK 堆疊,該堆疊部署 CodePipeline、AWS CodeBuild、ECR 倉庫等組件。使用現有的 VPC 設置下面的 VPC_ID 輸出變數。如果您沒有 VPC,請創建一個至少有兩個子網的 VPC 並使用它。
運行以下命令以使用 AWS CDK V2 部署 AWS 基礎設施,並確保等待模板成功:
在 CodePipeline 控制台中,選擇導航窗格中的管道。
選擇名為 sagemaker-custom-image-pipeline 的管道的鏈接。
您可以在控制台上跟踪管道的進度,並在手動批准階段提供批准以部署 SageMaker 基礎設施。管道大約需要 5-8 分鐘來構建映像並移動到手動批准階段。
等待管道完成部署階段。
該管道在您的 AWS 帳戶中創建基礎設施資源,包括 SageMaker 領域和 SageMaker 自訂映像檔。它還將自訂映像檔附加到 SageMaker 領域。
在 SageMaker 控制台中,選擇導航窗格中的管理配置下的領域。
打開名為 team-ds 的領域,然後導航到環境。
您應該能夠看到一個附加的自訂映像檔。
如何部署和附加自訂映像檔
CodePipeline 有一個名為 BuildCustomImages 的階段,其中包含使用 SageMaker 自訂映像 CLI 創建 SageMaker 自訂映像檔並將其推送到 AWS 帳戶中創建的 ECR 倉庫的自動化步驟。在部署階段的 AWS CDK 堆疊中,有創建 SageMaker 領域並將自訂映像檔附加到該領域所需的步驟。創建 SageMaker 領域、自訂映像檔等的參數以 JSON 格式配置,並在 lib 目錄下的 SageMaker 堆疊中使用。請參閱 environments/config.json 中的 sagemakerConfig 部分以獲取聲明參數。
添加更多自訂映像檔
現在,您可以添加自己的自訂 Docker 映像檔以附加到管道創建的 SageMaker 領域。對於正在創建的自訂映像檔,請參考 Dockerfile 規範以獲取 Docker 映像檔的規範。
在終端機中進入倉庫的 images 目錄:
在 images 目錄下創建一個新目錄(例如,custom):
將自己的 Dockerfile 添加到此目錄中。為了測試,您可以使用以下 Dockerfile 配置:
更新 environments 目錄下的 json 文件中的 images 部分,以添加您創建的新映像目錄名稱:
在創建的 SageMaker 領域配置中更新自訂映像檔的名稱:
提交並推送更改到 GitHub 倉庫。
您應該會看到在推送後觸發了 CodePipeline。跟踪管道的進度並提供手動批准以進行部署。
成功完成部署後,您應該能夠看到您添加的自訂映像檔已附加到領域配置中(如下圖所示)。
清理
要清理您的資源,請打開 AWS CloudFormation 控制台,並按順序刪除 SagemakerImageStack 和 PipelineStack。如果您遇到“ S3 Bucket 不為空”或“ ECR 倉庫有映像”的錯誤,您可以手動刪除創建的 S3 桶和 ECR 倉庫。然後,您可以重試刪除 CloudFormation 堆疊。
結論
在這篇文章中,我們展示了如何創建自動化的持續集成和交付 (CI/CD) 管道解決方案,以構建、掃描和部署自訂 Docker 映像檔到 SageMaker Studio 領域。您可以使用這個解決方案來促進數據科學團隊在整個企業中的分析環境的一致性。這種方法幫助您實現機器學習 (ML) 的治理、可擴展性和標準化。
關於作者
Muni Annachi 是 AWS 的高級 DevOps 顧問,擁有超過十年的軟體系統和雲平台架構及實施經驗。他專注於指導非營利組織採用 DevOps CI/CD 架構,遵循 AWS 最佳實踐和 AWS Well-Architected Framework。除了專業工作外,Muni 還是一位熱愛運動的愛好者,並嘗試在廚房裡施展廚藝。
Ajay Raghunathan 是 AWS 的機器學習工程師。他目前的工作專注於在大規模上架構和實施 ML 解決方案。他是一位技術愛好者和建設者,對 AI/ML、數據分析、無伺服器和 DevOps 有著核心興趣。工作之餘,他喜歡與家人共度時光、旅行和踢足球。
Arun Dyasani 是 AWS 的高級雲應用架構師。他目前的工作專注於設計和實施創新的軟體解決方案。他的角色集中於為複雜應用程式設計穩健的架構,利用他在開發大規模系統方面的深厚知識和經驗。
Shweta Singh 是 AWS Amazon SageMaker 機器學習平台團隊的高級產品經理,負責 SageMaker Python SDK。她在亞馬遜的多個產品角色工作了超過 5 年。她擁有紐約大學計算機工程學士學位和金融工程碩士學位。
Jenna Eun 是 AWS 專業服務健康和高級計算團隊的首席實踐經理。她的團隊專注於為公共部門設計和交付數據、ML 和高級計算解決方案,包括聯邦、州和地方政府、學術醫療中心、非營利醫療組織和研究機構。
Meenakshi Ponn Shankaran 是 AWS 數據和 ML 專業服務組的首席領域架構師。他在設計和構建大規模數據湖方面擁有豐富的專業知識,處理 PB 級的數據。目前,他專注於為 AWS 美國公共部門客戶提供技術領導,指導他們使用創新的 AWS 服務來實現其戰略目標並發揮數據的全部潛力。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!