本文說明如何建立自訂 Google Kubernetes Engine (GKE) 叢集,使用 G2 (NVIDIA L4) 或 G4 (NVIDIA RTX PRO 6000) 加速器最佳化機器系列,支援人工智慧 (AI) 和機器學習 (ML) 工作負載。G2 和 G4 是一般 GPU 機器系列,提供獨立的運算資源,專為主流 AI 工作 (例如中小型推論和需要大量圖形的應用程式) 而設計。
GKE 提供單一平台介面,可為貴機構執行各種工作負載,減少管理多個平台的營運負擔。
如要使用 G2 或 G4 建立 AI 適用的 GKE 叢集,請按照下列步驟操作:
事前準備
開始之前,請務必先完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
必要的角色
如要取得建立及管理 GKE 叢集所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Kubernetes Engine 管理員 (
roles/container.admin) - Compute 管理員 (
roles/compute.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
選擇用量方案並取得容量
選擇使用選項。請根據您取得及使用 GPU 資源的方式做出選擇。詳情請參閱「選擇消耗選項」。
選擇 GKE 的用量方案時,請注意下列額外資訊:
- 如要進一步瞭解彈性啟動 (搶先版) 和 GKE,請參閱「關於彈性啟動的 GPU 取得能力」。
- 彈性啟動會盡可能使用密集配置。如要檢查拓撲,請參閱查看 GKE 叢集中節點的實體拓撲。
- 使用 Spot VM 時,只有在設定密集配置時,才能取得拓撲資訊。
取得容量。瞭解如何為消費選項取得容量。
需求條件
如要建立使用 G2 或 G4 的 AI 最佳化 GKE 叢集,請務必符合下列需求:
- GKE 版本:G4 (RTX PRO 6000) 機型需要 GKE 1.32.4-gke.1698000 以上版本。
- GPU 驅動程式:GPU 節點必須使用 NVIDIA 驅動程式 535 以上版本。
限制
以下限制適用於 G2 和 G4 這兩個一般 GPU 機器系列:
- 本機 SSD:G2 和 G4 機型預設不含本機 SSD 磁碟。如需附加這些檔案,請手動操作。
- NCCL Fast Socket:您無法在 GKE 上使用 G2 或 G4 機器搭配 NCCL Fast Socket。G2 和 G4 機器支援多節點通訊,但使用標準 VPC 網路。如要進行大規模分散式訓練,並盡量提高網路輸送量,建議使用叢集式 GPU 系列機型,例如 A3 High 或 A3 Mega (使用 GPUDirect TCPX),或是 A3 Ultra 和 A4 (使用 GPUDirect RDMA)。
建立 GKE 環境
您可以在 Autopilot 或標準模式中建立叢集。
Autopilot
如要建立 Autopilot 叢集,請執行下列指令:
gcloud container clusters create-auto CLUSTER_NAME \
--region=REGION
更改下列內容:
CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。
標準
建立 Standard 叢集和 GPU 節點集區:
如要建立標準叢集,請執行下列指令:
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --enable-ip-alias更改下列內容:
CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。
建立節點集區。 建立叢集後,您可以新增含有 G2 或 G4 的節點集區。如果是使用 G2 (L4) 或 G4 (RTX PRO 6000) 的多節點工作負載,建議使用密集配置政策,盡量減少節點間的網路延遲。
如要建立節點集區,請使用下列指令:
G2 (NVIDIA L4)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-l4,count=AMOUNT,gpu-driver-version=LATEST \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTG4 (NVIDIA RTX PRO 6000)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-rtx-pro-6000,count=AMOUNT,gpu-driver-version=LATEST \ --disk-type=hyperdisk-balanced \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTG4 虛擬工作站 (vWS)
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-rtx-pro-6000-vws,count=AMOUNT,gpu-driver-version=LATEST \ --disk-type=hyperdisk-balanced \ --placement-type=COMPACT \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNT更改下列內容:
NODE_POOL_NAME:節點集區的名稱。CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。ZONE:區域內有一或多個可用於要求 GPU 的可用區,例如us-central1-a。使用密集配置時,這是必要條件。MACHINE_TYPE:節點的機型,例如 G2 機器的g2-standard-4和 G4 機器的g4-standard-48。AMOUNT:要附加至每個節點的 GPU 數量。LOCAL_SSD_COUNT:要在每個節點上佈建的本機 SSD 磁碟區數量。
連結叢集
連線至叢集,以便在下節中執行 kubectl 指令:
gcloud container clusters get-credentials CLUSTER_NAME \
--region=REGION
更改下列內容:
CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。
詳情請參閱「安裝 kubectl 並設定叢集存取權」。
設定 Pod 資訊清單 (僅限 Autopilot)
如果您建立的是 Autopilot 叢集,則必須在 Pod 資訊清單中選取適當的 GPU,GKE 才會佈建硬體。
使用節點選取器指定所選 GPU 類型和特定預留項目:
spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/gke-gpu-driver-version: latest # Optional: Include if using reserved capacity cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific"更改下列內容:
ACCELERATOR:您預留的加速器。您必須使用nvidia-l4(適用於 G2)、nvidia-rtx-pro-6000(適用於 G4) 或nvidia-rtx-pro-6000-vws(適用於 G4 和虛擬工作站)。RESERVATION_NAME:Compute Engine 容量預留項目的名稱。如要使用共用預留項目,或預留項目的特定區塊和子區塊,請參閱「使用預留的區域路徑資源」一文中的相關章節。
在要求 GPU 的容器中新增下列資源:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNT將
AMOUNT改成要附加至每個節點的 GPU 數量。