建立使用 N1 的自訂 AI 最佳化 GKE 叢集

本文說明如何建立自訂 Google Kubernetes Engine (GKE) 叢集,使用 N1 一般用途機器系列,並附加 NVIDIA T4 或 V100 GPU,支援人工智慧 (AI) 和機器學習 (ML) 工作負載。附加 GPU 的 N1 機器屬於一般 GPU,可提供獨立的運算資源,專為主流 AI 工作而設計,例如中小型推論和需要大量圖形處理的應用程式。

GKE 提供單一平台介面,可為貴機構執行各種工作負載,減少管理多個平台的營運負擔。

如要建立使用 N1 機器系列的 AI 最佳化 GKE 叢集,請完成下列步驟:

  1. 建立 GKE 環境
  2. 連線至叢集
  3. 設定 Pod 資訊清單

事前準備

開始之前,請務必先完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

必要的角色

如要取得建立及管理 GKE 叢集所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

選擇用量方案並取得容量

  1. 選擇使用選項。請根據您取得及使用 GPU 資源的方式做出選擇。詳情請參閱「選擇消耗選項」。

  2. 取得容量。瞭解如何為消費選項取得容量

需求條件

如要使用 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 節點集區:

  1. 如要建立標準叢集,請執行下列指令:

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • REGION:叢集所在的區域。
  2. 建立節點集區。 建立叢集後,您可以新增節點集區,並將 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_COUNT
    

    N1 搭配 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 才會佈建硬體。

  1. 使用節點選取器指定所選 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 容量預留項目的名稱。如要使用共用預留項目,或預留項目的特定區塊和子區塊,請參閱「使用預留的區域路徑資源」一文中的相關章節。
  2. 在要求 GPU 的容器中新增下列資源:

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    AMOUNT 改成要附加至每個節點的 GPU 數量。

後續步驟