大量建立 GPU VM

您可以使用大量建立程序,建立已附加圖形處理器 (GPU) 的虛擬機器 (VM) 群組。透過大量建立程序,您可以預先驗證,如果要求不可行,系統會快速失敗。此外,如果您使用地區標記,大量建立 API 會自動選擇有容量可滿足要求的區域。

如要進一步瞭解大量建立作業,請參閱「關於大量建立 VM」。如要進一步瞭解如何建立連接 GPU 的 VM,請參閱建立連接 GPU 的執行個體總覽

事前準備

  • 如要查看建立附加 GPU 的執行個體時的限制和額外必要步驟 (例如選取 OS 映像檔和檢查 GPU 配額),請參閱建立附加 GPU 的執行個體總覽
  • 如要查看大量建立 VM 的限制,請參閱「關於大量建立 VM」。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

如要取得建立 VM 所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色具備建立 VM 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立 VM,必須具備下列權限:

  • 專案的 compute.instances.create
  • 如要使用自訂映像檔建立 VM: compute.images.useReadOnly 在映像檔上
  • 如要使用快照建立 VM: compute.snapshots.useReadOnly 快照
  • 如要使用執行個體範本建立 VM,請按照下列步驟操作: compute.instanceTemplates.useReadOnly 在執行個體範本上
  • 如要為 VM 指定子網路,請在專案或所選子網路上授予 compute.subnetworks.use 權限。
  • 如要為 VM 指定靜態 IP 位址: 專案的 compute.addresses.use
  • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM: compute.subnetworks.useExternalIp 專案或所選子網路的權限
  • 如要將舊版網路指派給 VM,請按照下列步驟操作: compute.networks.use 專案
  • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp
  • 如要為 VM 設定 VM 執行個體中繼資料,請在專案中執行下列指令: compute.instances.setMetadata
  • 如要為 VM 設定標記,請按照下列步驟操作: compute.instances.setTags 在 VM 上
  • 如要為 VM 設定標籤,請按照下列步驟操作: compute.instances.setLabels 在 VM 上
  • 如要設定 VM 使用的服務帳戶: compute.instances.setServiceAccount 在 VM 上
  • 為 VM 建立新磁碟: compute.disks.create 專案
  • 如要以唯讀或讀寫模式附加現有磁碟: 磁碟的 compute.disks.use
  • 如要以唯讀模式連接現有磁碟: compute.disks.useReadOnly 磁碟的權限

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

總覽

使用大量建立方法建立連結 GPU 的 VM 時,您可以選擇在區域 (例如 us-central1) 或特定可用區 (例如 us-central1-a) 中建立 VM。

如果您選擇指定區域,Compute Engine 會將 VM 放置在該區域內支援 GPU 的任何區域。

機器類型

加速器最佳化機器系列包含多種機器類型。

每個加速器最佳化機型均連接特定型號的 NVIDIA GPU,以支援建議的工作負載類型。

AI 和機器學習工作負載 圖形和視覺化
加速器最佳化 A 系列機器類型專為高效能運算 (HPC)、人工智慧 (AI) 和機器學習 (ML) 工作負載設計。

對於這些機器類型,系統會自動將 GPU 型號附加至執行個體。

加速器最佳化 G 系列機型專為工作負載設計,例如 NVIDIA Omniverse 模擬工作負載、含有大量圖案的應用程式、影片轉碼和虛擬桌面。這些機器類型支援 NVIDIA RTX 虛擬工作站 (vWS)

對於這些機器類型,系統會自動將 GPU 型號附加至執行個體。

  • A4X (NVIDIA GB200 Superchips)
    (nvidia-gb200)
  • A4 (NVIDIA B200)
    (nvidia-b200)
  • A3 Ultra (NVIDIA H200)
    (nvidia-h200-141gb)
  • A3 Mega (NVIDIA H100)
    (nvidia-h100-mega-80gb)
  • A3 High (NVIDIA H100)
    (nvidia-h100-80gb)
  • A3 Edge (NVIDIA H100)
    (nvidia-h100-80gb)
  • A2 Ultra (NVIDIA A100 80GB)
    (nvidia-a100-80gb)
  • A2 Standard (NVIDIA A100)
    (nvidia-a100-40gb)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (nvidia-l4)
    (nvidia-l4-vws)

建立 A4X、A4 和 A3 Ultra 群組

如要為 A4X、A4 和 A3 Ultra 系列機器大量建立執行個體,請參閱 AI Hypercomputer 說明文件中的「部署選項總覽」。

建立 A3、A2、G4 和 G2 VM 群組

本節說明如何使用 Google Cloud CLIREST,為 A3 High、A3 Mega、A3 Edge、A2 Standard、A2 Ultra、G4 和 G2 系列機器大量建立執行個體。

gcloud

