建立彈性啟動 VM

本文說明如何建立彈性啟動虛擬機器 (VM) 執行個體。彈性啟動 VM 最多可執行七天,協助您以折扣價取得 GPU 等高需求資源。這些功能讓彈性啟動 VM 成為執行短期工作負載的經濟實惠解決方案,例如模型微調和批次推論。

如要進一步瞭解彈性啟動 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 磁碟的權限

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

建立彈性啟動 VM

如要建立彈性啟動 VM,請選取下列任一選項:

gcloud

如要建立彈性啟動 VM,請使用 gcloud compute instances create 指令搭配下列旗標:

  • --request-valid-for-duration 旗標

  • --provisioning-model=FLEX_START 旗標

  • --instance-termination-action 旗標

  • --max-run-duration 旗標

  • --maintenance-policy=TERMINATE 旗標

  • --reservation-affinity=none 旗標

如要建立彈性啟動 VM,請執行下列指令:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

更改下列內容:

  • VM_NAME:新 VM 的名稱。

  • MACHINE_TYPE:用於彈性啟動 VM 的機器類型。如果您指定 G2 或 N1 機器類型,請注意下列事項:

    • 對於 G2 機器類型,您可以選擇指定要用於圖形密集型工作負載的 NVIDIA RTX 虛擬工作站 (vWS)。如要這麼做,請在指令中加入 --accelerator 標記,如下所示:

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
      

      VWS_ACCELERATOR_COUNT 替換為工作負載所需的 NVIDIA RTX vWS 數量。

    • 如果是 N1 機器類型,您必須指定要附加至 VM 的 GPU 數量和類型。否則 VM 建立作業會失敗。如要將 GPU 附加至 N1 VM,請在指令中加入 --accelerator 旗標,如下所示:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      更改下列內容:

  • ZONE:要建立 VM 的區域。 如要確認您指定的機器類型在要建立 VM 的區域是否可用,請參閱可用地區與區域

  • VALID_FOR_DURATION:等待佈建所要求資源的最長時間,格式為數字後接單位 (smhd)。舉例來說,值為 30m 代表 30 分鐘,值為 1h2m3s 代表 1 小時 2 分 3 秒。根據工作負載的區域需求,建議您指定下列其中一個時間長度,提高 VM 建立要求成功的機率:

    • 如果工作負載要求您在特定可用區中建立 VM,請指定 90 秒 (90s) 到兩小時 (2h) 的時間長度。時間越長,取得資源的機率就越高。

    • 如果 VM 可以在區域內的任何區域執行,請指定零秒的持續時間 (0s)。這個值表示 Compute Engine 只會在資源可立即使用時分配資源。如果建立要求因資源無法使用而失敗,請在不同區域重試要求。

  • TERMINATION_ACTION:是否要在 VM 執行時間結束時停止或刪除 VM。指定下列其中一個值:

    • 如要停止 VM:STOP

    • 如要刪除 VM,請執行 DELETE

  • RUN_DURATION:虛擬機器的最長執行時間,格式為數字加上單位 (smhd),時間到期後 Compute Engine 會刪除虛擬機器。值必須介於 10 分鐘和 7 天之間。

REST

如要建立彈性啟動 VM,請對 instances.insert 方法發出 POST 要求。在要求主體中加入下列欄位:

  • params.requestValidForDuration 欄位。

  • scheduling.provisioningModel 欄位設為 FLEX_START

  • scheduling.instanceTerminationAction 欄位。

  • scheduling.maxRunDuration 欄位。

  • scheduling.onHostMaintenance 欄位設為 TERMINATE

  • reservationAffinity.consumeReservationType已設為 NO_RESERVATION

如要建立彈性啟動 VM,請發出 POST 要求,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

更改下列內容:

  • PROJECT_ID:要在其中建立 VM 的專案 ID。

  • ZONE:要建立 VM 的區域。 如要確認機器類型在您要建立 VM 的區域是否可用,請參閱可用地區與區域一節。

  • VM_NAME:新 VM 的名稱。

  • MACHINE_TYPE:用於彈性啟動 VM 的機器類型。如果您指定 G2 或 N1 機器類型,請注意下列事項:

    • 對於 G2 機器類型,您可以選擇指定要用於圖形密集型工作負載的 NVIDIA RTX 虛擬工作站 (vWS)。如要這麼做,請在要求主體中加入 guestAccelerators 欄位,如下所示:

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

      VWS_ACCELERATOR_COUNT 替換為工作負載所需的 NVIDIA RTX vWS 數量。

    • 如果是 N1 機器類型,您必須指定要附加至 VM 的 GPU 數量和類型。否則 VM 建立作業會失敗。如要將 GPU 附加至 N1 VM,請在要求主體中加入 guestAccelerators 欄位,如下所示:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

      更改下列內容:

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

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

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

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

  • VALID_FOR_DURATION:等待 VM 佈建的時間上限 (以秒為單位)。根據工作負載的區域需求,建議您指定下列其中一個時間長度,以提高 VM 建立要求成功的機率:

    • 如果工作負載要求您在特定可用區中建立 VM,請指定 90 秒 (90) 到兩小時 (7200) 的時間長度。時間越長,取得資源的機率就越高。

    • 如果 VM 可以在區域內的任何區域執行,請指定零秒的持續時間 (0)。這個值表示 Compute Engine 只會在資源可立即使用時分配資源。如果建立要求因資源不足而失敗,請在不同區域重試要求。

  • TERMINATION_ACTION:是否要在 VM 執行時間結束時停止或刪除 VM。指定下列其中一個值:

    • 如要停止 VM:STOP

    • 如要刪除 VM,請執行 DELETE

  • RUN_DURATION:VM 執行時間上限 (以秒為單位),超過這個時間後,Compute Engine 就會刪除 VM。這個值必須介於 600 秒 (10 分鐘) 和 604,800 秒 (七天) 之間。

後續步驟

歡迎試用

如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 Compute Engine 的成效。新客戶可以獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。

免費試用 Compute Engine