大量建立 GPU VM


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

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

事前準備

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

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

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

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

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳情請參閱 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.networks.use 專案
  • 如要為 VM 指定靜態 IP 位址: 專案的 compute.addresses.use
  • 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定 compute.networks.useExternalIp
  • 如要為 VM 指定子網路,請在專案或所選子網路上授予 compute.subnetworks.use 權限。
  • 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上取得 compute.subnetworks.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。如果您有 3D 視覺化等需要處理大量圖形的工作負載,也可以建立採用 NVIDIA RTX 虛擬工作站 (vWS) 的虛擬工作站。部分 GPU 型號支援 NVIDIA RTX 虛擬工作站。

機器類型 GPU 型號 NVIDIA RTX 虛擬工作站 (vWS) 模型
A4X NVIDIA GB200 Grace Blackwell 超級晶片 (nvidia-gb200)。

每個 Superchip 包含四個 NVIDIA B200 Blackwell GPU。

A4 NVIDIA B200 Blackwell GPU (nvidia-b200)
A3 Ultra NVIDIA H200 SXM GPU (nvidia-h200-141gb)
A3 Mega NVIDIA H100 SXM GPU (nvidia-h100-mega-80gb)
A3 HighA3 Edge NVIDIA H100 SXM GPU (nvidia-h100-80gb)
A2 Ultra NVIDIA A100 80 GB GPU (nvidia-a100-80gb)
A2 標準 NVIDIA A100 40GB GPU (nvidia-a100-40gb)
G2 NVIDIA L4 GPU (nvidia-l4) NVIDIA L4 虛擬工作站 GPU (nvidia-l4-vws)

建立 A3、A2 和 G2 VM 群組

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

gcloud

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

範例指令中顯示下列選用標記:

  • --provisioning-model=SPOT 是選用旗標,可用於將 VM 設為 Spot VM。如果工作負載具備容錯能力,且能承受 VM 可能遭到先占的影響,建議使用 Spot VM,以降低 VM 和附加 GPU 的費用。詳情請參閱「Spot VM 上的 GPU」。對於 Spot VM,自動重新啟動和主機維護選項標記會停用。

  • --accelerator 標記,用於指定虛擬工作站。 NVIDIA RTX 虛擬工作站 (vWS) 僅支援 G2 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 \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

更改下列內容:

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

    • A3 機型
    • A2 機型
    • G2 機型。G2 機器類型也支援自訂記憶體。記憶體必須是 1024 MB 的倍數,且在支援的記憶體範圍內。舉例來說,如要建立具有 4 個 vCPU 和 19 GB 記憶體的 VM,請指定 --machine-type=g2-custom-4-19456
  • IMAGE支援 GPU 的作業系統映像檔

    如要使用映像檔系列中的最新映像檔,請將 --image 旗標替換為 --image-family 旗標,並將其值設為支援 GPU 的映像檔系列。例如: --image-family=rocky-linux-8-optimized-gcp

    您也可以指定自訂映像檔或深度學習 VM 映像檔

  • IMAGE_PROJECT:OS 映像檔所屬的 Compute Engine 映像檔專案。如果使用自訂映像檔或深度學習 VM 映像檔,請指定這些映像檔所屬的專案。

  • VWS_ACCELERATOR_COUNT:您需要的虛擬 GPU 數量。

如果成功,輸出內容會類似如下:

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
  • 每個 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:您選取的機器類型。選擇下列其中一個選項:

    • A2 機型
    • G2 機型。G2 機器類型也支援自訂記憶體。記憶體必須是 1024 MB 的倍數,且在支援的記憶體範圍內。舉例來說,如要建立具有 4 個 vCPU 和 19 GB 記憶體的 VM,請指定 --machine-type=g2-custom-4-19456
  • 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。如要進一步瞭解何時該使用映像檔系列,請參閱映像檔系列最佳做法

其他設定:

  • 如果工作負載具備容錯能力,且能承受 VM 可能遭到先占的影響,則可考慮使用 Spot VM,以降低 VM 和所連結 GPU 的費用。詳情請參閱在 Spot VM 上使用 GPU。 如要使用 Spot VM,請在要求中新增 "provisioningModel": "SPOT 選項。對於 Spot VM,自動重新啟動和主機維護選項標記會停用。

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • G2 VM 支援 NVIDIA RTX 虛擬工作站 (vWS)。如要指定虛擬工作站,請在要求中加入 guestAccelerators 選項。請將 VWS_ACCELERATOR_COUNT 替換為需要的虛擬 GPU 數量。

    "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
       }
     ]
    

建立 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"
          }
        ]
      }
  }
 }

後續步驟