Vertex AI 自訂訓練:容器、分散式訓練、GPU 與 TPU

Vertex AI 自訂訓練是把訓練程式打包成容器,交給 Agent Platform 開機器、裝 GPU 或 TPU、跑完收機器。

第 14 篇說,AutoML 和 BigQuery ML 做不到的事(自訂架構、特定框架、幾十張 GPU)就走自訂訓練。這篇把它拆開:程式怎麼打包、機器怎麼選、多台怎麼分工、超參數怎麼自動調、要花多少錢。

一樣用有 2,000 間分店的連鎖飲料店當例子(教學假設):研究團隊用 PyTorch 寫好了「猜你想點」推薦模型,有自訂的損失函數,資料是 50 萬名會員三年的交易紀錄,放在 Cloud Storage。現在要把它放到雲端上跑。

Vertex AI 自訂訓練流程:寫訓練程式、打包成容器推到 Artifact Registry、建 CustomJob 指定機型 GPU 和台數、Agent Platform 開機器跑完收機器、模型存到 Cloud Storage 再註冊到 Model Registry

為什麼你需要知道

  • GPU 很貴,選錯更貴:一張高階 GPU 一小時的租金,比一台普通機器一天還貴。機型選錯、該用 Spot 沒用、4 張 GPU 跑出 1 張的效果,錢就這樣燒掉
  • 這是「自己煮」的那條路:第 14 篇的比喻,Google 只出爐子。爐子有幾種、怎麼開、幾個人一起炒,都要自己決定
  • 筆記裡的名稱全改了:Vertex AI Training 現在叫 Agent Platform Managed Training,底下分無伺服器訓練和訓練叢集;更早的 AI Platform Training 已經在 2025 年 4 月關閉
  • 證照必考:PMLE 考試指南第 3.2 節「用不同 SDK 訓練模型(Agent Platform 自訂訓練、GKE 上的 Kubeflow…)」「排除訓練失敗」「超參數調校」,第 3.3 節「評估 CPU、GPU、TPU」「GPU 和 TPU 上的資料平行與模型平行分散式訓練」。整個第 3 區佔 21%,是最大的一區

先搞懂:自訂訓練是什麼

白話是什麼

自訂訓練(custom training):你自己寫訓練程式,用任何框架;Agent Platform 負責開虛擬機器、裝加速器、把你的程式跑起來、跑完把機器收掉,只收用到的時間。

虛擬機器(VM)是雲端上租來的一台電腦,站上有一篇 Compute Engine 是什麼。

比喻

自己煮,但廚房是租的、按小時算。你帶著食譜(程式)和食材(資料)進去,想用幾個爐(GPU)、幾間廚房(機器)自己說,煮完走人,只付用到的時間。

來龍去脈

官方容器總覽描述的流程:

  1. 用你選的框架寫訓練程式
  2. 決定用預建容器還是自訂容器
  3. 資料放在 Agent Platform 讀得到的地方(Cloud Storage、Bigtable),跟訓練同一個專案和區域
  4. 建好 Docker 映像檔,推到 Artifact Registry
  5. 建自訂工作(CustomJob)送出
  6. Agent Platform 依設定開一台或多台機器(叫訓練執行個體),跑你的映像檔
  7. 成功或遇到無法復原的錯誤,就停掉所有程序、清掉資源

名稱的演變:最早叫 AI Platform Training(舊題庫還看得到,官方淘汰清單寫 2025 年 4 月 7 日關閉)→ Vertex AI custom training → 2026 年 4 月起叫 Gemini Enterprise Agent Platform Managed Training,底下分兩種跑法(第 6 節)。

為什麼要學

這是 PMLE 第 3 區的主軸,也是「能不能真的把一個研究模型放上雲端」的分水嶺。


1. 容器:預建的還是自己做

白話是什麼

容器(container):把程式和它需要的所有東西(框架、函式庫、系統工具)打包成一個標準箱子,到哪台機器都能原樣跑。Docker 是做這種箱子最常用的工具,箱子的設計圖叫 Dockerfile,做好的箱子叫映像檔(image)。站上有一篇容器是什麼。

比喻

出國比賽的行李箱。裡面裝好球拍、球鞋、水壺,到了場地打開就能上場,不用在當地到處找器材。

