大量建立 GPU VM

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

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

事前準備

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

    選取這個頁面上您打算如何使用範例的分頁:

    gcloud

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

      gcloud init

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

  • 設定預設地區和區域
  • REST

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

      安裝 Google Cloud CLI。

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

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

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

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

所需權限

如要建立 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 使用的服務帳戶,請在 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 的任何區域。

機器類型

您可以透過加速器最佳化或 N1 一般用途機器類型,大量建立 GPU VM。

Compute Engine 提供不同機器類型,支援各種工作負載。

部分機器類型支援 NVIDIA RTX 虛擬工作站 (vWS)。建立使用 NVIDIA RTX Virtual Workstation 的執行個體時,Compute Engine 會自動新增 vWS 授權。如要瞭解虛擬工作站的定價,請參閱 GPU 定價頁面

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

後續世代的 A 系列非常適合預先訓練和微調基礎模型,這類模型需要大量加速器叢集;而 A2 系列則可用於訓練較小的模型和單一主機推論。

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

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

G 系列也可用於訓練較小的模型,以及單一主機推論。

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

對於 N1 一般用途機器類型 (N1 共用核心除外,即 f1-microg1-small),您可以附加特定 GPU 模型。其中部分 GPU 型號也支援 NVIDIA RTX 虛擬工作站 (vWS)。

  • A4X Max (NVIDIA GB300 Ultra Superchips)
    (nvidia-gb300)
  • 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 4OGB)
    (nvidia-tesla-a100)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (nvidia-l4)
    (nvidia-l4-vws)
下列 GPU 型號可附加至 N1 一般用途機器類型:
  • NVIDIA T4
    (nvidia-tesla-t4)
    (nvidia-tesla-t4-vws)
  • NVIDIA P4
    (nvidia-tesla-p4)
    (nvidia-tesla-p4-vws)
  • NVIDIA V100
    (nvidia-tesla-v100)
  • NVIDIA P100
    (nvidia-tesla-p100)
    (nvidia-tesla-p100-vws)。NVIDIA P100 即將終止支援,詳情請參閱「NVIDIA P100 終止支援」。

建立 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:

  • VM 名稱:my-test-vm-1my-test-vm-2
  • 每個 VM 都連接兩個 GPU,方法是使用適當的加速器最佳化機型
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

更改下列內容:

  • REGION:VM 的區域。這個區域必須支援您選取的加速器最佳化機型
  • MACHINE_TYPE:您選取的機型。選擇下列其中一個選項:

  • 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.]

選用旗標

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

功能 說明
佈建模型 設定執行個體的佈建模式。您可以指定 STANDARDSPOT。如未指定佈建模型,Compute Engine 會將值設為 STANDARD。詳情請參閱「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:屬於指定虛擬私有雲網路的子網路名稱。
配置政策 控管執行個體在可用區中的位置。您可以指定密集政策,盡量減少 G2 執行個體之間的網路延遲;也可以指定分散政策,提升 G4 或 G2 執行個體在可用區發生中斷時的復原能力。
   --resource-policies=POLICY_NAME
   

POLICY_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" 欄位,指定其他佈建模型。詳情請參閱「Compute Engine 執行個體佈建模型」。
    "scheduling":
     {
       "onHostMaintenance": "TERMINATE",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

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

  • STANDARD:標準執行個體。這是預設值。
  • SPOT:Spot VM。如果您建立 Spot VM,系統會覆寫 onHostMaintenanceautomaticRestart 欄位。Spot VM 的折扣幅度很大,但 Compute Engine 隨時可能會先占這些 VM 並取回資源。
虛擬工作站 指定用於圖形工作負載的 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_1VPC_NAME_2虛擬私有雲網路的名稱。
  • SUBNET_NAME:屬於指定虛擬私有雲網路的子網路名稱。
配置政策 控管執行個體在可用區中的位置。您可以指定密集政策,盡量減少 G2 執行個體之間的網路延遲;也可以指定分散政策,提升 G4 或 G2 執行個體在可用區發生中斷時的復原能力。
   "resourcePolicies": [
     "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
   ]
   

更改下列內容:

  • REGION:放置政策所在的區域。您只能在與政策相同的區域中建立執行個體。
  • POLICY_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"
          }
        ]
      }
  }
 }

後續步驟