本文說明如何建立自訂 Google Kubernetes Engine (GKE) 叢集,使用 A2 Standard (A100 40GB) 或 A2 Ultra (A100 80GB) 加速器最佳化機器類型,支援人工智慧 (AI) 和機器學習 (ML) 工作負載。A2 是一般 GPU 機器系列,提供獨立的運算資源,專為主流 AI 工作設計,例如訓練較小的模型和單一主機推論。
GKE 提供單一平台介面,可為貴機構執行各種工作負載,減少管理多個平台的營運負擔。
如要建立使用 A2 系列機器的 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 時,只有在設定密集配置時,才能取得拓撲資訊。
取得容量。瞭解如何為消費選項取得容量。
需求條件
如果 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 節點集區:
如要建立標準叢集,請執行下列指令:
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --enable-ip-alias更改下列內容:
CLUSTER_NAME:叢集名稱。REGION:叢集所在的區域。
建立節點集區。 建立叢集後,即可新增含有 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_COUNTA2 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 磁碟區數量。
- A2 Standard 機器類型 (
連結叢集
連線至叢集,以便在下節中執行 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-a100(適用於 A2 Standard) 或nvidia-a100-80gb(適用於 A2 Ultra)。RESERVATION_NAME:Compute Engine 容量預留項目的名稱。如要使用共用預留項目,或預留項目的特定區塊和子區塊,請參閱「使用預留的區域路徑資源」一文中的相關章節。
在要求 GPU 的容器中新增下列資源:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNT將
AMOUNT改成要附加至每個節點的 GPU 數量。