預建容器:Google 幫你裝好了

Google 提供預建容器,常用框架都有:TensorFlow、PyTorch、scikit-learn、XGBoost,分 CPU 和 GPU 版本,映像檔名稱像 pytorch-gpu.2-x、tf-gpu.2-17、xgboost-cpu.2-1。

用預建容器時,你不用碰 Docker,只要把訓練程式打包成 Python 套件放到 Cloud Storage,建工作時指定「用哪個預建容器」就好。

自訂容器:四種情況才需要

官方容器總覽列的好處,反過來就是「什麼時候要自己做」:

情況例子
預建容器沒有你要的框架或版本要用 tf-nightly 這種最新版、要用 JAX
有非 ML 的相依套件或二進位檔程式要呼叫某個 C++ 工具
想要更快啟動相依套件事先裝好,不用每次啟動再裝
用任意框架做分散式訓練預建容器以外的框架要多台跑

套回飲料店:研究團隊的 PyTorch 模型如果只用標準套件,預建的 PyTorch GPU 容器就夠;如果用了特殊的推薦系統函式庫,就要自訂。

做 GPU 容器有一個特別要求:官方建議用 nvidia/cuda 當基底映像檔,裡面已經裝好對應版本的 CUDA 和 cuDNN(NVIDIA 讓程式能用 GPU 的兩個基礎套件),環境變數也設好了。

自訂容器的流程

官方步驟:寫 Dockerfile(裝相依套件、複製訓練程式、設定進入點)→ 本機 build → 推到 Artifact Registry(Google 的映像檔倉庫,可以想成放 Docker 箱子的雲端儲物櫃)→ 建工作時用這個映像檔的網址。

為什麼要學

考題看到「預建容器不支援的框架」「特定版本」「非 ML 相依」就是自訂容器;看到「標準 TensorFlow/PyTorch 程式、最少設定」就是預建容器。


2. CustomJob:告訴 Google 要幾台、什麼機器

白話是什麼

自訂工作(CustomJob)是一張「訂單」,寫清楚:用哪個容器、幾台機器、每台什麼規格、幾張 GPU、跑多久要停。

官方文件的核心欄位是 WorkerPoolSpec(工作池規格):

欄位白話飲料店的推薦模型
machineSpec.machineType機型(CPU 幾核、記憶體多大)n1-standard-16
machineSpec.acceleratorTypeGPU 或 TPU 的種類NVIDIA_TESLA_T4
machineSpec.acceleratorCount每台機器幾張2
replicaCount這種機器開幾台1
containerSpec.imageUri 或 pythonPackageSpec自訂容器的映像檔,或預建容器+Python 套件預建 PyTorch GPU 容器
scheduling.timeout最多跑多久12 小時

用指令建一個工作長這樣:

gcloud ai custom-jobs create \
  --region=asia-east1 \
  --display-name=drink-recsys \
  --worker-pool-spec=machine-type=n1-standard-16,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=2,executor-image-uri=asia-docker.pkg.dev/vertex-ai/training/pytorch-gpu.2-4.py310:latest,local-package-path=.,script=train.py

程式裡拿得到的環境變數

訓練程式不用寫死路徑,Agent Platform 會給三個環境變數(程式啟動時可以讀到的設定值):

變數用途
AIP_MODEL_DIR訓練完的模型存這裡(Cloud Storage 路徑),之後上傳到 Model Registry 會直接用
AIP_CHECKPOINT_DIR存檢查點(訓練中途的進度存檔)
AIP_TENSORBOARD_LOG_DIR存 TensorBoard 的紀錄(第 22 篇)

資料怎麼讀,第 13 篇講過:Cloud Storage 會掛在 /gcs/ 底下。


3. CPU、GPU 還是 TPU:怎麼選

三種硬體的白話

  • CPU:電腦的大腦,什麼都會做,但同時只能做幾件事
  • GPU:原本畫遊戲畫面的晶片,擅長同時做幾千個簡單算術,NVIDIA 做的最常見
  • TPU:Google 自己設計、專門做機器學習的晶片。官方簡介說它專門做「大型矩陣運算」,有晶片上的高頻寬記憶體,可以接成一組(叫 slice)擴大規模。程式要先經過 XLA 編譯器翻成 TPU 能跑的機器碼