如要建立 VM 群組,請使用 gcloud compute instances bulk create 指令。如要進一步瞭解參數和如何使用這項指令,請參閱「大量建立 VM」。

示例

這個範例會使用下列規格建立兩個附加 GPU 的 VM:

gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --region=REGION \
    --count=2 \
    --machine-type=MACHINE_TYPE \
    --boot-disk-size=200 \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT \
    --on-host-maintenance=TERMINATE

更改下列內容:

如果成功,輸出結果會與下列內容相似:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

選用標記

如要進一步設定執行個體,以滿足工作負載或作業系統需求,請在執行 gcloud compute instances bulk create 指令時,加入下列一或多個標記。

功能 說明
佈建模型 設定執行個體的佈建模式。 指定 SPOTFLEX_START。G4 執行個體不支援 FLEX_START。如未指定模型,系統會使用標準模型。 詳情請參閱 Compute Engine 執行個體佈建模型
--provisioning-model=PROVISIONING_MODEL
虛擬工作站 指定用於圖形工作負載的 NVIDIA RTX 虛擬工作站 (vWS)。 這項功能僅適用於 G4 和 G2 執行個體。
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

更改下列內容:

  • 如果是 VWS_ACCELERATOR_TYPE,請選擇下列其中一項:
    • 如果是 G4 執行個體,請指定 nvidia-rtx-pro-6000-vws
    • 如果是 G2 執行個體,請指定 nvidia-l4-vws
  • VWS_ACCELERATOR_COUNT 替換成所需的虛擬 GPU 數量。
本機 SSD 將一或多個本機 SSD 連接至執行個體。本機 SSD 可做為快速暫存磁碟,或將資料饋送至 GPU,同時避免 I/O 瓶頸。
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
如要瞭解每個 VM 執行個體可連接的本機 SSD 磁碟數量上限,請參閱本機 SSD 限制
網路介面 將多個網路介面附加至執行個體。對於 g4-standard-384 執行個體,最多可附加兩個網路介面。您可以使用這個旗標建立具有雙網路介面 (2 個 200 Gbps) 的執行個體。每個網路介面都必須位於不重複的虛擬私有雲網路。

   --network-interface=network=VPC_NAME_1,subnet=SUBNET_NAME_1,nic-type=GVNIC \
   --network-interface=network=VPC_NAME_2,subnet=SUBNET_NAME_2,nic-type=GVNIC
   

只有 g4-standard-384 機器類型支援雙重網路介面。

更改下列內容:

  • VPC_NAME虛擬私有雲網路的名稱。
  • SUBNET_NAME:屬於指定虛擬私有雲網路的子網路名稱。

REST

使用 instances.bulkInsert 方法和必要參數,在可用區中建立多個 VM。如要進一步瞭解參數和如何使用這項指令,請參閱「大量建立 VM」。

示例

這個範例會使用下列規格建立兩個附加 GPU 的 VM:

  • VM 名稱:my-test-vm-1my-test-vm-2
  • 每個 VM 都連接兩個 GPU,這是透過使用適當的加速器最佳化機器類型指定

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
    {
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":MACHINE_TYPE,
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":SOURCE_IMAGE_URI
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        ["automaticRestart":true]
      }
    }
    }
    

更改下列內容:

  • PROJECT_ID:您的專案 ID
  • REGION:VM 的區域。這個區域必須支援所選 GPU 型號
  • MACHINE_TYPE:您選取的機器類型。 選擇下列其中一個選項:

  • SOURCE_IMAGE_URI:要使用的特定映像檔或映像檔系列的 URI。

    例如:

    • 特定圖片:"sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • 映像檔系列:"sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"

    指定映像檔系列時,Compute Engine 會從該系列中未淘汰的最新 OS 映像檔建立 VM。如要進一步瞭解何時該使用映像檔系列,請參閱映像檔系列最佳做法

選用標記

如要進一步設定執行個體,以滿足工作負載或作業系統需求,請在執行 instances.bulkInsert 方法時,加入下列一或多個標記。

功能 說明
佈建模型 如要降低費用,請在要求中的 scheduling 物件中新增 "provisioningModel": "PROVISIONING_MODEL" 欄位,指定其他佈建模型。如果您指定建立 Spot VM,系統會忽略 onHostMaintenanceautomaticRestart 欄位。詳情請參閱 Compute Engine 執行個體佈建模型
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

PROVISIONING_MODEL 替換為下列其中一個值:

  • STANDARD:(預設) 標準執行個體。
  • SPOT:Spot VM。
  • FLEX_START:彈性啟動 VM。彈性啟動 VM 最多會運作七天,可協助您以折扣價取得 GPU 等高需求資源。G4 執行個體不支援此佈建模式。
虛擬工作站 指定用於圖形工作負載的 NVIDIA RTX 虛擬工作站 (vWS)。 這項功能僅適用於 G4 和 G2 執行個體。
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

