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

本文說明如何建立自訂 Google Kubernetes Engine (GKE) 叢集,使用 A2 Standard (A100 40GB) 或 A2 Ultra (A100 80GB) 加速器最佳化機器類型,支援人工智慧 (AI) 和機器學習 (ML) 工作負載。A2 是一般 GPU 機器系列,提供獨立的運算資源,專為主流 AI 工作設計,例如訓練較小的模型和單一主機推論。

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

如要建立使用 A2 系列機器的 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 資源的方式做出選擇。詳情請參閱「選擇消耗選項」。

    選擇 GKE 的用量方案時,請注意下列額外資訊:

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

需求條件

如果 AI 最佳化 GKE 叢集使用 A2 機器,GPU 節點必須使用 NVIDIA 驅動程式 450.80.02 以上版本。

限制

下列限制適用於 A2 機器 (一般 GPU):

  • 多實體 GPU:雖然 A2 (A100 GPU) 支援硬體分割,但使用 GKE Autopilot 時,不支援多實體 GPU (NVIDIA)。如要將 A100 GPU 分區,以供工作負載使用,請務必使用 GKE Standard。

建立 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. 建立節點集區。 建立叢集後,即可新增含有 A2 GPU 的節點集區。

    注意事項:

    • A2 Standard 機器類型 (a2-highgpu) 需要手動將本機 SSD 磁碟附加至節點,才能用於暫存空間或快取。使用 --local-ssd-count 標記。
    • A2 Ultra 機型 (a2-ultragpu) 預設會自動包含固定數量的本機 SSD 磁碟。
    • 對於多節點訓練工作負載,建議使用密集配置政策,盡量減少節點間的網路延遲。
    • 對於多節點訓練工作負載,我們也建議啟用 NCCL Fast Socket,以提升網路效能。

    A2 Standard (A100 40GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    A2 Ultra (A100 80GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform"
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • REGION:叢集所在的區域。
    • ZONE:區域內有一或多個可用於要求 GPU 的可用區,例如 us-central1-a。使用精簡刊登位置時,必須提供這項資訊。
    • NODE_POOL_NAME:節點集區的名稱。
    • MACHINE_TYPE:節點的機型,例如 a2-highgpu-1g
    • 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-a100 (適用於 A2 Standard) 或 nvidia-a100-80gb (適用於 A2 Ultra)。
    • RESERVATION_NAME:Compute Engine 容量預留項目的名稱。如要使用共用預留項目,或預留項目的特定區塊和子區塊,請參閱「使用預留的區域路徑資源」一文中的相關章節。
  2. 在要求 GPU 的容器中新增下列資源:

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

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

後續步驟