矩陣運算可以想成「一大批數字同時相乘相加」,神經網路的每一層就是在做這件事。

官方的選擇指南

Cloud TPU 簡介直接列了三種硬體各適合什麼:

適合的情況
CPU快速原型、需要最大彈性;小模型、訓練不久;很多自訂 C++ 運算;被 I/O 或網路頻寬卡住的模型
GPU有很多自訂 PyTorch/JAX 運算、要部分在 CPU 跑;用到 TPU 不支援的 TensorFlow 運算;中大型模型、較大的批次
TPU以矩陣運算為主;主訓練迴圈裡沒有自訂運算;要訓練幾週幾個月;大模型、大批次;進階推薦和排序系統常見的超大嵌入

TPU 不適合:需要頻繁分支或大量逐元素運算的程式、需要高精度算術、主訓練迴圈有自訂運算。

套回飲料店:推薦模型有自訂損失函數(自訂運算)、用 PyTorch,而且不是訓練幾週的規模 → GPU。要是改成標準架構、資料大到要訓練好幾天,才考慮 TPU。

CPU、GPU、TPU 怎麼選:CPU 適合快速原型和小模型,GPU 適合有自訂運算的中大型模型,TPU 適合矩陣運算為主、沒有自訂運算、要訓練數週的大模型和超大嵌入;TPU 不適合分支多、高精度、自訂運算

GPU 有哪些、怎麼搭機型

官方運算資源文件列的 GPU(2026 年 10 月):從入門的 T4、L4,到 V100、A100(40GB/80GB),再到 H100、H200、B200、GB200 這些訓練大型語言模型用的。P100 在 2026 年 9 月 15 日停止支援。

三個規則:

  • GPU 要配對的機型:A2、N1 或 G2 系列。例如 A100 配 a2-highgpu-1g(1 張)到 a2-megagpu-16g(16 張),L4 配 g2-standard-*,T4、V100 配 n1-*
  • 張數有固定選項:T4 可以 2 張或 4 張,不能 3 張
  • 機型要撐得起 GPU:官方的例子是 n1-standard-32(32 核、120 GB 記憶體)配 V100 至少要 4 張,因為每張 V100 最多只能搭配 12 核、76 GB,2 張不夠、3 張不行
  • 機型太小(例如 n1-highmem-2)配 GPU,CPU 不夠可能連日誌都寫不出來

TPU 的設定方式

TPU 在自訂訓練裡只能用一個工作池、一個副本。各世代的設定:

世代機型備註
v2、v3cloud-tpu+TPU_V2/TPU_V3,count 8(單顆)或 32 的倍數(Pod)第 13 篇講的「8 核心」就是這個
v5ect5lp-hightpu-1t/4t/8t+tpuTopology需要 JAX 0.4.6+、TensorFlow 2.15+、PyTorch 2.1+
v6ect6e+tpuTopology需要 Python 3.10+
7xtpu7x-standard-4t+tpuTopology需要 Python 3.12+

控制費用的三個開關

官方運算資源文件開頭就講「管理成本與可用性」:

開關白話代價
Spot VM用 Google 多出來的閒置機器,大幅折扣隨時可能被收回,程式要會存檢查點、重啟後接著跑
預留(Reservation)先訂好機器,保證有訂了就算錢
Dynamic Workload Scheduler要 GPU 的工作先排隊,等有空再跑不能馬上開始

Spot 和 Dynamic Workload Scheduler 都是在 CustomJob 的 scheduling.strategy 設定。


4. 分散式訓練:多台一起跑

白話是什麼

一台機器、一張 GPU 跑太慢,就讓很多台一起跑。分兩種分法:

資料平行(data parallelism)模型平行(model parallelism)
白話每台拿到完整的模型,但各算不同的資料模型太大一台裝不下,切成幾塊放不同機器
比喻四個廚師各做同一道菜,食材分四份一道菜太複雜,前菜一個人、主菜一個人
什麼時候絕大多數情況大型語言模型這種記憶體裝不下的

考試指南 3.3 兩個詞都點名了,但考題以資料平行為主。

同步還是非同步