更改下列內容:

  • 如果是 VWS_ACCELERATOR_TYPE,請選擇下列其中一項:
    • 如果是 G4 執行個體,請指定 nvidia-rtx-pro-6000-vws
    • 如果是 G2 執行個體,請指定 nvidia-l4-vws
  • VWS_ACCELERATOR_COUNT 替換成所需的虛擬 GPU 數量。
本機 SSD 將一或多個本機 SSD 連接至執行個體。本機 SSD 可做為快速暫存磁碟,或將資料饋送至 GPU,同時避免 I/O 瓶頸。
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
如要瞭解每個 VM 執行個體可連接的本機 SSD 磁碟數量上限,請參閱本機 SSD 限制
網路介面 將多個網路介面附加至執行個體。對於 g4-standard-384 執行個體,最多可附加兩個網路介面。這會建立具有雙重網路介面的執行個體 (2 個 200 Gbps)。每個網路介面都必須位於不重複的虛擬私有雲網路。

   "networkInterfaces":
   [
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_1",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_1",
       "nicType": "GVNIC"
     },
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_2",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_2",
       "nicType": "GVNIC"
     }
   ]
  

只有 g4-standard-384 機器類型支援雙重網路介面。

更改下列內容:

  • VPC_NAME虛擬私有雲網路的名稱。
  • SUBNET_NAME:屬於指定虛擬私有雲網路的子網路名稱。

建立 N1 一般用途 VM 群組

您可以使用 Google Cloud CLIREST,建立連接 GPU 的 VM 群組。

本節說明如何使用下列 GPU 類型建立多個 VM:

NVIDIA GPU:

  • NVIDIA T4:nvidia-tesla-t4
  • NVIDIA P4:nvidia-tesla-p4
  • NVIDIA P100:nvidia-tesla-p100
  • NVIDIA V100:nvidia-tesla-v100

NVIDIA RTX 虛擬工作站 (vWS) (舊稱 NVIDIA GRID):

  • NVIDIA T4 虛擬工作站:nvidia-tesla-t4-vws
  • NVIDIA P4 虛擬工作站:nvidia-tesla-p4-vws
  • NVIDIA P100 虛擬工作站:nvidia-tesla-p100-vws

    對於這些虛擬工作站,系統會自動將 NVIDIA RTX 虛擬工作站 (vWS) 授權新增至執行個體。

gcloud

如要建立 VM 群組,請使用 gcloud compute instances bulk create 指令。如要進一步瞭解參數和如何使用這項指令,請參閱「大量建立 VM」。

示例

下列範例會使用下列規格,建立兩個連接 GPU 的 VM:

  • VM 名稱:my-test-vm-1my-test-vm-2
  • 在支援 GPU 的 us-central1 中任何可用區建立的 VM
  • 每個 VM 都連結了兩個 T4 GPU,這是透過加速器類型和加速器數量標記指定
  • 每個 VM 都已安裝 GPU 驅動程式
  • 每個 VM 都使用深度學習 VM 映像檔 pytorch-latest-gpu-v20211028-debian-10
gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --count=2 \
    --region=us-central1 \
    --machine-type=n1-standard-2 \
    --accelerator type=nvidia-tesla-t4,count=2 \
    --boot-disk-size=200 \
    --metadata="install-nvidia-driver=True" \
    --scopes="https://www.googleapis.com/auth/cloud-platform" \
    --image=pytorch-latest-gpu-v20211028-debian-10 \
    --image-project=deeplearning-platform-release \
    --on-host-maintenance=TERMINATE --restart-on-failure

如果成功,輸出結果會與下列內容相似:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

使用 instances.bulkInsert 方法和必要參數,在可用區中建立多個 VM。如要進一步瞭解參數和如何使用這項指令,請參閱「大量建立 VM」。

示例

下列範例會使用下列規格,建立兩個連接 GPU 的 VM:

  • VM 名稱:my-test-vm-1my-test-vm-2
  • 在支援 GPU 的 us-central1 中任何可用區建立的 VM
  • 每個 VM 都連結了兩個 T4 GPU,這是透過加速器類型和加速器數量標記指定
  • 每個 VM 都已安裝 GPU 驅動程式
  • 每個 VM 都使用深度學習 VM 映像檔 pytorch-latest-gpu-v20211028-debian-10

PROJECT_ID 替換為您的專案 ID。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/instances/bulkInsert

{
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":"n1-standard-2",
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":"projects/deeplearning-platform-release/global/images/pytorch-latest-gpu-v20211028-debian-10"
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-t4"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        "automaticRestart":true
      },
      "metadata":{
        "items":[
          {
            "key":"install-nvidia-driver",
            "value":"True"
          }
        ]
      }
  }
 }

後續步驟