建立一次新增多個 GPU VM 的 MIG

本文說明如何建立代管執行個體群組 (MIG),一次新增多個 GPU 虛擬機器 (VM) 執行個體。

MIG 會使用目標大小政策的大量模式,一次新增所有 VM。此外,這項功能也採用彈性啟動佈建模式,可提高資源取得率。如要進一步瞭解彈性啟動佈建模式,請參閱「關於佈建模式」。

如要在 MIG 中一次新增多個 GPU VM,也可以建立規模調整要求。如要判斷大量模式或調整大小要求是否更適合您的工作負載,請參閱「大量模式與調整大小要求比較」。

如果工作負載不需要 MIG 一次建立所有 VM,但您仍想提高資源取得率,請使用彈性啟動佈建模式,如「建立含彈性啟動 VM 的 MIG」一文所述。

事前準備

  • 如要確保有足夠的 GPU 配額供要求使用的資源使用,請查看 GPU 配額
  • 如要瞭解配額用量,請參閱「GPU VM 和先占分配配額」。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

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

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

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

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

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

限制

限制如下:

一次建立 MIG 並新增 GPU VM

如要一次建立所有 GPU VM,請按照下列步驟操作:

  1. 建立執行個體範本,這是建立 MIG 的必要條件。MIG 隨後會使用這個範本,在群組中建立每個 VM。在範本中,指定彈性啟動佈建模式的設定。

    如要進一步瞭解執行個體範本,請參閱「關於執行個體範本」。

  2. 建立 MIG,大量佈建 VM。 建立 MIG 時,請將目標大小政策模式設為 BULK,在 MIG 中啟用大量佈建功能。在 BULK 模式中,MIG 會嘗試一次建立所有 VM,以達到您設定的目標大小。

建立執行個體範本

建立指定 GPU 機器系列的執行個體範本。然後使用範本建立 MIG

控制台

  1. 前往「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本)

  2. 按一下「建立執行個體範本」。「建立執行個體範本」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。

  4. 在「Machine configuration」(機器設定) 部分,執行下列操作:

    1. 按一下「GPU」分頁標籤。

    2. 在「GPU type」(GPU 類型) 清單中,選取 GPU 類型。

    3. 在「Number of GPUs」(GPU 數量) 清單中,選取 GPU 數量。

    4. 在「Machine type」(機型) 部分中,選取機型。

  5. 在「Provisioning model」(佈建模型) 部分,執行下列操作:

    1. 在「VM provisioning model」(VM 佈建模型) 清單中,選取「Flex-start」(彈性啟動)

    2. 如要為透過執行個體範本建立的 VM 設定執行時間,請在「Enter number of hours」(輸入時數) 欄位中輸入時數。值必須介於一小時 (1) 和七天 (168) 之間。

  6. (選用) 如要變更預設開機磁碟類型或映像檔,請按一下「Boot disk」(開機磁碟) 部分中的「Change」(變更)。然後按照提示變更開機磁碟。

  7. 點選「建立」

gcloud

使用 instance-templates create 指令建立執行個體範本:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

更改下列內容:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • IMAGE_PROJECT:包含圖片的圖片專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE_FAMILY映像檔系列。這會指定最新的非已淘汰 OS 映像檔。舉例來說,如果您指定 debian-12,系統會使用 Debian 12 映像檔系列中的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • REGION:要建立執行個體範本的區域。

  • MACHINE_TYPEGPU 機型。如果您指定 N1 機型,請加入 --accelerator 旗標,指定要附加至 VM 的 GPU 數量和類型。

  • RUN_DURATION:您希望要求的 VM 執行多久。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上 dhms。舉例來說,您可以指定 30m (30 分鐘),或是 1d2h3m4s (1 天 2 小時 3 分鐘 4 秒)。值必須介於 10 分鐘至 7 天之間。

REST

instanceTemplates.insert 方法發出 POST 要求,建立執行個體範本:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