TensorFlow 的分散式指南把資料平行再分兩種:

  • 同步:所有機器各算一批,等大家都算完,把梯度(第 3 篇講的「該往哪調」)加總平均,一起更新。靠 all-reduce 演算法交換梯度,GPU 之間預設用 NVIDIA 的 NCCL 函式庫
  • 非同步:各機器自己算、自己更新,靠參數伺服器(parameter server)存共同的模型參數。快但不穩

常見的策略

框架策略情況
TensorFlowMirroredStrategy一台機器、多張 GPU,同步
TensorFlowMultiWorkerMirroredStrategy多台機器、各多張 GPU,同步。筆記點名的就是它
TensorFlowTPUStrategyTPU 上,跟 MirroredStrategy 同一套邏輯
TensorFlowParameterServerStrategy非同步、參數伺服器架構
PyTorchDistributedDataParallel(DDP)多 GPU、多機器的同步資料平行

Agent Platform 怎麼分工

官方分散式訓練文件:你在 CustomJob 裡列出最多四個工作池(workerPoolSpecs[]),順序決定角色:

位置角色做什麼
workerPoolSpecs[0]主要副本(primary、chief)一定要有、只能一個。協調其他機器、回報整個工作的狀態
workerPoolSpecs[1]工作者(workers)各做自己那一份
workerPoolSpecs[2]參數伺服器或 Reduction Server存模型參數、協調共享狀態
workerPoolSpecs[3]評估者(evaluators)負責評估,TensorFlow 通常只用一個

Agent Platform 會把這個結構寫進 CLUSTER_SPEC 或 TF_CONFIG 環境變數,程式讀它就知道自己是誰、同伴在哪。

分散式訓練的角色:workerPoolSpecs 第 0 個是主要副本負責協調,第 1 個是工作者各算一份資料,第 2 個是參數伺服器或 Reduction Server,第 3 個是評估者;同步訓練用 all-reduce 交換梯度

Reduction Server:讓 GPU 少花時間傳梯度

多台 GPU 同步訓練時,每一步都要把梯度傳來傳去,機器越多、傳得越久。Google 的 Reduction Server 是專門幫忙「加總梯度」的一群便宜機器,讓 GPU 專心算。

官方的條件:GPU 工作者、TensorFlow 或 PyTorch 的多機訓練、容器要支援(預建的 TF/PyTorch 容器,或自訂容器裝 NCCL 2.7 以上和 Google 的 fast socket)。做法是在第三個工作池放 Reduction Server 的映像檔(asia-docker.pkg.dev/vertex-ai-restricted/training/reductionserver:latest),不用 GPU,官方建議用 n1-highcpu-16 這種頻寬高的機型,而且 reducer 的總出口頻寬要跟 worker 相當。

算一次給你看:多 GPU 到底省多少

飲料店的推薦模型,單張 T4 要跑 10 小時。改成 4 張 GPU 做同步資料平行(數字是教學假設):

理想狀況:10 小時 ÷ 4 = 2.5 小時
實際有梯度交換的開銷,假設效率 85%
實際時間 = 10 ÷ (4 × 0.85) ≈ 2.9 小時

費用(假設一張 GPU 每小時 100 元,教學假設):

1 張 × 10 小時 × 100 元 = 1,000 元
4 張 × 2.9 小時 × 100 元 = 1,176 元
多付 18%,換 3.4 倍快

再開 Spot VM(假設打 6 折):

1,176 × 0.6 ≈ 706 元
比單張全價還便宜,而且快 3.4 倍

批次大小也要跟著變:每張 GPU 一批 64 張,4 張同時算,全局批次變成 64 × 4 = 256。批次變大,常見的做法是學習率(第 3 篇)也按比例調大,不然收斂會變慢。

數字怎麼看:

  • 效率 85% 是「梯度交換」吃掉的,機器越多、網路越慢,這個數字越低。Reduction Server 就是在拉高它
  • 加 GPU 不會無限變快:16 張時效率可能掉到 60%,10 ÷ (16 × 0.6) ≈ 1 小時,但費用 16 × 1 × 100 = 1,600 元。要時間就加機器,要省錢就少機器+Spot
  • Spot 的前提是程式會存檢查點(AIP_CHECKPOINT_DIR),被收回時才不用從頭來
多 GPU 算一次:單張 GPU 10 小時 1,000 元,4 張同步資料平行效率 85% 變 2.9 小時 1,176 元,再開 Spot VM 打 6 折 706 元;全局批次 64 乘 4 等於 256

