Amazon MLA-C01: MLOps 與模型生命週期管理 — 學習指南
屬於 AWS Machine Learning Engineer Associate MLA-C01 — 學習指南. 使用經過驗證的解答練習: Amazon 考試中心, 或參加限時模擬考試: ExamRoll.io.
核心概念
AWS 中的模型生命週期管理,核心概念是將模型視為具備版本控管的產物 (artifact),並具備可稽核的血緣關係 (lineage)、自動化的晉升閘道 (promotion gate) 以及可重現的管線 (pipeline)。Amazon SageMaker 提供了基礎元件 (primitives):用於流程編排的 SageMaker Pipelines、用於版本控制與審核狀態管理的 SageMaker Model Registry (ModelPackage/ModelPackageGroup)、用於 CI/CD 的 SageMaker Projects 和 CodePipeline,以及用於持續品質與偏見檢查的 Model Monitor/Clarify。一個健全的生命週期始於可重現的輸入——例如,儲存在 S3 中不可變的訓練資料,並透過伺服器端 KMS 加密、嚴格的儲存桶政策或 Lake Formation 控制來保護;在原始碼儲存庫中進行版本控制的程式碼;以及在傳遞給
undefined
或 sagemaker SDK
undefined
時,以容器映像檔 URI 和執行個體類型宣告的訓練環境。
操作控制包括透過
undefined
的
undefined
(Subnets 和 SecurityGroupIds) 以及
undefined
來實作網路隔離以防止對外連線 (egress),以及遵循最小權限原則設定範疇的 IAM 角色 (例如
undefined
僅具備對特定儲存桶的
undefined
、
undefined
權限)。當訓練任務完成後,使用
undefined
或 SDK 的
undefined
呼叫,將產物註冊到 Model Registry 中,並指定一個
undefined
,同時將
undefined
設定為 “PendingManualApproval” 以驅動人工審核閘道。血緣關係元資料——例如訓練超參數、Docker 映像檔、輸入資料的 S3 URI、Git commit——都應作為模型套件的元資料附加,這樣下游的 CI/CD 和稽核作業才能從生產環境的端點追溯回原始碼和資料集。
ML 的 CI/CD 與傳統 CI/CD 不同,因為其產物(模型、基準線、監控器)體積龐大且輸出具有非確定性。使用 SageMaker Projects 範本搭配 AWS CodePipeline 和 CodeBuild 來實作 CI/CD。使用 CodeBuild 執行單元測試、模型訓練的煙霧測試(例如,使用較短的 epoch 或資料子集)以及整合測試。使用 CodePipeline 來編排 source → build → register-model 等步驟,並整合一個
undefined
動作或基於 Lambda 的自訂動作,透過
undefined
來切換
undefined
的
undefined
。對於自動化晉升,CodePipeline 可以呼叫 SageMaker 的
undefined
和
undefined
API,或使用 SageMaker Projects 產生的 CloudFormation 堆疊,以可預測的基礎設施即程式碼 (infrastructure-as-code) 方式進行部署。
主要服務與組態設定
SageMaker Pipelines 是流程編排層:在 Python 中宣告
undefined
、
undefined
、
undefined
、
undefined
和
undefined
等步驟物件。在步驟上使用
undefined
(
undefined
),這樣當輸入和參數未變時,步驟可以重用輸出;這可以避免不必要的執行個體佈建。對於
undefined
,使用
undefined
,並將
undefined
和
undefined
設定為 “PendingManualApproval”,以便將審核閘道整合到管線圖中。使用
undefined
API 來啟動執行,並使用
undefined
或主控台來檢視執行狀態和血緣關係。
SageMaker Model Registry 將模型套件儲存在一個
undefined
下,並指派
undefined
識別碼。相關的 API 包括
undefined
、
undefined
、
undefined
,以及用來將
undefined
更改為 “Approved” 或 “Rejected” 的
undefined
。
undefined
物件應包含元資料欄位,如
undefined
(Containers、SupportedContentTypes、SupportedResponseMIMETypes) 和
undefined
。部署時,使用模型套件的 ARN 呼叫
undefined
,並指定
undefined
和
undefined
,然後呼叫
undefined
並設定
undefined
(EnableCapture=true、SamplingPercentage、DestinationS3Uri) 以啟用推論擷取。
對於監控和偏見偵測,請使用 SageMaker Model Monitor 和 SageMaker Clarify。Model Monitor 需要一個透過
undefined
建立的基準線,此操作會呼叫
undefined
來產生基準線統計數據和約束條件;這些基準線儲存在 S3 中,並在
undefined
中被引用。監控排程是透過
undefined
建立的,並可透過
undefined
/
undefined
來啟動/停止。若要對即時端點進行臨機 (ad hoc) 的偏見檢查,請使用 Clarify 容器(透過
undefined
或
undefined
)執行一個 SageMaker Processing 任務,並使用擷取的推論日誌作為輸入;Clarify 支援模型偏見檢查,並將報告回傳至 S3。
為了安全地匯總異質資料來源,請使用 AWS Glue 和 Lake Formation 來探索、編目和 ETL 資料,這些資料來源可來自 S3、JDBC 來源(例如透過 AWS Glue JDBC 連接器連接的本地 MySQL,並可選擇性地使用 DataSync 進行大量移動)以及串流來源。AWS Glue 任務 (PySpark) 可以將整理好的資料集寫入一個加密的 S3 資料湖,並透過 Lake Formation 進行精細的存取控制。對於自動化異常偵測加上視覺化,可在以下託管服務之間選擇:Amazon Lookout for Metrics 執行自動化的時間序列異常偵測,而 SageMaker Data Wrangler 提供快速的視覺化探索和轉換,並可將預處理管線匯出回 SageMaker Processing 或 Pipelines。若要實現具備視覺化儀表板的持續性異常偵測,可結合使用 Lookout for Metrics 進行偵測,並搭配 Amazon QuickSight 進行視覺化和深入分析 (drill-down)。
設計模式與權衡取捨
一個常見的模式是管線優先 (pipeline-first):編寫一個 SageMaker Pipeline,其中包含資料預處理 (ProcessingStep)、訓練 (TrainingStep)、模型評估 (ProcessingStep 或 ClarifyProcessor)、註冊模型 (RegisterModel) 以及部署 (ModelStep 或手動晉升)。使用步驟快取 (step caching) 來最小化重複的運算,並加速迭代開發。為了安全地晉升模型,將 model_approval_status 設定為 “PendingManualApproval”,並整合 CodePipeline 的 ManualApproval 動作或一個用來更新模型套件 (model package) 的核准 Lambda。這種設計提供了一條從資料和程式碼到生產環境的可稽核路徑,同時也實現了有人工介入的治理 (human-in-the-loop governance)。
對於 CI/CD,可以在兩種權衡之間做選擇:基於指標閘道 (metric gates) 的全自動晉升(速度快、手動步驟少),或是手動核准工作流程(為了合規性)。透過 CodeBuild 執行一個小型的 evaluate.py 來實作基於指標的閘道控制。這個 evaluate.py 會呼叫 SageMaker Runtime 或載入模型套件,計算指標,並產出一個供 CodePipeline 用來決定通過/失敗的產物 (artifact)。如果合規性要求人工簽核,可以插入一個 AWS CodePipeline ManualApprovalAction,它會透過 SNS 觸發一封電子郵件,並要求指定的核准人才能繼續;或者,將模型登錄 (Model Registry) 的狀態作為標準的真實來源 (canonical source of truth),並且只在 ModelApprovalStatus 等於 “Approved” 時才允許部署。
減少訓練任務的啟動延遲,通常關鍵在於避免重複的完整佈建。如果許多管線執行都是在相同的輸入上重新訓練,請啟用 Pipeline CacheConfig,這樣當輸入未變時,TrainingStep 就會被跳過。對於每次執行都必須訓練但又要求低延遲的迭代,可以在 SageMaker Studio 中使用較小的執行個體類型進行快速原型設計,或是在一個持續運作的 Amazon EC2 執行個體或由 EKS 支援的自訂訓練協調器上執行多個實驗,以避免容器冷啟動——這是用維運開銷來換取較低的延遲。若要達到生產級的可擴展性,則應接受一些啟動延遲,並轉而將重點放在自動化可重現性上。
常見的陷阱與決策標準
一個常見的錯誤是,在偵測模型漂移時僅依賴端點日誌,卻沒有在部署時啟用 DataCaptureConfig;若無資料擷取,Model Monitor 和 Clarify 便無法分析實際的推論輸入。務必使用 DataCaptureConfig (EnableCapture=true、DestinationS3Uri、CaptureOptions 和 InitialSamplingPercentage) 來設定 CreateEndpointConfig,並透過 CreateMonitoringSchedule 建立一個連結到基準線統計資料的監控排程。
另一個陷阱是 S3 和網路安全性不足。必須保持隔離的訓練任務應在 CreateTrainingJob 中使用 VpcConfig,並為 S3 物件啟用 KMS 加密。不要依賴公開存取控制;應改用 S3 儲存桶策略、VPC 端點 (com.amazonaws.region.s3) 和 IAM 角色範圍限定。最後,應避免脆弱的 CI/CD,做法是將評估指標和模型卡元數據內建至模型套件中,並使用不可變的版本控制 (ModelPackageVersion) 而非覆寫產物。
實務問題:使用情境
AcmePay — 交易串流的詐欺偵測。挑戰在於建立一個安全、可稽核的生命週期,此週期需能彙總 S3 交易日誌、客戶資料和地端 MySQL 表格、訓練一個 XGBoost 詐欺分類器、維護一個中央模型註冊表並在部署到生產環境前進行手動核准、依需求偵測資料與偏見漂移,並最小化版本控制和迭代執行的維運開銷。
集中化資料:使用 AWS Glue 透過 AWS Glue JDBC 連接器來爬取 S3 交易日誌和地端 MySQL(並透過安全的 DataSync 傳輸或 VPC peering 進行網路存取)。在 Glue Data Catalog 中將資料集編目,並透過 AWS Lake Formation 強制執行存取控制。將整理好的訓練集儲存在一個加密的 S3 前綴中(使用 KMS CMK),並使用儲存桶策略加上 VpcEndpoint 來防止公開存取。
建立可重現的管線:撰寫一個 SageMaker Pipeline,其中包含用於特徵工程的 ProcessingStep(使用 Data Wrangler 或 Glue ETL 匯出)、執行內建 XGBoost 容器並帶入超參數的 TrainingStep,以及一個呼叫 RegisterModel 並設定 model_package_group_name=“acmepay-fraud-group” 和 model_approval_status=“PendingManualApproval” 的 RegisterModel 步驟。在前處理和訓練步驟上啟用 CacheConfig,以便在輸入/程式碼未變更時重複使用輸出,從而減少重複的執行個體配置。
CI/CD 與核准流程:建立一個 SageMaker Project 來搭建 AWS CodePipeline 的基礎架構。該管線會在 CodeBuild 中執行單元測試,觸發 SageMaker Pipeline,並在 RegisterModel 之後包含一個 CodePipeline 的 ManualApproval 動作。當手動核准動作被批准後,會調用一個 Lambda 函數,該函數呼叫 UpdateModelPackage 將 ModelApprovalStatus 設為 “Approved”,然後觸發 CreateEndpointConfig 和 CreateEndpoint 進行部署。使用 SageMaker Projects 產生的 CloudFormation 資源來保持基礎設施的可重現性。
安全的訓練與部署:提交訓練任務時使用 CreateTrainingJob 的 VpcConfig (SubnetIds, SecurityGroupIds) 並設定 EnableNetworkIsolation=true;確保 SageMaker 執行角色對 KMS 金鑰擁有 kms:Decrypt 權限,且 s3:GetObject 權限僅限於整理好的資料集前綴。對於端點,建立 CreateEndpointConfig 時需包含 DataCaptureConfig (EnableCapture=true, SamplingPercentage=100, DestinationS3Uri=s3://acmepay-prod/capture),以便保留推論資料以供監控。
依需求進行漂移與偏見檢查:在一個 ProcessingJob 中使用 SageMaker Clarify,對擷取的推論資料和真實標籤(如果有的話)依需求執行 ModelBias 和 ModelExplainability 分析;當資料科學團隊要求進行評估時,可從 Lambda 或 Step Functions 中透過 ClarifyProcessor.run() API 來調用。對於持續性的漂移警示,可透過 DefaultModelMonitor.suggest_baseline 建立一個 Model Monitor 基準線,並設定一個 MonitoringSchedule;使用 CreateMonitoringSchedule 來執行定期檢查,並設定 SNS 通知以應對違規情況。
AWS 的設計理念:Glue + Lake Formation 以最少的自訂 ETL 程式碼,集中化並保護異質來源的資料;SageMaker Pipelines + CacheConfig 最小化了迭代執行時的基礎設施變動;Model Registry 提供了不可變的版本控制和元數據 (ModelPackageGroupName 和 ModelPackageVersion),並透過 ModelApprovalStatus 與核准工作流程原生整合;而 SageMaker Clarify 加上 Model Monitor 則同時提供依需求的偏見評估和排程的漂移偵測。使用 SageMaker Projects 和 CodePipeline 標準化了 CI/CD 流程,並在生產部署前,強制執行從 “PendingManualApproval” 到 “Approved” 的可稽核、可重複的晉升流程。
← 模型部署與推論 · 所有領域 · 模型監控與可觀測性 →
練習這些題目 → · 在 ExamRoll.io 上限時練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通過考試 →