資料科學團隊在將模型從開發環境轉移到生產環境時,經常會面臨一些挑戰。這些挑戰包括將資料科學團隊的模型整合到IT團隊的生產環境中、需要調整資料科學代碼以符合企業的安全和治理標準、獲取生產級數據的需求,以及在機器學習 (ML) 管道中保持可重複性和再現性,這在沒有適當的平台基礎設施和標準化模板的情況下可能會很困難。
這篇文章是「大規模管理ML生命週期」系列的一部分(第一部分、第二部分、第三部分),將解釋如何設置和管理一個多帳戶的ML平台,以解決這些挑戰。該平台為ML團隊提供安全環境的自助服務配置、使用預定義模板加速模型開發、集中模型註冊以促進合作和重用,以及標準化的模型批准和部署流程。
企業在ML生命週期中可能涉及以下角色。每個角色的功能可能因公司而異。在這篇文章中,我們將ML生命週期中的功能分配給每個角色,如下所示:
主要資料科學家 – 為ML開發團隊提供帳戶,管理對帳戶和資源的訪問,並推廣標準化的模型開發和批准流程,以消除重複的工程工作。通常,每個業務單位的資料科學小組會有一位主要資料科學家,例如市場部門。
資料科學家 – 執行數據分析、模型開發、模型評估,並在模型註冊中註冊模型。
ML工程師 – 開發模型部署管道並控制模型部署過程。
治理官 – 審查模型的表現,包括文檔、準確性、偏見和訪問,並提供最終批准以便模型部署。
平台工程師 – 定義符合公司安全、監控和治理標準的開發帳戶的標準化流程;創建模型開發的模板;並管理共享模型工件的基礎設施和機制。
這個ML平台提供了幾個關鍵好處。首先,它使ML生命週期中的每一步都符合組織的安全、監控和治理標準,降低整體風險。其次,該平台賦予資料科學團隊創建帳戶、配置ML資源和根據需要訪問ML資源的自主權,減少了經常阻礙他們工作的資源限制。
此外,該平台自動化了ML生命週期中許多重複的手動步驟,讓資料科學家可以將時間和精力專注於構建ML模型和從數據中發現見解,而不是管理基礎設施。集中式模型註冊還促進了團隊之間的合作,增強了對整個組織開發的模型的可見性,並減少了重複工作。
最後,該平台標準化了業務利益相關者審查和使用模型的流程,促進了資料科學團隊和業務團隊之間的合作。這確保了模型可以快速測試、批准並部署到生產中,為組織帶來價值。
總的來說,這種對大規模管理ML生命週期的整體方法在安全性、靈活性、效率和跨功能對齊方面提供了顯著的好處。
在接下來的部分中,我們將概述多帳戶ML平台以及不同角色如何協作以擴展MLOps。
解決方案概述
以下架構圖說明了多帳戶ML平台的解決方案以及不同角色在此平台中的協作方式。
圖中顯示了五個帳戶:
ML共享服務帳戶 – 這是平台的中央樞紐。該帳戶管理設置新ML開發帳戶的模板,以及AWS服務目錄中的SageMaker項目模板,用於模型開發和部署。它還托管一個模型註冊,以存儲資料科學團隊開發的ML模型,並提供一個單一位置來批准模型的部署。
ML開發帳戶 – 這是資料科學家進行工作的地方。在這個帳戶中,資料科學家可以根據需求創建新的SageMaker筆記本,連接到數據源,如亞馬遜簡單存儲服務 (Amazon Simple Storage Service, Amazon S3) 存儲桶,分析數據,構建模型並創建模型工件(例如,容器映像)等。使用ML共享服務帳戶中的模板配置的SageMaker項目可以加速模型開發過程,因為它已經配置了連接到S3存儲桶等步驟。圖中顯示了一個ML開發帳戶,但組織中可以有多個ML開發帳戶。
ML測試帳戶 – 這是新ML模型的測試環境,利益相關者可以在部署到生產之前審查和批准模型。
ML生產帳戶 – 這是新ML模型的生產帳戶。在利益相關者在ML測試帳戶中批准模型後,模型將自動部署到此生產帳戶。
數據治理帳戶 – 此帳戶托管數據湖、中央特徵存儲和細粒度數據訪問的數據治理服務。
關鍵活動和行動在前面的圖中編號。其中一些活動由不同的角色執行,而其他活動則由AWS服務自動觸發。
ML工程師在Github存儲庫中創建管道,平台工程師將其轉換為兩個不同的服務目錄組合:ML管理組合和SageMaker項目組合。ML管理組合將由主要資料科學家用來創建AWS資源(例如,SageMaker域)。SageMaker項目組合包含資料科學家和ML工程師可以用來加速模型訓練和部署的SageMaker項目。
平台工程師將這兩個服務目錄組合與組織中的工作負載帳戶共享。
數據工程師使用亞馬遜S3、AWS Lake Formation和亞馬遜DataZone等服務準備和管理數據集。
主要資料科學家使用ML管理組合設置SageMaker域,並使用SageMaker項目組合為其團隊設置SageMaker項目。
資料科學家訂閱數據集,並使用SageMaker筆記本分析數據和開發模型。
資料科學家使用SageMaker項目構建模型訓練管道。這些SageMaker項目會自動在模型註冊中註冊模型。
主要資料科學家在ML開發帳戶中本地批准模型。
此步驟包括以下子步驟:
資料科學家批准模型後,會觸發亞馬遜EventBridge中的事件總線,將事件發送到ML共享服務帳戶。
EventBridge中的事件觸發AWS Lambda函數,將模型工件(由SageMaker或Docker映像管理)從ML開發帳戶複製到ML共享服務帳戶,並在ML共享服務帳戶中創建模型包,並在ML共享服務帳戶的模型註冊中註冊新模型。
ML工程師在ML共享服務帳戶中審查和批准新模型進行測試和部署。此操作觸發了使用SageMaker項目設置的管道。
首先將批准的模型部署到ML測試帳戶。在生產部署之前,將運行集成測試並驗證端點。
測試後,治理官在CodePipeline中批准新模型。
模型獲得批准後,管道將繼續將新模型部署到ML生產帳戶,並創建SageMaker端點。
接下來的部分將提供有關此圖的關鍵組件的詳細信息,如何設置它們以及示例代碼。
設置ML共享服務帳戶
ML共享服務帳戶幫助組織標準化資料科學團隊之間工件和資源的管理。這種標準化還有助於在資料科學團隊消耗的資源之間強制執行控制。
ML共享服務帳戶具有以下功能:
服務目錄組合 – 包括以下組合:
ML管理組合 – 這是供工作負載帳戶的項目管理員使用的。用於為其團隊創建AWS資源。這些資源可以包括SageMaker域、亞馬遜Redshift集群等。
SageMaker項目組合 – 此組合包含資料科學團隊用於加速其ML模型開發的SageMaker產品,同時遵循組織的最佳實踐。
中央模型註冊 – 這是不同團隊開發和批准的ML模型的集中存放地。詳細設置請參見本系列的第二部分。
以下圖表說明了此架構。
作為第一步,雲管理員使用AWS Control Tower帳戶供應的自定義藍圖之一設置ML共享服務帳戶,如第一部分所述。
在接下來的部分中,我們將介紹如何設置ML管理組合。相同的步驟可用於設置SageMaker項目組合。
啟動兩個組合的基礎設施
設置ML共享服務帳戶後,ML平台管理員可以使用GitHub存儲庫中的示例代碼啟動ML管理組合的基礎設施。該代碼包含AWS CloudFormation模板,稍後可以部署以創建SageMaker項目組合。
完成以下步驟:
將GitHub存儲庫克隆到本地目錄:
進入組合目錄:
使用您喜歡的Python包管理器在單獨的Python環境中安裝依賴項:
使用以下命令啟動您的部署目標帳戶:
如果您已經設置了帳戶的角色和AWS區域,則可以使用以下命令:
最後,部署堆棧:
當準備好時,您可以在AWS CloudFormation中看到MLAdminServicesCatalogPipeline管道。
導航到服務目錄頁面的AWS CodeStar Connections,您會看到一個名為“codeconnection-service-catalog”的連接。如果您點擊該連接,您會注意到我們需要將其連接到GitHub,以便您可以將其與管道集成並開始推送代碼。點擊“更新待處理連接”以與您的GitHub帳戶集成。
完成後,您需要創建空的GitHub存儲庫以開始推送代碼。例如,您可以創建一個名為“ml-admin-portfolio-repo”的存儲庫。每個您部署的項目都需要在GitHub中事先創建一個存儲庫。
觸發CodePipeline以部署ML管理組合
完成以下步驟以觸發管道以部署ML管理組合。我們建議為平台中將要創建的不同存儲庫創建一個單獨的文件夾。
退出克隆的存儲庫並創建一個名為platform-repositories的平行文件夾:
克隆並填充空的存儲庫:
將代碼推送到GitHub存儲庫以創建服務目錄組合:
推送後,我們之前創建的GitHub存儲庫不再是空的。新的代碼推送觸發了名為cdk-service-catalog-pipeline的管道來構建和部署工件到服務目錄。
管道運行約需10分鐘。完成後,您可以在服務目錄控制台的組合頁面上找到名為ML管理組合的組合。
重複相同的步驟以設置SageMaker項目組合,確保您使用示例代碼(sagemaker-projects-portfolio)並創建一個新的代碼存儲庫(名稱可以是sm-projects-service-catalog-repo)。
與工作負載帳戶共享組合
您可以在服務目錄中與工作負載帳戶共享組合。同樣,我們以ML管理組合為例。
在服務目錄控制台中,選擇導航窗格中的組合。
選擇ML管理組合。
在共享選項卡上,選擇共享。
在帳戶信息部分,提供以下信息:
在選擇共享方式時,選擇組織節點。
選擇組織單位,然後輸入工作負載OU的組織單位 (OU) ID。
在共享設置部分,選擇主體共享。
選擇共享。選擇主體共享選項允許您指定要在共享帳戶中授予權限的AWS身份和訪問管理 (IAM) 角色、用戶或組的名稱。
在組合詳細信息頁面上,選擇訪問選項卡,然後選擇授予訪問權限。
在選擇授予訪問的方式時,選擇主體名稱。
在主體名稱部分,選擇角色/作為類型,並輸入ML管理員在工作負載帳戶中將要假設的角色的名稱。
選擇授予訪問權限。
重複這些步驟以將SageMaker項目組合與工作負載帳戶共享。
確認工作負載帳戶中的可用組合
如果共享成功,您應該在服務目錄控制台的組合頁面下的導入組合中看到兩個組合。
現在,ML共享服務帳戶中的服務目錄已與工作負載OU共享,資料科學團隊可以使用模板配置資源,如SageMaker域,並設置SageMaker項目,以加速ML模型的開發,同時遵循組織的最佳實踐。
我們演示了如何創建和共享組合與工作負載帳戶。然而,旅程並不止於此。ML工程師可以根據組織的需求繼續發展現有產品並開發新產品。
接下來的部分描述了設置ML開發帳戶和運行ML實驗的過程。
設置ML開發帳戶
ML開發帳戶的設置包括以下任務和利益相關者:
團隊負責人請求雲管理員配置ML開發帳戶。
雲管理員配置該帳戶。
團隊負責人使用共享的服務目錄組合配置SageMaker域,設置IAM角色並授予訪問權限,並根據組織決定使用的解決方案獲取亞馬遜S3、亞馬遜DataZone或AWS Lake Formation或中央特徵組中的數據訪問。
運行ML實驗
本系列的第三部分描述了多種在組織中共享數據的方法。當前架構允許使用以下方法訪問數據:
選項1:使用亞馬遜DataZone訓練模型 – 如果組織在中央治理帳戶或數據中心擁有亞馬遜DataZone,數據發布者可以創建一個亞馬遜DataZone項目來發布數據。然後,資料科學家可以從亞馬遜SageMaker Studio訂閱亞馬遜DataZone發布的數據集,並使用該數據集構建ML模型。參考示例代碼以獲取有關如何使用訂閱數據訓練ML模型的詳細信息。
選項2:使用亞馬遜S3訓練模型 – 確保用戶對S3存儲桶中的數據集具有訪問權限。按照示例代碼運行使用存儲在S3存儲桶中的數據的ML實驗管道。
選項3:使用數據湖和Athena訓練模型 – 第二部分介紹了如何設置數據湖。按照示例代碼運行使用存儲在亞馬遜Athena數據湖中的數據的ML實驗管道。
選項4:使用中央特徵組訓練模型 – 第二部分介紹了如何設置中央特徵組。按照示例代碼運行使用存儲在中央特徵組中的數據的ML實驗管道。
您可以根據您的設置選擇使用哪個選項。對於選項2、3和4,SageMaker項目組合提供項目模板來運行ML實驗管道,包括數據攝取、模型訓練和在模型註冊中註冊模型的步驟。
在以下示例中,我們使用選項2來演示如何使用從ML共享服務帳戶共享的SageMaker項目構建和運行ML管道。
在SageMaker Studio域中,在導航窗格中的部署下,選擇項目
選擇創建項目。
有一個項目列表,服務於各種目的。因為我們想要訪問存儲在S3存儲桶中的數據來訓練ML模型,所以在組織模板選項卡中選擇使用S3存儲桶中的數據的項目。
按照步驟提供必要的信息,如名稱、工具帳戶(ML共享服務帳戶ID)、S3存儲桶(用於MLOPS),然後創建項目。
創建項目需要幾分鐘。
項目創建後,將觸發SageMaker管道以執行SageMaker項目中指定的步驟。選擇導航窗格中的管道以查看管道。您可以選擇管道以查看管道的有向無環圖 (DAG)。當您選擇一個步驟時,其詳細信息會顯示在右側窗格中。
管道的最後一步是在當前帳戶的模型註冊中註冊模型。下一步,主要資料科學家將審查模型註冊中的模型,並決定是否應該批准模型以提升到ML共享服務帳戶。
批准ML模型
主要資料科學家應該審查訓練過的ML模型並在開發帳戶的模型註冊中批准候選模型。當ML模型獲得批准後,會觸發本地事件,EventBridge中的事件總線將向ML共享服務帳戶發送模型批准事件,並將模型的工件複製到中央模型註冊中。如果是新模型,將為該模型創建模型卡,或者更新現有模型卡的版本。
以下架構圖顯示了模型批准和模型提升的流程。
模型部署
在前一步之後,模型在ML共享服務帳戶的中央模型註冊中可用。ML工程師現在可以部署模型。
如果您使用示例代碼啟動了SageMaker項目組合,您可以使用SageMaker項目中的“從模型註冊部署實時端點 – 跨帳戶、測試和生產”選項來設置項目,建立管道以將模型部署到目標測試帳戶和生產帳戶。
在SageMaker Studio控制台中,選擇導航窗格中的項目。
選擇創建項目。
在組織模板選項卡上,您可以查看在創建域時從服務目錄填充的模板。
選擇模板“從模型註冊部署實時端點 – 跨帳戶、測試和生產”,然後選擇選擇項目模板。
填寫模板:
SageMakerModelPackageGroupName是從ML開發帳戶提升的模型組的名稱。
為PreProdAccount輸入部署測試帳戶ID,為ProdAccount輸入部署生產帳戶ID。
部署管道已準備就緒。ML工程師將在ML共享服務帳戶中審查新提升的模型。如果ML工程師批准模型,將觸發部署管道。您可以在CodePipeline控制台中查看該管道。
該管道將首先將模型部署到測試帳戶,然後暫停以手動批准部署到生產帳戶。ML工程師可以測試性能,治理官可以在測試帳戶中驗證模型結果。如果結果令人滿意,治理官可以在CodePipeline中批准將模型部署到生產帳戶。
結論
這篇文章提供了設置多帳戶ML平台的關鍵組件的詳細步驟。這包括配置管理中央模板、模型註冊和部署管道的ML共享服務帳戶;從中央服務目錄共享ML管理和SageMaker項目組合;以及設置個別ML開發帳戶,資料科學家可以在其中構建和訓練模型。
文章還涵蓋了使用SageMaker項目模板運行ML實驗的過程,以及模型批准和部署工作流程。資料科學家可以使用標準化模板加速模型開發,而ML工程師和利益相關者可以在將新模型提升到生產之前進行審查、測試和批准。
這種多帳戶ML平台設計遵循聯邦模型,由中央的ML共享服務帳戶提供治理和可重用組件,以及由各個業務線管理的一組開發帳戶。這種方法使資料科學團隊擁有創新所需的自主權,同時提供企業範圍的安全性、治理和協作。
我們鼓勵您通過參加AWS多帳戶數據和ML治理研討會來測試此解決方案,以查看平台的運作並學習如何在自己的組織中實施。
關於作者
賈 (Vivian) 李是AWS的高級解決方案架構師,專注於AI/ML。她目前支持金融行業的客戶。在2022年加入AWS之前,她有7年的經驗支持企業客戶使用AI/ML在雲端推動業務成果。Vivian擁有北京大學的學士學位和南加州大學的博士學位。在空閒時間,她喜歡各種水上活動,以及在她的家鄉科羅拉多州的美麗山脈中徒步旅行。
Ram Vittal是AWS的首席ML解決方案架構師。他擁有超過30年的經驗,設計和構建分佈式、混合和雲應用程序。他熱衷於構建安全、可擴展、可靠的AI/ML和大數據解決方案,以幫助企業客戶在其雲採用和優化之旅中改善業務成果。在空閒時間,他喜歡騎摩托車和與狗散步。
阿萊桑德羅·切雷 (Dr. Alessandro Cerè) 是AWS的生成AI評估專家和解決方案架構師。他協助各行各業和地區的客戶在大規模上運營和治理其生成AI系統,確保它們符合最高的性能、安全和道德標準。阿萊桑德羅在量子物理學方面有獨特的背景,並在量子通信和量子記憶方面有研究經驗。在空閒時間,他熱衷於風景和水下攝影。
阿爾貝托·梅嫩德斯 (Alberto Menendez) 是AWS專業服務的DevOps顧問。他幫助加速客戶的雲端之旅,實現數字轉型目標。在空閒時間,他喜歡運動,特別是籃球和網球,並與家人和朋友共度時光,學習新技術。
索維克·庫馬爾·納特 (Sovik Kumar Nath) 是AWS的AI/ML和生成AI高級解決方案架構師。他在金融、運營、營銷、醫療保健、供應鏈管理和物聯網方面設計端到端機器學習和商業分析解決方案方面擁有豐富的經驗。他擁有南佛羅里達大學和瑞士弗里堡大學的雙碩士學位,以及印度理工學院卡哈爾古爾的學士學位。在工作之餘,索維克喜歡旅行、搭乘渡輪和觀看電影。
維克多·馬列塞維奇 (Viktor Malesevic) 是AWS專業服務的高級機器學習工程師,負責領導團隊在雲端構建先進的機器學習解決方案。他熱衷於讓AI產生影響,監督從建模到生產的整個過程。在空閒時間,他喜歡衝浪、騎自行車和旅行。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!