5. 超參數調校:讓 Google 幫你試

第 15 篇講過 BigQuery ML 用 num_trials 自動試超參數。自訂訓練也有對應的服務:超參數調校工作(HyperparameterTuningJob)。

官方定義的三種資料:輸入資料(訓練資料)、參數(模型訓練中學到的權重)、超參數(控制訓練過程本身的設定,例如幾層、每層幾個節點、學習率)。超參數在一次訓練中通常固定,要調它就得跑很多次訓練。

怎麼運作

  1. 你定義要調哪些超參數和範圍(例如學習率 0.0001 到 0.1、隱藏層 1 到 4 層)
  2. 定義目標指標和方向(例如最大化準確率、最小化損失)
  3. Agent Platform 跑很多次試驗(trial),每次用不同的值,記錄結果,用結果決定下一次試什麼
  4. 跑完回報最好的那組和每一次的摘要

程式要配合兩件事

  • 每個要調的超參數做成命令列參數(程式啟動時從外面給的值),用 argparse 接
  • 用 cloudml-hypertune 套件的 report_hyperparameter_tuning_metric 把每次的分數回報給 Agent Platform

演算法

預設是貝氏最佳化(Bayesian optimization):根據前幾次的結果,猜下一組最可能更好的值,比亂試省很多次。也可以選 GRID_SEARCH(格狀搜尋,所有組合都試)或 RANDOM_SEARCH(隨機)。官方還提到,對相似的模型反覆調校時,它會跨工作學習、越調越有效率。

另有條件式超參數:例如「訓練方法選 DNN 時才需要調層數」。


6. 兩種跑法:無伺服器訓練 vs 訓練叢集

第 14 篇提過,自訂訓練現在分兩種模式:

無伺服器訓練(Serverless Training)訓練叢集(Training Clusters)
白話送出 CustomJob,Google 開機器、跑完收掉先保留一批專屬的高階 GPU(A100、H100)
比喻叫計程車包月租車
適合實驗、原型、不需要保證馬上有機器的正式工作大規模、長時間、不能排隊等的關鍵訓練
收費用多少付多少保留期間都算

訓練叢集的官方文件補充的特色:用開源的 Slurm 介面(高效能運算界的標準排程工具)管工作;自動處理硬體故障(偵測錯誤、重啟或更換節點、從檢查點續跑);內建 Llama、Gemma 這類模型的訓練配方。目前要聯絡業務申請才能用。

第三條路 Ray on Agent Platform:用開源的 Ray 框架做分散式 Python,本來就用 Ray 的團隊適合。

飲料店的推薦模型是每週重訓一次的正式工作、不能排隊 → 第 14 篇的練習情境選了訓練叢集;如果只是研究團隊的實驗,無伺服器訓練+Spot 就好。


在 GCP 上怎麼做

整條流程

  1. 寫程式:模型存到 AIP_MODEL_DIR,檢查點存到 AIP_CHECKPOINT_DIR,程式能從檢查點續跑(Spot 被收回、機器重啟都靠這個,官方文件有一節就叫「確保能承受重啟」)
  2. 選容器:標準框架用預建容器+Python 套件;特殊需求做自訂容器推到 Artifact Registry
  3. 資料:Cloud Storage 或 BigQuery,跟訓練同一區域(第 13 篇)
  4. 建 CustomJob:主控台、gcloud ai custom-jobs create、Python SDK 都行;設機型、GPU、台數、timeout、Spot
  5. 多台:第二個工作池放 workers,有需要在第三個放 Reduction Server
  6. 要調參:改建 HyperparameterTuningJob,程式加 cloudml-hypertune
  7. 看進度:日誌在 Cloud Logging,TensorBoard 看曲線(第 22 篇)
  8. 跑完:模型在 Cloud Storage,註冊到 Model Registry,部署(第 17 篇)

權限

訓練工作預設用 Agent Platform 的服務代理身分存取同專案的 Cloud Storage;要限制存取範圍,可以指定自訂的服務帳戶(給程式用的身分,第 12 篇提過)。

改名對照

