SageMaker 訓練 job 是 AWS 上模型開發的運作單元,在 MLA-C01 中是 Domain 2(ML 模型開發,26%)真正的核心所在。Domain 2 Task 2.1(「選擇建模方法」)和 Task 2.2(「訓練和精煉模型」)共同測試你是否能第一次就正確設定訓練 job——instance 類型、輸入模式、超參數、checkpointing、Spot 設定、指標發送——以及在失敗時如何恢復。考試的視角是 ML 工程師的:你不需要推導 XGBoost 的分裂尋找公式,但你需要知道 XGBoost 的 objective 超參數因使用案例而不同、Pipe mode 並非適用於所有演算法,以及 Managed Spot Training 在沒有 checkpoint 路徑的情況下會靜默失敗。
本指南是 SageMaker 訓練 jobs 從工程師視角出發的操作手冊。它走過 Estimator 物件、內建演算法目錄、輸入模式取捨、成本節省槓桿(Spot、warm pools)、instance 選型矩陣,以及把一次性訓練執行與可重現 MLOps 管線區分開來的實驗追蹤規範。自始至終,重點放在 ML 工程師必須擁有的內容——管線友善的 job 設定、容錯重啟、成本可預測性和乾淨的部署交接。
什麼是 SageMaker 訓練 Job?
SageMaker 訓練 job 是一個託管計算任務,它從 S3 拉取訓練資料、在一個或多個選定容器 image 的 EC2 instance 上實例化、對資料執行訓練腳本或內建演算法、把指標和日誌捕獲到 CloudWatch,並把產生的模型文件寫回 S3。Job 是完全託管的——你不佈建 instance、不修補它們、不清理它們。你只為訓練 job 執行的秒數付費。訓練 job 是所有 SageMaker 更高層次抽象(Pipelines、Automatic Model Tuning、Experiments、Pipelines steps)建立在其上的原子單元。
為何 MLA-C01 大量測試訓練 Jobs
訓練 jobs 處於 ML 開發和基礎設施工程的交叉點。MLA-C01 考試建立在這個交叉點上:你會看到描述訓練緩慢、訓練昂貴或部分失敗的題幹,你必須找出修復問題的設定旋鈕。知道 File mode 在訓練前把所有資料預載到 instance 卷(大型資料集啟動緩慢)、Pipe mode 串流資料(啟動更快但演算法支援有限),或 FastFile mode 帶 POSIX 語義的懶加載(許多情況下兩者兼具)是考試測試的知識類型。知道 XGBoost 是正確的表格演算法、BlazingText 是正確的文字嵌入演算法,是考試依賴的匹配題模式。
SageMaker 訓練 Job 生命週期
訓練 job 經過一個定義的生命週期:InProgress(啟動中和執行中)、Completed(成功)、Failed(錯誤)、Stopping/Stopped(手動或自動停止)。在內部,生命週期更細粒度:instance 佈建、容器 image 拉取、資料下載(File mode)或串流設定(Pipe)、訓練執行、模型文件上傳、instance 拆除。每個階段都有計費影響——File mode 啟動時間是計費的;Pipe mode 啟動更快,對大型資料集省錢;warm pools 完全消除迭代實驗的佈建時間。
白話文解釋 SageMaker Training Jobs
訓練 jobs 與部署、管線和 notebook 混在一起。三個具體類比清晰地劃定邊界。
類比一 — 工業廚房的訂單票
想像一家高端工業廚房用訂單票驅動工作流程。訓練 job 是一張訂單票:它列出食譜(演算法或訓練腳本)、食材(S3 輸入資料通道)、要使用的廚房站(instance 類型——高溫用燃氣爐,精準用電磁爐,長時間慢煮用慢煮鍋)、烹飪時間和溫度設定(超參數),以及完成菜餚的擺盤位置(輸出 S3 路徑)。
Estimator 物件就是訂單票本身——一個捕獲廚房每個選擇的結構化物件。內建演算法容器是預備好所有醬料和調味的站台(XGBoost 站台、BlazingText 站台)。Bring-Your-Own-Container 路徑是把你自己的可攜式爐台帶進廚房。Managed Spot Training 是預約便宜的夜班站台,隨時可能被更高優先級的訂單徵用——你節省 70% 到 90% 的站台費用,但必須把你的菜放在貼好標籤的保鮮盒裡(checkpoint),以便在被打斷時能在不同的站台繼續。SageMaker warm pools 是讓站台保持熱鍋預熱,等待下一張相同類型的訂單票,每張票省去 15 分鐘的預熱時間。SageMaker Experiments 是主廚的筆記本,追蹤每張訂單、每個配方變化、每個擺盤結果,讓日後的副廚能重現最佳菜餚。
類比二 — 建設公司的工程訂單
想像一家建設公司用工程訂單運作。訓練 job 是一個工程訂單——按特定規格建造一個特定結構。Estimator 是工程訂單文件,列出藍圖(演算法)、材料場(S3 輸入通道)、工程隊規模和設備(instance 類型和數量)、時程和里程碑(超參數和停止條件)以及完成結構的倉庫(S3 輸出)。
Instance 類型選擇對應建築設備:ml.m5 系列是通用皮卡,ml.c5 是計算密集型工作的高 CPU 混凝土攪拌機,ml.r5 是記憶體密集型資料集的重型平板車,ml.p3/p4d/p5 是深度學習訓練的重型起重機(NVIDIA GPU),ml.g4dn/g5 是推理和輕量訓練的中等成本 GPU,ml.inf1/inf2 是專用的 AWS Inferentia 晶片。選錯設備是典型的工程失誤——用起重機遞一根釘子(GPU instance 用於表格 XGBoost)浪費金錢,而用皮卡舉鋼樑(CPU instance 用於深度學習訓練)永遠做不完。
Managed Spot Training 是按 30% 到 70% 折扣雇用的日工,但可能在中途被更高薪的工地挖走——你省了真實的錢,但必須每到一個里程碑就拍照(checkpoint)保護工作,讓新工人可以從最後的照片繼續。「我們設定了 Spot 來省錢但訓練永遠完不成」的正確診斷永遠是「訓練腳本沒有把 checkpoint 寫入 /opt/ml/checkpoints」——這是 MLA-C01 考試上被引用最多的初學者錯誤。
類比三 — 科學實驗室的實驗執行
想像一個製藥研究實驗室,每個實驗必須可重現且可審計。訓練 job 是一次實驗執行——一種特定化合物、一條特定劑量曲線、一種特定細胞株。Estimator 是實驗方案文件。內建演算法是你信賴而無需重建的已驗證分析套件。Script mode 中的訓練腳本是在標準實驗設備上的自訂方案。BYOC 是帶入標準實驗室沒有的獨特裝置。
SageMaker Experiments 是實驗室資訊管理系統(LIMS)——每次執行獲得唯一 ID,每個指標(準確率、損失、自訂 KPI)對該 ID 被捕獲,每個輸入和輸出文件連結到該 ID,一年後新的研究人員可以查出確切的化合物、確切的細胞株、確切的結果。沒有 Experiments,訓練是口耳相傳——研究人員記得好結果但無法證明如何重現。有了 Experiments,訓練是科學。MLA-C01 考試設置正確答案是「使用 SageMaker Experiments 追蹤這個」的題幹,專門因為 Experiments 解決了考試期待每個 ML 工程師認識的可重現性問題。
SageMaker Estimator — 工程師的設定介面
什麼是 Estimator
Estimator 是捕獲訓練 job 每個參數的 Python(或 boto3)物件。SDK 的 Estimator 類(或其框架子類 XGBoost、TensorFlow、PyTorch、MXNet、SKLearn、HuggingFace)捆綁了:容器 image URI、訓練 job 的 IAM role、instance 類型和數量、S3 輸入資料通道、超參數字典、輸出路徑、卷大小、最大執行時間、use-spot 標誌、checkpoint S3 URI 以及 CloudWatch 和 SageMaker Experiments 的指標定義。
按重要性排列的 Estimator 設定旋鈕
role— 訓練 job 假設的 IAM 執行 role。Role 需要AmazonSageMakerFullAccess(或等效的緊縮範圍)加上輸入 S3 儲存桶和 KMS 金鑰的存取。instance_type— EC2 instance 類型。最常見的成本錯誤面;見下方的 Instance 選型章節。instance_count— instance 數量;大於 1 啟用分散式訓練。input_mode— File、Pipe 或 FastFile;見下方的輸入模式章節。hyperparameters— 演算法特定的旋鈕。XGBoost:objective、num_round、max_depth、eta。DeepAR:prediction_length、context_length、epochs。BlazingText:mode(Word2Vec 或 supervised)、vector_dim。use_spot_instances— 切換 Managed Spot Training;需要max_wait和checkpoint_s3_uri。max_run— 最大訓練時間(秒);SageMaker 在達到此限制時停止 job。metric_definitions— 從訓練 stdout 提取指標並發布為 SageMaker 指標用於 AMT 和 Experiments 的正規表達式模式。
Estimator 與 Pipeline Step 的映射
每個 Estimator 都可以被包裝在 SageMaker Pipelines 的 TrainingStep 中,讓訓練 job 成為可重現的管線節點。MLA-C01 考試把這個映射視為基本知識——管線協調問題假設 Estimator 是底層的訓練 job 描述符。
內建演算法深入解析
17 個內建演算法目錄是 MLA-C01 的核心材料。考試測試識別(哪個演算法匹配哪個使用案例)、基本設定(哪個超參數控制哪個行為)和操作特性(instance 類型、輸入模式相容性、支援的文件類型)。
XGBoost — 表格資料的預設選擇
XGBoost 是梯度提升決策樹,可用作 SageMaker 管理的開源 XGBoost 容器。使用案例:表格分類、表格迴歸、排名。優勢:原生處理缺失值、出色的開箱即用準確率、良好的並行化、成熟的生態系統。關鍵超參數:objective(binary:logistic、reg:squarederror、multi:softmax 等)、num_round(提升輪數)、max_depth、eta(學習率)、subsample、colsample_bytree。輸入格式:CSV 或 libsvm 或 Parquet(較新版本)。Instance 類型:CPU 對大多數 XGBoost 訓練 job 規模足夠且比 GPU 便宜;ml.m5 或 ml.c5 系列是大多數 XGBoost 訓練 job 的正確答案。
Linear Learner — 大規模快速線性
Linear Learner 是 SageMaker 為非常大的資料集和並行訓練最佳化的邏輯斯迴歸和線性迴歸引擎。使用案例:線性基準可接受的高維、高量分類或迴歸。優勢:原生跨多個 instance 訓練,支援 L1 和 L2 正規化,處理二元和多類分類。關鍵超參數:predictor_type(binary_classifier、regressor、multiclass_classifier)、num_classes、mini_batch_size。
k-Nearest Neighbors(k-NN)
SageMaker 的 k-NN 為基於相似性的分類、迴歸或檢索建立索引。使用案例:相似性搜尋、推薦基準、基於鄰域密度的異常偵測。索引類型:faiss-flat、faiss-IVFFlat、faiss-IVFPQ——考試相關,因為索引選擇影響準確率和延遲取捨。
BlazingText — 大規模詞嵌入和文字分類
BlazingText 有兩種模式。Word2Vec 模式在大型文字語料庫上訓練詞嵌入(詞的密集向量表示);當下游模型需要嵌入時很有用。監督分類模式訓練 fastText 式文字分類器;用於生產規模文字分類。優勢:高度最佳化的 GPU 訓練;大型語料庫幾小時而非幾天。
DeepAR — 時間序列預測
DeepAR 是為聯合預測許多相關時間序列而設計的自迴歸遞迴網路。使用案例:多 SKU 的需求預測、多 endpoint 的伺服器負載預測、能源預測。DeepAR 在資料集中的所有時間序列上學習全局模型,當有許多相關序列時通常優於逐序列 ARIMA 基準。關鍵超參數:prediction_length、context_length、epochs、mini_batch_size。考試把 DeepAR 與 Amazon Forecast 對比——DeepAR 是客戶想要管線整合時的 SageMaker 原生答案;Forecast 是客戶偏好無需管理 API 時的管理服務答案。
Object2Vec — 通用配對嵌入
Object2Vec 為物件對(用戶-物品、文件-文件、句子對)學習密集嵌入。使用案例:推薦、語義相似性、矩陣分解不足時的推薦系統暖啟動。
圖像分類、物件偵測、語義分割
三個基於傳統架構(ResNet、SSD、FCN)的視覺演算法。所有三個都透過 use_pretrained_model 超參數支援從 ImageNet 預訓練權重的遷移學習。
Random Cut Forest — 異常偵測
Random Cut Forest 是用於 streaming 和批次資料的無監督異常偵測。「在沒有標記資料的情況下偵測時間序列流中的異常」的正確答案。與 Kinesis Analytics 整合用於 streaming。
IP Insights — IP-實體異常偵測
IP Insights 學習 IP 地址和實體(用戶、帳戶)之間的關聯,標記不尋常的配對。用於偵測憑證濫用和帳戶接管。
Factorization Machines、Neural Topic Model、LDA、K-means、PCA、Sequence-to-Sequence
其餘的內建演算法涵蓋稀疏分類(Factorization Machines)、主題建模(LDA、NTM)、聚類和降維(K-means、PCA),以及 seq2seq(翻譯、摘要——對新建構通常被基礎模型取代)。
根據考試題幹的資料形狀而非演算法複雜度,把演算法與使用案例匹配。 表格結構化資料 → XGBoost。帶許多相關序列的時間序列 → DeepAR。詞嵌入或大規模文字分類 → BlazingText。配對嵌入(用戶-物品、句子對)→ Object2Vec。圖像分類 → Image Classification(帶 use_pretrained_model=True 用於遷移學習)。無標記的異常偵測 → Random Cut Forest。MLA-C01 考試的匹配題獎勵這種直接的形狀到演算法映射;用自訂架構過度思考是錯誤答案陷阱。
訓練輸入模式 — File、Pipe、FastFile
輸入模式是成本和速度最高價值的旋鈕之一,也是最常測試的操作細節之一。
File Mode — 預下載
File mode 在開始訓練前把整個 S3 輸入資料集下載到訓練 instance 的 EBS 卷。優點:簡單,每個演算法和框架都支援,訓練腳本從本地路徑讀取。缺點:啟動時間與資料集大小成線性增長;大型資料集推高 EBS 卷要求;整個資料集必須放在 instance 的儲存上。
Pipe Mode — 透過命名管道串流
Pipe mode 透過 Linux 命名管道直接從 S3 把資料串流到訓練程序。優點:訓練幾乎立即開始(沒有完整下載),instance EBS 儲存不受資料集大小限制,廉價地支援非常大的資料集。缺點:不是每個演算法或框架都支援 Pipe mode(內建演算法通常支援;任意 BYOC image 可能不支援),資料格式必須是 RecordIO-protobuf 或 CSV,且不能隨機存取。
FastFile Mode — 帶 POSIX 語義的懶加載
FastFile mode 把 S3 掛載為 POSIX 式檔案系統;訓練腳本按路徑讀取文件;資料在首次存取時從 S3 懶加載。優點:對許多使用案例兩者兼具——啟動像 Pipe 一樣快,對演算法沒有像 File 一樣的限制,支援隨機存取模式。缺點:冷文件的首次存取延遲;總吞吐量取決於 S3 讀取模式。
在模式之間選擇
- 小型資料集(50 GB 以下),簡單訓練:File mode。
- 大型資料集(100 GB 以上),內建演算法帶順序讀取:Pipe mode。
- 大型資料集,框架程式碼帶隨機存取(PyTorch DataLoaders、TensorFlow
tf.data隨機洗牌):FastFile mode。 - 每個 worker 資料分片必須唯一的分散式訓練:帶 S3 鍵分片的 Pipe mode,或帶分片感知 DataLoader 的 FastFile。
Pipe mode 並非所有 SageMaker 訓練容器都普遍支援。 大多數內建演算法(XGBoost、Linear Learner、BlazingText、DeepAR)支援 Pipe mode;部分需要 File mode。自訂容器(BYOC)需要在入口點中明確處理 Pipe mode 的程式碼。如果考生的直覺是「對大型資料集永遠使用 Pipe mode 來節省時間」,他們將在考試設置帶有不支援 Pipe 的自訂容器題幹時被抓到。正確模式是:檢查演算法和容器相容性,對框架程式碼中的大型資料集預設用 FastFile mode,只有在演算法明確推薦時才使用 Pipe。
Managed Spot Training — 帶規範的成本節省
什麼是 Managed Spot Training
Managed Spot Training 在 EC2 Spot 容量上執行訓練 job。Spot instance 比 On-Demand 便宜 30% 到 90%,但當 AWS 需要收回容量時可以在兩分鐘通知後被中斷。SageMaker 在新的 Spot 容量上自動重啟被中斷的 job,如果你的訓練腳本寫入 checkpoint,新 instance 從最新的 checkpoint 繼續。
讓 Spot 安全的設定
三個 Estimator 參數一起:use_spot_instances=True、max_wait(包含 Spot 中斷和等待在內的總經過時間),以及 checkpoint_s3_uri(checkpoint 文件的 S3 路徑)。訓練腳本必須週期性地把 checkpoint 寫入本地路徑(慣例是 /opt/ml/checkpoints);SageMaker 把那個路徑同步到設定的 S3 URI;恢復時,SageMaker 把 S3 checkpoint 複製回本地路徑。
為何沒有 Checkpointing 的 Spot 靜默失敗
如果 use_spot_instances=True 但沒有設定 checkpoint,中斷就從頭重啟訓練——沒有進度恢復,費用積累,訓練在 max_wait 內從不收斂。考試設置症狀是「我們設定了 Spot 來省錢但訓練永遠完不成」,診斷是「訓練腳本沒有把 checkpoint 寫入 /opt/ml/checkpoints」的題幹。
Spot 何時不值得
Spot 長期省錢但增加總 job 持續時間的變異。對非常短的訓練 job(30 分鐘以下),每個 job 的中斷概率很低但相對影響很高。對工程師時間比 instance 成本更重要的延遲敏感迭代實驗,On-Demand 提供可預測的持續時間。對每次重啟需要重新下載幾十 GB 資料的非常大型資料集,重啟開銷可能超過 Spot 節省。
Spot 與分散式訓練
分散式訓練 jobs(多個 instance)對 Spot 中斷更敏感,因為失去一個 instance 會重啟整個叢集。緩解是積極的 checkpointing(每個 epoch 甚至子 epoch)以及接受分散式 Spot 訓練在持續時間上比單 instance Spot 有更多變異。
沒有 checkpoint 設定的 Managed Spot Training,對任何比平均 Spot 中斷間隔更長的訓練 job 在功能上是壞掉的。 MLA-C01 考試始終設置考生的 job 在 Spot 上執行、被中斷、從頭重啟、永遠完不成的題幹——正確答案永遠是「設定 checkpoint_s3_uri 並確保訓練腳本週期性地把 checkpoint 寫入 /opt/ml/checkpoints」。Spot 是適合超過 30 分鐘且原生支援 checkpointing 的訓練 jobs 的正確成本最佳化;對短 job 或未設計為中途恢復的訓練腳本是錯誤選擇。
Instance 選型 — CPU vs GPU vs Inferentia
訓練用 CPU Instance 系列
- ml.m5, ml.m6i — 通用,平衡的計算和記憶體;大多數 XGBoost、Linear Learner、scikit-learn 工作負載的正確答案。
- ml.c5, ml.c6i — 計算最佳化;當訓練是計算密集型且記憶體需求適中時。
- ml.r5, ml.r6i — 記憶體最佳化;當訓練演算法需要在記憶體中保持大型資料結構(k-NN 索引建構、大型特徵儲存)時。
訓練用 GPU Instance 系列
- ml.p3(V100), ml.p4d(A100), ml.p4de(A100 80GB), ml.p5(H100) — 深度學習的重型訓練 instance;圖像、視頻、大型 NLP、基礎模型訓練的正確答案。
- ml.g4dn(T4), ml.g5(A10G) — 入門級 GPU instance;適合較小的深度學習工作負載、遷移學習和推理。
專用硬體
- ml.trn1(Trainium) — AWS Trainium,專為深度學習訓練建造;transformer 訓練具成本效益。
- ml.inf1(Inferentia 1), ml.inf2(Inferentia 2) — 專用推理;不是訓練 instance。
Instance 選型經驗法則
- 帶內建演算法的表格資料(XGBoost、Linear Learner):CPU(ml.m5 或 ml.c5)。
- 深度學習:GPU;根據模型和資料集選型(小型用 ml.g4dn,中型用 ml.p3,大型用 ml.p4d/p5)。
- 分散式訓練:帶 EFA 網路的多 instance,用 ml.p4d.24xlarge 或 ml.p5.48xlarge。
- 成本意識的深度學習訓練:帶 PyTorch Neuron SDK 的 ml.trn1。
為何 Instance 選型是常見的考試陷阱
一個持續的題幹模式:「團隊在 ml.p3.2xlarge 上訓練 XGBoost 模型,發現 GPU 閒置」。正確答案是「切換到 CPU instance,因為 XGBoost 不受益於 GPU」;陷阱答案是「增大批次大小」或「啟用混合精度」。XGBoost on GPU 作為一個建構存在,但不是預設容器,大多數考生不需要它。
Warm Pools — 消除啟動時間
Warm Pools 的作用
SageMaker Managed Warm Pools 在訓練 jobs 之間讓底層訓練 instance 叢集在設定的 pool 中保持執行。下一個匹配 pool 的 instance 設定的訓練 job 跳過佈建和 image 拉取,在幾秒內開始,而非幾分鐘。對工程師每天用相同設定啟動幾十個訓練 job 的迭代實驗很有用。
設定 Warm Pools
Estimator 參數 keep_alive_period_in_seconds(1 到 3600 秒)在 job 完成後讓 instance 保持活躍。下一個帶匹配 instance 類型和數量的訓練 job 重用 warm pool。Warm pool instance 在 keep-alive 期間收取與等效 on-demand instance 相同的費用。
Warm Pools 何時省錢
Warm pools 節省的是時間,不是每 instance 小時的費用。對每天執行 20 個短訓練 job、每個有 5 分鐘佈建開銷的開發者,warm pools 節省 100 分鐘的工程師等待時間。Keep-alive 成本以 instance 小時支付,但被省去的啟動時間抵消。
SageMaker Experiments — 可重現性和比較
Experiments 捕獲的內容
SageMaker Experiment 是保存多個 Trials 的頂層容器;每個 Trial 保存多個 TrialComponents;每個 TrialComponent 代表一個步驟(訓練 job、processing job、transform job)。對每個 TrialComponent,Experiments 捕獲:輸入文件(資料的 S3 路徑)、參數(超參數)、輸出文件(模型、評估報告)、指標(準確率、損失、自訂 KPI)和來源 job ARN。
從 Estimator 追蹤
在 fit() 呼叫中設定 experiment_config 自動建立連結到訓練 job 的 Trial 和 TrialComponent 記錄。Estimator 的 metric_definitions 正規表達式模式從訓練 stdout 提取指標,Experiments 把它們捕獲為時間序列。
比較視圖
Experiments 的內建比較視圖顯示多個 trial 並排:超參數在欄位中,指標在欄位中,可排序和過濾。「我們執行了二十個超參數組合,需要選出最好的」的正確答案。
Experiments 與 Automatic Model Tuning
AMT 執行時,調整 job 中的每個訓練 job 成為一個 Trial 下的 TrialComponent;AMT 自動把目標指標寫入 Experiments。比較視圖成為 AMT 排行榜。
Experiments 與血緣追蹤
每個 TrialComponent 連結到 SageMaker ML Lineage Tracking,捕獲整個管線中輸入→流程→輸出的完整 DAG。用於審計和可重現性情境的正確答案。
SageMaker Experiments 是 MLA-C01 考試上「跨超參數追蹤和比較訓練執行」的標準答案。 Experiments 捕獲每個訓練 job 的超參數、輸入文件、輸出文件和指標,並透過 Trial → TrialComponent 層次結構連結它們。沒有 Experiments,訓練執行比較退化為試算表或自訂追蹤程式碼。有了 Experiments,比較是內建的,比較視圖成為 AMT 排行榜、模型 registry 晉升決策和監管可重現性文件的基礎。
超參數與指標發送
超參數如何到達容器
對內建演算法,在 Estimator 上設定的超參數落在容器內的 /opt/ml/input/config/hyperparameters.json 中。演算法從那裡讀取。對 script mode,超參數作為命令列引數傳遞給腳本(--epochs 10 --learning-rate 0.001)。
SageMaker 的指標定義
內建演算法原生發送帶預定義名稱的指標到 CloudWatch(validation:accuracy、train:rmse)。自訂訓練腳本必須把指標以與 metric_definitions 正規表達式模式匹配的格式輸出到標準輸出。範例:
metric_definitions = [
{"Name": "train:loss", "Regex": "train_loss: ([0-9\\.]+)"},
{"Name": "validation:accuracy", "Regex": "val_acc: ([0-9\\.]+)"}
]
腳本每批次輸出 train_loss: 0.234 到 stdout;SageMaker 的正規表達式捕獲值並把它以指標 train:loss 發布到 CloudWatch。AMT 的目標指標設定使用相同的正規表達式。
為何指標設定是常見的 Bug
如果正規表達式與腳本的實際 stdout 格式不匹配,CloudWatch 中沒有指標出現,AMT 找不到目標指標,調整 job 無法收斂。考試設置症狀是「AMT 執行了所有 100 個 job 但排行榜是空的」——診斷是指標正規表達式不一致。
訓練 Job 操作模式
管線友善的設定
對在 SageMaker Pipelines 內執行的訓練 jobs,Estimator 必須是確定性的——固定的 S3 輸入路徑(在管線執行時參數化)、固定的超參數(或管線參數)、固定的指標定義。避免在輸出路徑中硬編碼時間戳記;讓 SageMaker 從 job 名稱生成它們。
CloudWatch 日誌和除錯
每個訓練 job 把容器 stdout 和 stderr 寫入 CloudWatch 日誌群組 /aws/sagemaker/TrainingJobs,帶有以 job 命名的串流。對除錯失敗的 job,日誌串流是第一個查看的地方——大多數訓練 job 失敗(Python traceback、OOM 錯誤、權限錯誤)在 job 呈現 Failed 狀態之前就出現在那裡。
重試邏輯
訓練 jobs 在失敗時不自動重試,除非包裝在 Step Functions、EventBridge Pipes 或帶重試策略的 SageMaker Pipelines 中。對自動化再訓練管線,正確模式是帶 retry_policies 設定的 Pipelines step,而非 Estimator 層級的重試。
KMS 加密和 VPC 隔離
對受監管的工作負載:在 Estimator 上設定 output_kms_key 以加密模型文件;設定 subnets 和 security_group_ids 以在 VPC 內執行訓練;設定 encrypt_inter_container_traffic=True 用於分散式訓練;設定 enable_network_isolation=True 以完全封鎖訓練容器的出站網路存取(敏感資料的離線模式)。
訓練 Jobs 與內建演算法的常見考試陷阱
陷阱一 — Spot 沒有 Checkpoint
設定 use_spot_instances=True 而沒有 checkpoint 路徑。Job 每次中斷都從頭重啟。
陷阱二 — XGBoost 預設用 GPU
對表格工作負載預設用 GPU instance。XGBoost 通常在 CPU 上執行;GPU instance 浪費金錢。
陷阱三 — Pipe Mode 與自訂容器
假設 Pipe mode 適用於任何容器。自訂容器需要明確的 Pipe mode 處理程式碼。
陷阱四 — 忘記指標正規表達式定義
自訂訓練腳本把指標輸出到 stdout,但沒有 metric_definitions 正規表達式捕獲它們。AMT 和 Experiments 顯示空指標。
陷阱五 — 迭代開發不使用 Warm Pools
每天從冷啟動執行 30 個短訓練 job。Warm pools 以最低的額外成本每個 job 節省 5 到 15 分鐘。
陷阱六 — Forecast 足夠時使用 DeepAR
建構自訂 DeepAR 管線,而 Amazon Forecast 的管理 AutoML 可以無需模型管理地解決問題。
陷阱七 — 混淆 BlazingText 模式
BlazingText 有 Word2Vec 模式(無監督嵌入)和監督模式(文字分類)。在題幹脈絡中選錯模式是常見的匹配題陷阱。
陷阱八 — 小型表格資料用 Linear Learner
Linear Learner 為非常大的資料集最佳化。對小型表格資料,XGBoost 通常是更強的答案;Linear Learner 的優勢只在大規模時才顯現。
陷阱九 — Object2Vec vs Word2Vec 混淆
Object2Vec 嵌入配對(用戶-物品、文件-文件);Word2Vec(BlazingText)嵌入個別詞。提到「嵌入用戶和物品」的題幹指向 Object2Vec;提到「嵌入詞」的指向 BlazingText。
陷阱十 — 圖像分類不用預訓練
從頭訓練圖像分類(隨機初始化),而遷移學習可通過 use_pretrained_model 超參數獲得。浪費計算並產生比遷移學習更弱的結果。
必記訓練 Job 關鍵數字與事實
Estimator 核心參數
role、instance_type、instance_count、input_mode、hyperparameters- Spot:
use_spot_instances、max_wait、checkpoint_s3_uri - 限制:
max_run(最大訓練時間)、volume_size(EBS GB) - 網路:
subnets、security_group_ids、enable_network_isolation、encrypt_inter_container_traffic
內建演算法快速映射
- 表格結構化:XGBoost
- 大量線性:Linear Learner
- 帶多序列的時間序列:DeepAR
- 詞嵌入或大規模文字分類:BlazingText
- 配對嵌入:Object2Vec
- 視覺:Image Classification、Object Detection、Semantic Segmentation(帶
use_pretrained_model=True) - 異常:Random Cut Forest、IP Insights
輸入模式快速決策
- 小型資料集,簡單演算法:File mode
- 大型資料集,順序讀取,內建演算法:Pipe mode
- 大型資料集,帶隨機存取的框架程式碼:FastFile mode
Instance 系列快速決策
- 表格:ml.m5, ml.c5
- 記憶體密集:ml.r5
- 深度學習小型:ml.g4dn, ml.g5
- 深度學習中型:ml.p3
- 深度學習大型或分散式:ml.p4d, ml.p5
- 成本最佳化 DL 訓練:ml.trn1(Trainium)
Managed Spot Training 需要三個設定一起:use_spot_instances=True、max_wait 大於 max_run,以及 checkpoint_s3_uri 加上週期性把 checkpoint 寫入 /opt/ml/checkpoints 的訓練腳本。 缺少三者中任何一個都會破壞 Spot 訓練。MLA-C01 考試始終獎勵這種完整設定知識,而非表面的「Spot 省錢」答案。記住這個三元組;它是 Domain 2 上測試最多的單一成本最佳化細節。
MLA-C01 exam priority — SageMaker Training Jobs 與內建演算法 — MLA-C01 ML Engineer 學習筆記. This topic carries weight on the MLA-C01 exam. Master the trade-offs, decision boundaries, and the cost/performance triggers each AWS service exposes — the exam will test scenarios that hinge on knowing which service is the wrong answer, not just which is right.
FAQ — SageMaker Training Jobs 常見問題
Q1 — 為何我的 Spot 訓練 job 即使 Spot 號稱便宜也永遠完不成?
最常見的原因是缺少 checkpoint 設定。Spot instance 可以在兩分鐘通知後被中斷;SageMaker 在新的 Spot 容量上重啟 job,但如果你的訓練腳本沒有把 checkpoint 寫入 /opt/ml/checkpoints 且你沒有在 Estimator 上設定 checkpoint_s3_uri,新 instance 每次都從頭開始。對有頻繁中斷的 4 小時訓練 job,這意味著 job 永遠沒有淨進度。修復方法:設定 checkpoint_s3_uri,修改訓練腳本在每個 epoch(或對非常長的 epoch 在 sub-epoch)寫入 checkpoint,修改腳本偵測現有 checkpoint 並從它恢復,確保 max_wait 明顯大於預期的 max_run。修復後,Spot 訓練對任何時長的 job 都是可靠的。
Q2 — 如何為我的訓練資料在 File、Pipe 和 FastFile 輸入模式之間選擇?
對小型資料集(50 GB 以下)使用 File mode,簡單性值得啟動成本——每個演算法和框架都支援 File mode。對大型資料集(100 GB 到多 TB)且演算法或框架明確支援(大多數內建演算法支援;自訂容器需要驗證)且資料存取模式是順序的,使用 Pipe mode。對訓練程式碼使用隨機存取模式(帶洗牌的 PyTorch DataLoader、帶隨機採樣的 TensorFlow tf.data)的大型資料集,使用 FastFile mode——FastFile 提供帶懶 S3 支援加載的 POSIX 語義,是大型資料上框架程式碼的預設最佳選擇。MLA-C01 考試設置資料大小和演算法脈絡決定正確模式的題幹;對每個 job 都預設用單一模式是常見的考生錯誤。
Q3 — 我應該使用 SageMaker 內建 XGBoost 還是在 script mode 中撰寫自己的 XGBoost 腳本?
對標準的 XGBoost 訓練 job——從 S3 讀取 CSV、用超參數訓練、輸出模型——內建 XGBoost 容器是正確答案。它為 SageMaker 預先調整、支援 Pipe mode、與 AMT 整合,且不需要腳本。對帶自訂資料前處理、自訂特徵工程或非瑣碎預訓練驗證的訓練 job,script mode 中的 XGBoost 框架容器是正確答案——你用開源 XGBoost 程式庫撰寫 Python 腳本,SageMaker 提供框架容器,你保留 SageMaker 訓練 job 的所有運維優勢。兩條路徑都使用相同的 XGBoost 程式庫;差異在於你控制訓練腳本還是接受內建演算法的介面。
Q4 — 如何追蹤和比較數百次訓練執行?
使用 SageMaker Experiments。在每個 fit() 呼叫上設定 experiment_config,帶有實驗名稱、trial 名稱和元件顯示名稱。SageMaker 自動捕獲超參數、輸入文件、輸出文件和指標。SageMaker Studio 的 Experiments 標籤提供比較視圖,把執行顯示為列,超參數和指標為欄,可排序和過濾。對程式化比較,SageMaker SDK 的 Experiment.list_trials() 和 TrialComponent.list_metrics() 提供結構化存取。沒有 Experiments,考生退化為試算表並丟失血緣;有了 Experiments,比較和可重現性內建於平台中。MLA-C01 考試始終獎勵「比較 50 個超參數組合」題幹的 Experiments 答案。
Q5 — SageMaker warm pools 何時有意義,成本如何?
Warm pools 節省工程師時間,不是 instance 小時。設定方法:在每個 Estimator 上設定 keep_alive_period_in_seconds(最多 3600 秒)。訓練 job 完成後,SageMaker 在設定的期間保持 instance 叢集溫熱。帶匹配 instance 類型和數量的後續訓練 job 重用溫熱叢集,跳過佈建(通常 3 到 8 分鐘)和 image 拉取。成本:在 keep-alive 期間你支付與訓練期間相同的每 instance 小時費率。Warm pools 適合迭代開發工作流程——工程師每天啟動 20 個短訓練 job 節省 100+ 分鐘等待時間。Warm pools 不適合每天執行一次的產品再訓練管線;keep-alive 成本超過節省。MLA-C01 考試在迭代實驗脈絡中設置 warm pool 問題。
Q6 — 如何設定指標發送,讓 AMT 和 Experiments 捕獲我的自訂訓練腳本的指標?
兩個部分。第一,訓練腳本必須把指標以可解析格式輸出到標準輸出——例如 train_loss: 0.234 或 epoch=5 val_accuracy=0.87。第二,Estimator 必須宣告 metric_definitions 為 {Name, Regex} 字典列表,其中正規表達式把數值捕獲為第一個正規表達式群組。範例:{"Name": "validation:accuracy", "Regex": "val_acc: ([0-9\\.]+)"} 匹配 val_acc: 0.87 並把 0.87 捕獲為指標值。SageMaker 即時掃描 stdout,把捕獲的值發布到 CloudWatch 和 Experiments。AMT 使用相同的 metric_definitions 作為目標指標。最常被引用的 bug 是正規表達式-stdout 不一致——腳本輸出 Validation accuracy = 0.87 而正規表達式期待 val_acc:,捕獲不到任何東西,破壞 AMT。在啟動長 job 之前總要對實際訓練 stdout 測試正規表達式。
Q7 — 我可以在 VPC 中沒有網路存取的情況下執行 SageMaker 訓練 job 嗎?
可以——在 Estimator 上設定 subnets、security_group_ids 和 enable_network_isolation=True。啟用網路隔離後,訓練容器沒有出站網際網路存取;SageMaker 透過 VPC endpoints 中介 S3 存取。對僅 VPC 操作,VPC 需要 S3 gateway endpoint、SageMaker interface endpoint、ECR interface endpoints(用於容器 image 拉取)和 CloudWatch Logs interface endpoint。KMS 加密金鑰(output_kms_key、volume_kms_key)和容器間流量加密(encrypt_inter_container_traffic=True)完成受監管工作負載的安全姿態。MLA-C01 考試設置需要 VPC 隔離的安全支柱題幹;正確答案組合所有四個(網路隔離、VPC 子網路、KMS、容器間加密),而非其中任何單一個。
延伸閱讀 — SageMaker Training Jobs 官方 AWS 文件
權威的 AWS 來源包括:SageMaker Developer Guide(尤其是 Train a Model 章節、內建演算法參考、Managed Spot Training 文件、輸入模式參考、Warm Pools 文件和 Experiments 文件)、SageMaker Python SDK 參考(Estimator 類和框架子類),以及 XGBoost、Linear Learner、BlazingText、DeepAR 和 Object2Vec 的演算法特定文件頁面。AWS Well-Architected Machine Learning Lens 涵蓋應用於訓練 jobs 的運維卓越支柱。AWS re:Invent 關於 SageMaker 訓練的議題傾向於包含關於 Spot、分散式訓練和 Experiments 的深入解析。AWS Machine Learning Blog 有許多「訓練最佳化」文章,反映 MLA-C01 題幹模式,SageMaker Examples GitHub repository 託管數百個展示訓練 job 設定模式的可運行 notebook。