Amazon MLA-C01: 資料工程與特徵工程 — 學習指南
屬於 AWS Machine Learning Engineer Associate MLA-C01 — 學習指南. 使用經過驗證的解答練習: Amazon 考試中心, 或參加限時模擬考試: ExamRoll.io.
核心概念
機器學習的資料工程,其核心在於為模型訓練與推論產生可重現、可稽核的輸入,同時將資料洩漏與維運負擔降至最低。其核心要素包括一致的擷取語意 (事件時間、記錄識別碼、結構描述)、一個標準化的中繼資料目錄,以及定義明確的轉換作業,這些轉換作業必須能同時在離線環境中執行以進行模型訓練,也能在線上環境中執行以進行即時推論。在架構您的管線時,應確保訓練資料集與推論時回傳的線上特徵,都由相同的轉換程式碼 (或相同的 Feature Store 記錄定義) 所支援;這可以避免訓練與服務之間的偏差 (train/serve skew)。對於時間序列問題,應保留每筆記錄的事件時間,並強制執行具備時間感知能力的合併 (join) 與分割 (split),以防止標籤洩漏;當使用 SageMaker Feature Store 時,在 CreateFeatureGroup 中設定 RecordIdentifierFeatureName 和 EventTimeFeatureName,以便下游的訓練與推論使用相同的鍵值。
特徵工程可分為確定性、可重複的轉換,以及探索性的轉換。確定性轉換包括插補 (imputation)、縮放 (scaling)、類別編碼,以及衍生的聚合運算 (例如滾動計數、時間窗特徵)。將這些轉換實作成程式碼,使其能在 Glue ETL、SageMaker Processing 或 SageMaker Data Wrangler 中執行,並將結果檢查點 (checkpoint) 存入離線儲存區。對於高基數 (high-cardinality) 的類別特徵,應優先考慮使用目標編碼 (target encoding) 搭配交叉驗證,或基於頻率/嵌入 (embedding) 的表示法,而非單純的獨熱編碼 (one-hot encoding),以避免組合爆炸。對於數值特徵,應優先採用對管線友善的標準化 (平均值/變異數) 或分位數轉換,並將其參數儲存在模型成品 (artifact) 中,以確保生產環境的正規化與訓練時一致。
關鍵服務與組態設定
AWS Glue 為許多機器學習管線提供了標準化的 ETL 與中繼資料層。使用 Glue Crawlers 來為 S3 和 JDBC 來源填充 Glue Data Catalog,然後編寫基於 Spark 的 Glue ETL 任務或使用 Glue Studio 視覺化任務來清理與轉換資料。設定 Glue 任務時,需配置 GlueVersion (例如 3.0)、WorkerType (G.1X, G.2X)、NumberOfWorkers、用於增量處理的 JobBookmarks,以及 DefaultArguments (例如 “–additional-python-modules”) 來引入像 awswrangler 或 pydeequ 這類的函式庫。若要從地端的 MySQL 擷取資料,可以建立一個帶有 JDBC URL 的 Glue 連線,並使用 Glue 任務或 AWS DMS 來捕獲異動資料捕獲 (CDC) 到 S3 的登陸區 (landing zone);當使用 DMS 時,選擇「先完整載入後 CDC」(full-load then CDC),並以 S3 parquet 為目標格式,以利於高效的離線特徵處理。
SageMaker Feature Store 是在大規模運作下,實現低維運負擔的中央特徵管理選項。CreateFeatureGroup 需要 FeatureDefinitions、RecordIdentifierFeatureName、EventTimeFeatureName、OnlineStoreConfig (設定 EnableOnlineStore=True 以啟用由 DynamoDB 支援的低延遲線上儲存),以及帶有 S3Uri 和 DataCatalogConfig 的 OfflineStoreConfig,以便透過 Athena/Glue 存取離線特徵。根據吞吐量需求,使用 BatchPutRecord 或 PutRecord 進行擷取;需包含 FeatureGroupArn 以及授予服務 PutRecord 權限的 RoleArn。離線儲存區會將 Parquet 檔案永久保存在 S3 中,並自動與 Glue Data Catalog 整合,從而實現可重現的訓練查詢。對於即時特徵,應對線上儲存區使用 GetRecord;對於批量的訓練資料合併,則應優先使用離線的 S3 Parquet 路徑。
對於模型治理與部署工作流程,應使用 SageMaker Model Registry 和 SageMaker Pipelines。使用 CreateModelPackage 或 Pipelines 的 RegisterModel 步驟來註冊已訓練的模型,並將 ModelApprovalStatus 設定為 “PendingManualApproval”,以強制執行手動審核關卡。將 Pipelines 與 AWS CodePipeline 整合,或新增一個自訂的 Lambda,在獲得授權時透過 UpdateModelPackage 將 model_package 的版本狀態轉換為 “Approved”。為了監控偏移與偏差,應結合使用 SageMaker Clarify 進行偏差/基準線分析,以及 SageMaker Model Monitor 進行持續的資料/標籤偏移偵測。使用 ClarifyProcessor (sagemaker.processing.ProcessingJob) 進行隨選的偏差評估,方法是將其指向離線儲存區的 Parquet 成品,或是由 Model Monitor 收集的串流樣本。
設計模式與權衡取捨
當訓練吞吐量和複雜的聯結很重要時,請選擇離線優先架構:將大型時間窗口特徵彙總並持續保存到 S3 Parquet (透過 Glue/EMR/Glue Spark 任務),在 Glue Data Catalog 中將其編目,並使用 S3 字首和物件版本控制來對資料集進行版本管理。這種方法有利於可重現性和符合成本效益的儲存,但會增加提供新鮮特徵時的延遲。當需要低延遲特徵時,可將一個子集鏡像到 Feature Store Online (DynamoDB) 或快取層;其權衡之處在於需要額外的維運開銷來保持線上與離線儲存區的一致性。使用 Feature Store 內建的 BatchPutRecord 管線,或透過 Kinesis Data Streams + Lambda 進行串流擷取並寫入 Feature Store,以實現近乎即時的更新,同時仍保有離線的標準視圖。
對於迭代式實驗與生產環境吞吐量的權衡,具備快取功能的 SageMaker Pipelines 提供了一個顯著的優勢:在管線步驟中啟用 CacheConfig,如此一來,當輸入 (參數、資料校驗和) 未變更時,運算密集型轉換甚至訓練步驟都將被跳過。與重複佈建相同運算資源相比,這減少了連續執行時的啟動延遲。為了實現極低延遲的推論,您需要在成本和複雜性之間進行權衡:多模型端點或預佈並行可減少冷啟動的變異性但會增加成本;使用 Feature Store online 加上輕量級模型容器,則可將每次請求的協調作業降至最低。
演算法與預處理的選擇也存在權衡:內建的 XGBoost 非常適合表格式詐欺偵測任務,並提供 scale_pos_weight 來處理類別不平衡問題而無需重新取樣,這在維運上較為輕量。然而,帶有嵌入的深度模型能更優雅地處理高基數類別變數,但需要更多的基礎設施和特徵管線。盡可能使用自動化轉換:SageMaker Data Wrangler 和 Glue DataBrew 提供可視化、可重複的轉換 (插補、正規化、重新取樣),並能將流程匯出為指令碼或匯出至 Feature Store,從而減少工程時間。
常見的陷阱與決策標準
一個常見的錯誤是沒有對齊訓練和服務的轉換。應將轉換參數 (scalers、encoders) 與模型一起儲存,或存放在 Feature Store 中,這樣線上的預處理才能與訓練時完全相同。另一個陷阱是,對高基數類別進行 one-hot encoding 會導致特徵維度過高;應優先考慮使用 embeddings、hashing 或目標頻率編碼,並透過交叉驗證且能防止洩漏的程序來驗證這些方法。安全性錯誤也很常見:當在敏感的 S3 資料上進行訓練時,應強制使用 SSE-KMS (KmsKeyId),使用 S3 儲存貯體政策和 IAM 角色 (sagemaker.amazonaws.com principal) 來限制存取,並將訓練任務放在 VPC 中,同時使用 S3 VPC Gateway 端點,這樣資料就不會經過公用網際網路傳輸。
在 Glue 任務驅動的 ETL 與 SageMaker Processing/Data Wrangler 之間做決定時,需評估頻率和複雜性:Glue 專為跨多個來源、排程化、可擴展的 Spark ETL 進行了優化,並與 Glue Data Catalog 整合;Data Wrangler 和 SageMaker Processing 則適合快速實驗,並可直接匯出到 Feature Store 或訓練任務。對於異常偵測,若要對時間序列資料進行自動化的統計異常偵測且無需繁重的 ML 維運,請使用 Amazon Lookout for Metrics;但若需要可自訂、具備資料血緣感知能力的資料品質檢查,並能將指標饋送到儀表板,則應選擇在 Glue 中運行的 Deequ。
實務問題:使用案例情境
指定公司:FinEdge
FinEdge 正在建立一個詐欺偵測服務,該服務必須從 Amazon S3 中的每日批次交易日誌,以及儲存在地端 MySQL 中的客戶資料來訓練模型。資料必須保持加密和隔離;模型版本在部署到生產環境前需要手動批准;模型必須能進行隨選的偏差和漂移評估;推論需要低延遲的特徵查詢。
擷取與集中化:使用 AWS DMS 執行初始的完整載入和異動資料擷取 (CDC) 複寫,將地端的 MySQL 資料以 Parquet 檔案格式複製到 S3 登陸區。設定 DMS 的 S3 目標設定,並確保 JDBC 來源使用 SSL。使用 Glue Crawler 來註冊 S3 交易日誌和 DMS 產生的 Parquet 客戶資料到 Glue Data Catalog 中。設定 Glue 任務參數:GlueVersion 3.0、WorkerType G.2X、NumberOfWorkers 需適合每日的資料量,並啟用 JobBookmarks 以進行增量執行。
特徵工程與儲存:在 Glue 中編寫 Spark 轉換,或使用 SageMaker Data Wrangler 進行互動式的特徵迭代和匯出。將確定性的聚合特徵以 Parquet 格式持久化到 S3,並使用 CreateFeatureGroup 建立一個 SageMaker Feature Store 的 FeatureGroup,指定 FeatureDefinitions、RecordIdentifierFeatureName=“transaction_id”、EventTimeFeatureName=“event_time”、包含 EnableOnlineStore=True 的 OnlineStoreConfig,以及指向標準資料湖的 OfflineStoreConfig S3Uri 和用來連結 Glue 表格的 DataCatalogConfig。透過 BatchPutRecord 進行批次載入,並透過 PutRecord 進行交易式更新。
訓練與模型註冊:使用 SageMaker Pipelines 進行預處理、訓練和註冊。包含一個 RegisterModel 步驟,將模型註冊到一個 ModelPackageGroupName 中,並將 ModelApprovalStatus 設為 “PendingManualApproval”。串接一個 AWS CodePipeline 的手動批准動作,或使用 SageMaker API UpdateModelPackage 將已批准的套件狀態更新為 “Approved”。對於類別不平衡問題,根據在基線統計中計算出的類別比例來設定 XGBoost 的超參數 “scale_pos_weight”,以避免重採樣的複雜性。
治理、監控與隨選檢查:使用 SageMaker Clarify 搭配 ClarifyProcessor 來建立基線,以計算偏差指標並將基線儲存到 S3/FeatureStore 離線儲存區。使用 CreateMonitoringSchedule 部署 Model Monitor 以監控資料/特徵漂移;若要進行隨選的偏差或漂移評估,可以透過程式化方式執行 ClarifyProcessor 或 StartMonitoringSchedule,以分析最近捕獲的流量或線上儲存區的快照。將監控輸出儲存到 S3,並透過 QuickSight 儀表板來呈現異常。使用 SSE-KMS 保護 S3,透過具備最低權限的 IAM 角色限制存取,並將訓練和推論放置在 VPC 中,同時使用 S3 VPC 端點。
AWS 理由:此方法使用 Glue 和 DMS 透過 Glue Data Catalog 實現可擴展、可稽核的資料擷取和中繼資料管理;使用 SageMaker Feature Store 提供一致的線上/離線特徵和低延遲查詢;使用 SageMaker Pipelines 和 Model Registry 以最少的維運開銷來控制模型生命週期,並內建對手動批准的支援;使用 Clarify 和 Model Monitor 提供隨選和持續的偏差/漂移分析。這個組合保留了加密隔離 (SSE-KMS, VPC endpoints),透過使用託管服務來減少資料擷取和特徵管理的工程工作,並強制執行可重現、可稽核的機器學習產物。
所有領域 · 模型訓練與超參數優化 →
練習這些題目 → · 在 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.
通過考試 →