舊名稱(筆記、舊題庫)現在
AI Platform Training2025 年 4 月關閉,改用 Agent Platform 自訂訓練
Vertex AI Training、Vertex AI custom trainingGemini Enterprise Agent Platform Managed Training
Vertex AI Serverless TrainingGemini Enterprise Agent Platform Serverless Training
Vertex AI Training Clusters(VTC)Managed Training Clusters on Gemini Enterprise Agent Platform
Ray on Vertex AIRay on Gemini Enterprise Agent Platform
Container Registry(舊的映像檔倉庫)Artifact Registry
Cloud TPU API已淘汰,改透過 Compute Engine、GKE、Agent Platform 用 TPU

考試會怎麼考

Google Cloud Professional Machine Learning Engineer(PMLE,專業機器學習工程師) 證照,2026 年 6 月 1 日起的官方考試指南裡,這篇的內容對應到:

考試區塊跟這篇有關的項目
第 3 區:把原型放大成 ML 模型(約 21%)3.2 用不同 SDK 訓練模型(Agent Platform 自訂訓練、GKE 上的 Kubeflow、AutoML、Tabular Workflows);排除訓練失敗的問題;超參數調校。3.3 評估 CPU、GPU、TPU;用資料平行和模型平行在 GPU、TPU 上做分散式訓練
第 4 區:服務與擴展模型(約 20%)4.1 用預建和自訂容器打包不同框架的模型(容器的概念跟訓練端一樣)
PMLE 考試關鍵字:預建容器沒有的框架想到自訂容器、矩陣運算為主訓練數週想到 TPU、自訂運算 PyTorch 想到 GPU、多台多 GPU 想到 MultiWorkerMirroredStrategy、梯度傳輸是瓶頸想到 Reduction Server、省錢可中斷想到 Spot VM 加檢查點、自動找學習率想到超參數調校工作

看到這些字,就想到這個

題目出現的關鍵字想到
「預建容器沒有的框架」「特定版本」「非 ML 相依」「啟動更快」自訂容器
「標準 TensorFlow/PyTorch 程式」「最少設定」預建容器+Python 套件
「矩陣運算為主」「訓練好幾週」「超大嵌入」「沒有自訂運算」TPU
「自訂運算」「PyTorch/JAX 自訂 op」「TPU 不支援的 op」「中大型模型」GPU
「快速原型」「小模型」「很多自訂 C++ 運算」CPU
「一台多 GPU」MirroredStrategy
「多台多 GPU」「同步」MultiWorkerMirroredStrategy(PyTorch 用 DDP)
「模型太大裝不下一張 GPU」模型平行
「梯度傳輸是瓶頸」「多節點 GPU 訓練變慢」Reduction Server(放第三個工作池)
「省錢」「可以被中斷」「能從檢查點續跑」Spot VM
「保證有機器」「不能排隊」「H100」預留或訓練叢集
「GPU 不一定馬上有」「可以等」Dynamic Workload Scheduler
「自動找最佳學習率」「試很多組」超參數調校工作,cloudml-hypertune 回報指標
「訓練中途失敗要從頭來」存檢查點到 AIP_CHECKPOINT_DIR
「訓練機器讀不到資料」資料和訓練同區域、服務帳戶權限

六個常見陷阱

  1. TPU 當萬靈丹:有自訂運算、需要高精度、分支多的程式,TPU 反而慢或跑不了
  2. GPU 張數亂填:T4 只能 2 或 4 張,填 3 會失敗;機型 CPU 太小配 GPU 連日誌都出不來
  3. 多 GPU 卻沒改程式:沒用分散式策略,4 張 GPU 只有 1 張在動
  4. 用 Spot 卻不存檢查點:被收回就從頭來,省的錢全賠回去
  5. 分散式工作池順序放錯:第 0 個一定是主要副本,第 2 個才是參數伺服器/Reduction Server
  6. 調校時忘了回報指標:沒呼叫 report_hyperparameter_tuning_metric,Agent Platform 不知道哪組好

練習情境(自己出的練習,不是真實考題)

研究團隊用 PyTorch 寫了推薦模型,有自訂損失函數,單張 GPU 要跑 10 小時。他們想在 3 小時內跑完,預算有限,而且這只是實驗,可以中斷重跑。應該怎麼設?

