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

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

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

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

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

事前準備

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

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

    控制台

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

    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 進行驗證」。

限制

限制如下:

一次建立 MIG 並新增 GPU VM

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

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

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

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

建立執行個體範本

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

注意:如要執行資料科學或機器學習工作負載,建議您建立執行個體範本時使用深度學習 VM 映像檔。深度學習 VM 映像檔是一系列預先封裝的 VM 映像檔,隨附機器學習架構和基本工具。如要進一步瞭解這些映像檔,請參閱深層學習 VM 映像檔說明文件中的「選擇映像檔」。

控制台

  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

後續步驟