本教學課程說明如何使用多主機 Cloud TPU v6e (Trillium) 加速器和 vLLM TorchTPU,在 Google Kubernetes Engine (GKE) 部署及提供多模態專家混合模型 Gemma 4 26B (google/gemma-4-26B-A4B-it)。由於工作負載會跨越 2x4 拓撲中的多個 TPU 主機,因此您可以使用 Kubernetes LeaderWorkerSet API 和 Ray,在八個 TPU 晶片之間協調分散式張量平行推論。
目標
- 設定 GKE 叢集和多主機 TPU v6e 節點集區。
- 使用 LeaderWorkerSet 部署多主機 vLLM 伺服器。
- 傳送文字和多模態推論要求。
- 執行推論基準測試工作負載。
- 清除所用資源。
費用
在本文件中,您會使用下列Google Cloud計費元件:
您可以使用 Pricing Calculator 根據預測用量估算費用。
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」一節。
事前準備
您需要 Hugging Face 存取權杖,才能使用本教學課程。您可以前往 Hugging Face 註冊免費帳戶。取得帳戶後,請產生存取權杖:
- 在「Welcome to Hugging Face」頁面,點選帳戶顯示圖片,然後選取「存取權杖」。
- 在「存取權杖」頁面,按一下「建立新權杖」。
- 選取「Read」權杖類型,並輸入權杖名稱。
- 系統會顯示存取權杖。將權杖儲存在安全的地方。
如要取得完成本教學課程所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Kubernetes Engine 管理員 (
roles/container.admin) - Compute 管理員 (
roles/compute.admin) - 服務帳戶使用者 (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
設定環境變數
設定環境變數:
更改下列內容:
YOUR_PROJECT_ID: Google Cloud專案的 ID。YOUR_RESERVATION_NAME:預留項目名稱。YOUR_REGION:要部署 GKE 叢集的區域。YOUR_ZONE:要部署 TPU v6e 節點集區的可用區。YOUR_CLUSTER_NAME:GKE 叢集名稱。YOUR_HF_TOKEN:您的 Hugging Face 存取權杖。YOUR_VLLM_TPU_IMAGE:要使用的 vLLM TPU 映像檔。如需公開映像檔,請參閱 vLLM TorchTPU 存放區。
建立 GKE 叢集
如要建立 GKE 叢集並連結多主機 TPU v6e 節點集區,請完成下列步驟:
建立區域性 GKE 叢集,預設節點集區使用
e2-standard-4節點,TPU v6e 節點集區則有兩個ct6e-standard-4t節點,並以2x4拓撲排列 (共八個 TPU 晶片)。預設 GKE 機器類型 (e2-medium) 無法為 LeaderWorkerSet 控制器提供足夠的 CPU 資源,因此本教學課程會指定e2-standard-4:除了使用特定預留項目,您也可以傳遞下列旗標,使用 Spot 運算資源或彈性啟動型 VM 建立節點集區:
- Spot VM:將
--reservation-affinity和--reservation旗標替換為--spot,即可使用 Spot 容量。建立節點集區後,使用 Spot 容量的執行個體可能需要一段時間才能建立,且在工作負載執行期間可能會遭到先占。如果 Pod 需要一段時間才能建立,或工作負載在執行期間停止,可能就是這個原因。 - 彈性啟動型 VM:傳遞
--flex-start,使用彈性啟動用量方案佈建節點集區。詳情請參閱「使用 TPU 和彈性啟動型 VM 執行小型批次工作負載」。
- Spot VM:將
設定
kubectl憑證,以便與叢集通訊:
設定憑證並安裝 LeaderWorkerSet
如要準備叢集以進行多主機部署,請完成下列步驟:
匯出 Hugging Face 權杖,並建立名為
hf-secret的 Kubernetes Secret:在叢集上安裝 LeaderWorkerSet CustomResourceDefinition 和控制器:
部署多主機 vLLM 伺服器
工作負載資訊清單 (gemma4-26b-multihost-v6e-2x4.yaml) 定義了兩項資源:
- LeaderWorkerSet 資源 (
vllm-tpu-gemma4-26b) 包含size: 2(一個 leader Pod 和一個 worker Pod),排定在2x4TPU 切片的兩個ct6e-standard-4t節點上。每個 Pod 都會執行 InitContainer,先將 Hugging Face 的google/gemma-4-26B-A4B-it模型權重預先擷取至記憶體內磁碟區,再使用--tensor-parallel-size=8、--kv-cache-dtype=fp8、--max-model-len=5248和--max-num-seqs=128旗標啟動 Ray 和 vLLM OpenAI API 伺服器。 - ClusterIP Service (
vllm-service),在 leader Pod 上公開通訊埠8000。
如要部署及監控工作負載,請完成下列步驟:
從 GitHub 擷取 LeaderWorkerSet 資訊清單:
或者,建立名為
gemma4-26b-multihost-v6e-2x4.yaml的檔案,並加入下列內容:套用 LeaderWorkerSet 資訊清單:
監控領導者 Pod 狀態和記錄,直到應用程式啟動完成:
初始服務啟動作業約需 9 分鐘,期間 Pod 會預先擷取模型權重、在所有八個 TPU 晶片上形成雙節點 Ray 叢集,並編譯模型。請等待記錄回報
Application startup complete,再傳送流量。在第二個終端機工作階段中,將本機通訊埠
8000轉送至vllm-service:在這個終端機工作階段中,讓通訊埠轉送功能保持運作。
傳送推論要求
返回第一個終端機工作階段,並使用文字和多模態對話完成要求,測試已部署的模型:
傳送文字對話完成要求至
/v1/chat/completions端點:傳送多模態要求,其中包含圖片網址和文字提示詞:
執行基準工作負載
執行下列指令,對已部署的模型進行基準測試:
清除所用資源
如要避免系統向您的 Google Cloud 帳戶持續收取本教學課程所用資源的額外費用,請刪除 Kubernetes 工作負載、TPU 節點集區和 GKE 叢集:
刪除 vLLM 伺服器部署作業和 Hugging Face 密鑰:
刪除 TPU v6e 節點集區和 GKE 叢集:
返回第二個終端機工作階段,停止通訊埠轉送。
後續步驟
- 進一步瞭解 vLLM TorchTPU。
- 進一步瞭解 Cloud TPU。