判斷過程:

  • 「PyTorch」「自訂損失函數」→ GPU(不是 TPU),預建 PyTorch GPU 容器
  • 「3 小時內」→ 4 張 GPU 同步資料平行(DDP),一台 4 張用 MirroredStrategy 等級的設定就好,不用多台
  • 「預算有限」「可以中斷」→ Spot VM,程式要存檢查點
  • 無伺服器訓練即可,不需要訓練叢集

同一個模型要變成每週重訓的正式工作,資料成長到用 8 台機器、每台 8 張 GPU。工程師發現加了機器之後,每一步大部分時間在等梯度傳輸。應該怎麼做?

判斷過程:

  • 「等梯度傳輸」「多節點 GPU」→ Reduction Server,放在 workerPoolSpecs[2],用 n1-highcpu-16 不配 GPU
  • 「正式工作」「每週」→ 考慮預留或訓練叢集保證有機器
  • 容器要是預建 TF/PyTorch,或自訂容器裝 NCCL 2.7+

團隊要訓練一個標準架構的大型語言模型,要跑三週,沒有自訂運算,批次很大。應該選什麼硬體?

判斷過程:

  • 「矩陣運算為主」「三週」「大批次」「沒有自訂運算」→ TPU
  • 自訂訓練用 TPU:一個工作池、一個副本,選 v5e/v6e 機型+tpuTopology
  • 框架版本要符合(v5e 要 TensorFlow 2.15+ 或 PyTorch 2.1+ 或 JAX 0.4.6+)

常見問答

Vertex AI 自訂訓練是什麼?

你自己寫訓練程式(任何框架),打包成容器,Agent Platform 負責開虛擬機器、裝 GPU 或 TPU、跑程式、跑完收機器,只收用到的時間。流程是:寫程式、選預建或自訂容器、資料放同區域的 Cloud Storage、建 CustomJob 指定機型和台數、模型存到 Cloud Storage。Vertex AI 在 2026 年 4 月改名為 Gemini Enterprise Agent Platform,這個服務現在叫 Agent Platform Managed Training。

預建容器和自訂容器怎麼選?

預建容器是 Google 裝好的 TensorFlow、PyTorch、scikit-learn、XGBoost 映像檔,分 CPU 和 GPU 版,標準程式直接用、不用碰 Docker。四種情況才需要自訂容器:預建的沒有你要的框架或版本、有非 ML 的相依套件或二進位檔、想預先裝好相依套件讓啟動更快、要用任意框架做分散式訓練。GPU 用的自訂容器建議以 nvidia/cuda 當基底映像檔。

訓練該用 CPU、GPU 還是 TPU?

官方 TPU 簡介的指南:CPU 適合快速原型、小模型、很多自訂 C++ 運算、被 I/O 卡住的模型;GPU 適合有自訂 PyTorch 或 JAX 運算、用到 TPU 不支援的運算、中大型模型;TPU 適合矩陣運算為主、主訓練迴圈沒有自訂運算、要訓練幾週、大模型大批次、超大嵌入。TPU 不適合分支多、需要高精度、有自訂運算的程式。

資料平行和模型平行差在哪?

資料平行是每台機器都有完整的模型,各算不同的資料,每步把梯度加總平均再更新,絕大多數情況用這種;模型平行是模型太大一張 GPU 裝不下,把模型切成幾塊放不同機器,大型語言模型才需要。資料平行又分同步(all-reduce 等大家算完一起更新,GPU 間用 NCCL)和非同步(參數伺服器,各自更新)。

MultiWorkerMirroredStrategy 是什麼?

TensorFlow 的分散式策略之一,做多台機器、每台多張 GPU 的同步資料平行訓練:每台都有模型的完整複本,用 all-reduce 交換梯度。一台機器多張 GPU 用 MirroredStrategy,TPU 用 TPUStrategy,非同步的參數伺服器架構用 ParameterServerStrategy。PyTorch 對應的是 DistributedDataParallel。Agent Platform 會把機器結構寫進 TF_CONFIG 環境變數給程式讀。

Reduction Server 是什麼?

Google 提供的一群專門幫忙加總梯度的機器,讓多台 GPU 同步訓練時 GPU 不用花時間互傳梯度。條件是 GPU 工作者、TensorFlow 或 PyTorch 多機訓練、容器支援(預建 TF/PyTorch 容器或裝了 NCCL 2.7 以上的自訂容器)。做法是在 CustomJob 的第三個工作池放 Reduction Server 映像檔,不用 GPU,官方建議 n1-highcpu-16 這種頻寬高的機型。

