本文說明如何建立自訂 Google Kubernetes Engine (GKE) 叢集,使用 N1 一般用途機器系列,並附加 NVIDIA T4 或 V100 GPU,支援人工智慧 (AI) 和機器學習 (ML) 工作負載。附加 GPU 的 N1 機器屬於一般 GPU,可提供獨立的運算資源,專為主流 AI 工作而設計,例如中小型推論和需要大量圖形處理的應用程式。
GKE 提供單一平台介面,可為貴機構執行各種工作負載,減少管理多個平台的營運負擔。
如要建立使用 N1 機器系列的 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)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
選擇用量方案並取得容量
需求條件
如要使用 N1 的 AI 適用 GKE 叢集,節點必須使用 NVIDIA 驅動程式 535 以上版本。
限制
N1 做為一般用途 GPU 機器系列時,有以下限制:
- 多執行個體 GPU (NVIDIA):N1 系列機器不支援多執行個體 GPU (NVIDIA)。
- NCCL Fast Socket:您無法在 GKE 上使用 N1 機器搭配 NCCL Fast Socket。N1 機器支援多節點通訊,但使用標準 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:叢集所在的區域。
建立節點集區。 建立叢集後,您可以新增節點集區,並將 T4 或 V100 GPU 附加至 N1 機器。
如要建立節點集區,請使用下列指令:
附加 T4 GPU 的 N1
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-t4,count=AMOUNT,gpu-driver-version=LATEST \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTN1 搭配 V100 GPU
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-v100,count=AMOUNT,gpu-driver-version=LATEST \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNT更改下列內容:
CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。ZONE:區域內有一或多個可用於要求 GPU 的可用區,例如us-central1-a。使用密集配置時,這是必要條件。NODE_POOL_NAME:節點集區的名稱。MACHINE_TYPE:節點的 N1 機型,例如n1-standard-4。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-tesla-t4(適用於 T4 GPU) 或nvidia-tesla-v100(適用於 V100 GPU)。RESERVATION_NAME:Compute Engine 容量預留項目的名稱。如要使用共用預留項目,或預留項目的特定區塊和子區塊,請參閱「使用預留的區域路徑資源」一文中的相關章節。
在要求 GPU 的容器中新增下列資源:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNT將
AMOUNT改成要附加至每個節點的 GPU 數量。