更改下列內容:

  • PROJECT_ID:要在其中建立執行個體範本的專案 ID。

  • REGION:要建立執行個體範本的區域。

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。

  • IMAGE_PROJECT:包含圖片的圖片專案,例如 debian-cloud。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。

  • IMAGE:指定下列其中一項:

    • 特定版本的 OS 映像檔,例如 debian-12-bookworm-v20240617

    • 映像檔系列,格式必須為 family/IMAGE_FAMILY。這會指定未淘汰的最新 OS 映像檔。舉例來說,如果您指定 family/debian-12,系統會使用 Debian 12 映像檔系列的最新版本。如要進一步瞭解如何使用映像檔系列,請參閱「映像檔系列最佳做法」。

  • MACHINE_TYPEGPU 機型。如果您指定 N1 機型,請加入 guestAccelerators 欄位,指定要附加至 VM 的 GPU 數量和類型。

  • RUN_DURATION:您希望要求的 VM 在 MIG 自動刪除前執行的時間長度 (以秒為單位)。值必須介於 600 (600 秒,即 10 分鐘) 和 604800 (604,800 秒,即 7 天) 之間。

建立執行個體範本後,您可以查看範本,瞭解其 ID 並檢查執行個體屬性。

一次建立 MIG 並新增 GPU VM

請按照本節說明建立 MIG。在 MIG 中啟用大量佈建時,必須關閉修復功能。

控制台

  1. 前往「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下「建立執行個體群組」。「建立執行個體群組」頁面隨即開啟。

  3. 在「Name」(名稱) 欄位中,輸入 MIG 的名稱。

  4. 選取執行個體範本前,請務必關閉修復功能,並依下列方式設定位置:

    1. 如要關閉修復功能,請按照下列步驟操作:
      1. 在「VM instance lifecycle」(VM 執行個體生命週期) 區段中,清除「Allow repair of VMs in an alternate zone」(允許在替代可用區修復 VM) 核取方塊。
      2. 在「Default action on failure」(失敗時的預設動作) 清單中,選取「No action」(不採取任何動作)
    2. 如要設定「位置」部分,請按照下列步驟操作:
      • 如要建立可用區 MIG,請選取「單一可用區」
      • 如要建立區域性 MIG,請選取「多個可用區」。在「目標分配型態」中,選取「任何單一可用區」。在隨即顯示的對話方塊中,選取「停用執行個體重新分配功能」
  5. 返回「Instance template」(執行個體範本) 欄位。在「Instance template」(執行個體範本) 清單中,選取您在上一個部分中建立的執行個體範本。

  6. 在「Number of instances」(執行個體數) 欄位中,指定要一次建立的執行個體數量。

  7. 選取「透過大量目標大小政策一次取得所有 VM」核取方塊。

  8. 點選「建立」

gcloud

如要建立具有大量佈建功能的 MIG,請使用 instance-groups managed create 指令

  • 如要建立可用區 MIG,請執行下列指令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
    
  • 如要建立地區 MIG,請執行下列指令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zones=LIST_OF_ZONES \
    

更改下列內容:

  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • SIZE:MIG 中的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 如果是全域執行個體範本:INSTANCE_TEMPLATE_ID
  • ZONE:MIG 建立 VM 的可用區。
  • LIST_OF_ZONES:以半形逗號分隔的可用區清單,區域 MIG 會在這些可用區中建立 VM。例如:us-central1-a, us-central1-b, us-central1-c

REST

如要建立啟用大量建立功能的 MIG,請按照下列方式提出 POST 要求。在要求主體中,將 targetSizePolicy.mode 欄位設為 bulk

如果您使用的執行個體範本指定了彈性啟動佈建模式,則必須在下列要求中加入 "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} 欄位,關閉 MIG 中的修復功能。

  • 如要建立區域 MIG,請向 instanceGroupManagers.insert 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • 如要建立區域 MIG,請向 regionInstanceGroupManagers.insert 方法發出 POST 要求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

更改下列內容:

  • PROJECT_ID:專案 ID。
  • ZONE:MIG 建立 VM 的可用區。
  • REGION:MIG 建立 VM 的區域。
  • INSTANCE_GROUP_NAME:MIG 的名稱。
  • SIZE:MIG 中的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 如果是全域執行個體範本:INSTANCE_TEMPLATE_ID

後續步驟