Spot VM 可以用來訓練嗎?

可以,而且是省錢的主要方法。Spot VM 是 Google 多出來的閒置機器,大幅折扣,但隨時可能被收回。前提是訓練程式要定期把檢查點存到 AIP_CHECKPOINT_DIR,被收回重啟後從檢查點續跑。在 CustomJob 的 scheduling.strategy 設定。要保證有機器則用預留,GPU 不急可以用 Dynamic Workload Scheduler 排隊等。

自訂訓練怎麼調超參數?

建超參數調校工作(HyperparameterTuningJob):定義要調的超參數和範圍、目標指標和方向(最大化準確率或最小化損失)、試驗次數。程式要把每個超參數做成命令列參數,並用 cloudml-hypertune 套件回報每次的指標。預設用貝氏最佳化,也可選格狀或隨機搜尋,還支援條件式超參數。BigQuery ML 的對應做法是 num_trials。

無伺服器訓練和訓練叢集差在哪?

無伺服器訓練是送出 CustomJob 後 Google 開機器、跑完收掉、用多少付多少,適合實驗和不需要保證馬上有機器的工作。訓練叢集是先保留一批專屬高階 GPU,用 Slurm 介面管工作、自動處理硬體故障、內建大模型訓練配方,適合大規模長時間的關鍵訓練,目前要聯絡業務申請。另有 Ray on Agent Platform 給用 Ray 框架的團隊。

訓練程式要存到哪裡?

Agent Platform 給三個環境變數:AIP_MODEL_DIR 存訓練完的模型(之後註冊到 Model Registry 直接用)、AIP_CHECKPOINT_DIR 存檢查點、AIP_TENSORBOARD_LOG_DIR 存 TensorBoard 紀錄,都是 Cloud Storage 路徑。訓練資料則掛在 /gcs/ 底下讀,要跟訓練同一個區域。

Vertex AI Training 改名了嗎?

是。Vertex AI 在 2026 年 4 月改名為 Gemini Enterprise Agent Platform,Vertex AI Training 改叫 Agent Platform Managed Training,底下分 Serverless Training(無伺服器訓練)和 Training Clusters(訓練叢集)。更早的 AI Platform Training 已在 2025 年 4 月 7 日關閉。舊題庫的 Vertex AI custom training 就是現在的 Agent Platform 自訂訓練,功能一樣。


重點整理

  • 自訂訓練:自己寫程式、打包容器,Agent Platform 開機器、跑完收掉;舊名 Vertex AI Training,現在叫 Agent Platform Managed Training
  • 容器:預建(TensorFlow、PyTorch、scikit-learn、XGBoost)夠用就不用自己做;框架不支援、特定版本、非 ML 相依、要更快啟動才做自訂容器,推到 Artifact Registry
  • CustomJob:WorkerPoolSpec 設機型、GPU 種類與張數、台數、容器;程式用 AIP_MODEL_DIR、AIP_CHECKPOINT_DIR
  • 硬體:CPU 原型小模型;GPU 自訂運算、中大型;TPU 矩陣運算為主、訓練數週、大批次,不適合自訂運算與高精度。GPU 要配 A2/N1/G2 機型、張數有固定選項
  • 分散式:資料平行(同步 all-reduce、非同步參數伺服器)vs 模型平行;工作池順序=角色(主要副本、工作者、參數伺服器/Reduction Server、評估者);MultiWorkerMirroredStrategy、DDP
  • 算一次:4 張 GPU 效率 85% → 2.9 小時,多付 18% 換 3.4 倍快;開 Spot 再打折,但要存檢查點
  • 超參數調校工作:命令列參數+cloudml-hypertune 回報指標,預設貝氏最佳化
  • 兩種跑法:無伺服器訓練(計程車)vs 訓練叢集(包月租車,Slurm,要申請)

延伸閱讀

本系列

站上相關文章


機器選對、程式打包好,模型才跑得起來、錢才花得值。如果你想有系統地從雲端基礎一路學到在 GCP 上動手做機器學習,可以看看東東的 GCP 課程,或加 LINE 聊聊你現在的狀況,一起找出最適合你的學習順序。

Table of Contents
返回頂端