Amazon MLA-C01: 模型訓練與超參數優化 — 學習指南
屬於 AWS Machine Learning Engineer Associate MLA-C01 — 學習指南. 使用經過驗證的解答練習: Amazon 考試中心, 或參加限時模擬考試: ExamRoll.io.
核心概念
Amazon SageMaker 中的模型訓練是一個協同運作的流程,它結合了容器化的訓練程式碼、運算資源、持久性儲存以及可選的分散式通訊架構。一個 SageMaker 訓練任務由一個訓練映像檔或框架估算器 (estimator)、一個指向 S3 位置的輸入資料規格,以及一個包含 InstanceType、InstanceCount 和 VolumeSizeInGB 的資源組態所定義。對於受管 Spot 訓練,您需要將 EnableManagedSpotTraining 設為 true,並提供 MaxWaitTimeInSeconds 和 MaxRuntimeInSeconds,以便 SageMaker 能夠競標備用容量,並在您允許的時間範圍內恢復或停止任務。檢查點設定是透過 CheckpointConfig 及其 S3Uri 和 LocalPath 來配置的;當使用受管 Spot 執行個體時,您必須頻繁地設定檢查點,並將 MaxWaitTimeInSeconds 設定得比 MaxRuntimeInSeconds 大得多,這樣被中斷的任務才能夠被重試。
分散式訓練可以實作為資料平行 (data-parallel) 或模型平行 (model-parallel) 策略。SageMaker 透過 PyTorch DistributedDataParallel 或 Horovod 支援原生的分散式資料平行訓練,並提供 smdistributed 函式庫及其 smdistributed.dataparallel 以實現最佳化的 NCCL 通訊。模型平行 (model-parallelism) 則可透過 smdistributed.modelparallel 或框架特定的分割方式來達成。高吞吐量的節點間通訊需要具備 NVLink 和 EFA (Elastic Fabric Adapter) 支援的執行個體系列——請選擇 ml.p4d、ml.p3dn 或其他啟用 EFA 的執行個體類型,並根據您的訓練腳本要求設定 use_mpi 或 use_nccL,以獲得高效的梯度 all-reduce。對於大規模任務,請提供具有適合您模型分片大小的 GPU 記憶體和網路特性的 InstanceTypes,以平衡運算與通訊的比率。
超參數最佳化由 SageMaker 自動模型調校 (Automatic Model Tuning, AMT) 處理,它會啟動多個訓練任務來搜尋超參數空間並最佳化一個目標指標。HyperParameterTuningJobConfig 包含 ParameterRanges、帶有 MaxNumberOfTrainingJobs 和 MaxParallelTrainingJobs 的 ResourceLimits,以及一個策略 (Strategy)(預設為 Bayesian;替代方案包括用於窮舉式或較少關聯性搜尋的 Random 或 Grid)。定義 ObjectiveMetricName 和 MetricDefinitions,以便 AMT 能夠解析訓練日誌;如果您的目標是 F1 分數,請將 ObjectiveType 設為 Maximize,並確保您的 MetricDefinitions regex 能夠匹配發出的指標。為了在節省預算的同時加速調校,請使用 WarmStartConfig 來重複使用先前調校任務的結果,並在支援的情況下啟用提早停止策略 (EarlyStoppingType: Auto),以終止沒有前景的訓練任務。
關鍵服務與組態
在建構端到端的訓練與調校工作流程時,您通常會結合使用多個 AWS 服務和 SageMaker 的功能:
- Amazon SageMaker Training Jobs (Estimator API / CreateTrainingJob)
- SageMaker Automatic Model Tuning (CreateHyperParameterTuningJob)
- SageMaker Model Registry (ModelPackage and CreateModelPackageGroup)
- AWS Glue / AWS Lake Formation 用於安全的集中式資料目錄
- Amazon S3 用於持久的檢查點與產物儲存
在訓練任務的組態中,您將指定包含 InstanceType 和 InstanceCount 的 ResourceConfig,並透過 HyperParameters 傳遞超參數。對於受管 Spot 訓練,請包含 EnableManagedSpotTraining 並設定 CheckpointConfig.S3Uri,以便被中斷的任務能夠儲存狀態。當透過 CreateHyperParameterTuningJob 啟動調校任務時,請在 HyperParameterTuningJobConfig.ParameterRanges 中填入 IntegerParameterRange、ContinuousParameterRange 和 CategoricalParameterRange 項目,並在 ResourceLimits 中設定 MaxNumberOfTrainingJobs 和 MaxParallelTrainingJobs。使用 WarmStartConfig,並將 ParentHyperParameterTuningJobs 和 WarmStartType 設定為 IDENTICAL_DATA_AND_ALGORITHM 或 TRANSFER_LEARNING,以從先前的結果引導搜尋。
為了安全性和操作控制,請透過在 SageMaker Model Registry 的 ModelPackageGroup 中註冊 ModelPackage 物件來集中管理模型產物;將 ModelApprovalStatus 設為 PendingManualApproval,以要求在部署前必須手動變更為 Approved。將 Model Registry 事件與 AWS CodePipeline 或 AWS Step Functions 結合,以建構一個手動核准動作,該動作透過 UpdateModelPackage API 更新 ModelPackage.ModelApprovalStatus。為了監控線上端點並偵測漂移,請在端點上啟用 DataCaptureConfig,並使用 SageMaker Model Monitor 透過 CreateMonitoringSchedule 建立部署前統計資料的基準線,之後再使用 BatchTransform 或 RealTimeInference 的資料擷取與 S3 DestinationS3Uri 進行持續評估。
設計模式與權衡取捨
當您的模型能放進單一 GPU 時,選擇使用許多較小分片的資料平行分散式訓練,能帶來直接的擴展性,且通常是最簡單的模式。使用 PyTorch DDP 或 Horovod 的資料平行方法,在網路架構為高效能且執行個體支援 EFA 和 NCCL 的情況下,擴展性良好。當模型權重超過單一 GPU 的記憶體時,就需要模型平行或管線平行;smdistributed.modelparallel 有助於將張量分割到多個 GPU 上,但這會增加偵錯、設定檢查點以及平衡運算與通訊的複雜度。一個實用的設計模式是混合式:對非常大的層使用模型分片,並在工作者群組之間進行資料平行。
超參數調校的權衡主要是在時間與成本之間。廣泛的隨機 (Random) 或網格 (Grid) 搜尋雖然簡單但成本高昂;貝氏最佳化(預設的 AMT 策略)會利用先前的結果來集中搜尋範圍,並可減少達到良好組態所需的訓練任務數量。當資料集或模型的變更是漸進式時,可使用 WarmStartConfig 將先前調校的知識轉移到新的實驗中。平行化執行多個訓練任務能加快實際時間 (wall-clock) 的最佳化速度,但會增加瞬時成本,且可能達到服務配額;應保守地設定 MaxParallelTrainingJobs,並使用 Spot 執行個體進行調校任務以減少開銷,但務必設定 CheckpointConfig 和 MaxWaitTimeInSeconds 以容忍中斷。
檢查點的頻率和儲存體的選擇會同時影響彈性與成本。頻繁的檢查點能減少因中斷而損失的運算,但會增加 S3 的吞吐量和延遲開銷;建議在容器內部(LocalPath)使用增量檢查點,並非同步地同步到 S3,以便進行持久性復原。在受控 Spot 執行個體上進行訓練時,應設定一個穩健的檢查點間隔,並為訓練任務使用較少的執行個體數量,使其能在典型的中斷時間窗內完成;或者,設計訓練迴圈以容忍搶佔,利用 SageMaker 提供的 SIGTERM 掛鉤來確保一致性檢查點的建立。
常見陷阱與決策標準
一個常見的營運陷阱是依賴自訂容器映像檔而未進行效能測試;框架提供的映像檔(例如 SageMaker 預建的 PyTorch、TensorFlow、XGBoost 映像檔)啟動速度更快,包含自動指標發送整合,並能將冷啟動延遲降至最低。在 HPO 中的另一個常見錯誤是 MetricDefinitions 或 ObjectiveMetricName 設定錯誤,這會阻止 AMT 找到並最佳化正確的訊號;在擴展調校任務之前,務必驗證用於從日誌中提取指標的正規表示式 (regex)。在使用受管 Spot 訓練時若忽略啟用 CheckpointConfig,將導致任務進度在被中斷時遺失,並可能導致更長的累積執行時間和更高的成本。
安全與治理的決策必須以最低權限和模型生命週期控制為中心。使用 SageMaker Model Registry 搭配 ModelPackage 核准工作流程和 IAM 政策,以確保只有經過授權的 ModelPackage 版本能進入生產環境。使用加密(SSE-S3 或 SSE-KMS)保護 S3 中的訓練資料,並透過訓練任務擔任的 IAM 角色(CreateTrainingJob 中的 RoleArn 參數)來控制存取;在需要集中式資料存取策略的地方,則使用 Lake Formation。對於漂移偵測和根本原因分析,可將 SageMaker Model Monitor 與 Model Registry 的產出物結合,以追蹤哪些產出物版本效能下降,並在重新部署前觸發需要人為介入的核准流程。
實務問題:使用案例情境
公司:FinGuard Inc. — 挑戰:建立一個詐騙偵測模型,該模型需使用儲存在 S3 的交易日誌和本地部署 (on-premises) 的 MySQL 客戶資料進行訓練,同時要將成本降至最低、容忍 Spot 執行個體中斷、執行自動化超參數最佳化、在生產部署前強制執行手動核准,並在部署後偵測偏差或漂移。
資料匯總與準備:直接擷取 S3 交易日誌,並使用 AWS Glue 搭配 JDBC 連線到本地部署的 MySQL 資料庫,以爬取並編目客戶資料表。將整理好的特徵註冊到 SageMaker Feature Store 的 FeatureGroup 中,以實現低延遲存取並強制執行結構一致性;使用 SSE-KMS 加密 OfflineStore S3,並透過 IAM 和 Lake Formation 策略控制存取。
訓練與分散式組態:使用帶有內建 XGBoost 容器的 SageMaker Estimator 來建立初始模型;為基準線設定 ResourceConfig 的 InstanceType 為 ml.m5.4xlarge,並針對 GPU 加速實驗擴展到 ml.p3.2xlarge。對於大型實驗,在啟用 EFA 的執行個體(ml.p3dn.24xlarge 或 ml.p4d.24xlarge)上使用 smdistributed.dataparallel,並將 CheckpointConfig.S3Uri 設定為 s3://finguard-checkpoints/{job-name},將 LocalPath 設定為 /opt/ml/checkpoints。透過將 EnableManagedSpotTraining 設定為 true 來啟用受管 Spot 訓練,並將 MaxWaitTimeInSeconds 設定為至少 MaxRuntimeInSeconds 的 2 倍以允許重試。
超參數最佳化:使用 HyperParameterTuningJobConfig.ParameterRanges 啟動 SageMaker Automatic Model Tuning,針對 eta、max_depth 和 scale_pos_weight(以在無需大量前處理的情況下處理類別不平衡問題)進行設定。將 ObjectiveMetricName 設定為 validation:F1,並提供可提取 F1 值的 MetricDefinitions 正規表示式。使用 Bayesian 策略,ResourceLimits 設定 MaxNumberOfTrainingJobs 為 50 和 MaxParallelTrainingJobs 為 5,若要從先前的調校結果迭代,則使用 WarmStartConfig。在受管 Spot 執行個體上執行調校任務以降低成本,並確保每個訓練任務都啟用了 CheckpointConfig。
模型治理與部署:將最佳模型產出物在 SageMaker Model Registry 中註冊為 ModelPackageGroup 內的 ModelPackage,並將 ModelApprovalStatus 設定為 PendingManualApproval。實作一個 AWS Step Functions 管線,其中包含一個人工核准步驟(手動任務),核准後呼叫 UpdateModelPackage 將 ModelApprovalStatus 設定為 Approved,然後觸發 CreateModel 和 CreateEndpointConfig/CreateEndpoint 進行部署。使用 Endpoint 的 DataCaptureConfig 將推論請求和回應擷取到 s3://finguard-capture,以供 Model Monitor 使用。
AWS 的理由:AWS Glue 可集中化並編目混合式資料來源,並與 SageMaker 整合;SageMaker Feature Store 可將特徵標準化,並保護它們以供訓練和推論使用;受管 Spot 訓練加上 CheckpointConfig 可降低運算成本,同時在搶佔期間保留進度;SageMaker Automatic Model Tuning 搭配 MetricDefinitions 和 WarmStartConfig 可在控制預算的情況下,加速找到穩健的超參數;Model Registry 搭配 PendingManualApproval 以及 Step Functions 或 CodePipeline,可強制執行治理和模型的最低權限生產環境升級流程;SageMaker Model Monitor 和 DataCaptureConfig 提供自動化的漂移和偏差偵測,以進行持續的模型健康狀況檢查。
← 資料工程與特徵工程 · 所有領域 · 模型評估與選擇 →
練習這些題目 → · 在 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.
通過考試 →