建立含有多主機 TPU 配量的 MIG

本文說明如何建立代管執行個體群組 (MIG),形成多主機 TPU 節點。

事前準備

  • 請參閱限制,瞭解如何使用 TPU 執行個體建立 MIG。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

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

    2. 設定預設地區和區域

必要條件

繼續建立多主機 TPU 配量前,請務必完成下列步驟:

  1. 選擇 TPU 版本:選取適合工作負載的 TPU 版本。如需依工作負載類型列出的 TPU 版本,請參閱「依工作負載類型建議的 TPU 版本」。

  2. 驗證偏好位置的 TPU 可用性:TPU 僅在特定 Google Cloud 區域提供。如要使用 TPU 版本,請確認該版本在偏好區域是否可用。如需 TPU 位置清單,請參閱 TPU 可用性

  3. 確認專案有足夠的 TPU 配額:如要使用隨選或 Spot VM 建立多主機 TPU 節點,您必須在要使用的區域中,擁有足夠的可用 TPU 配額。建立耗用 TPU 預留項目的多主機 TPU 配量時,不需要任何 TPU 配額,因為配額是在建立預留項目時使用。如需 TPU 配額名稱清單,請參閱「TPU 配額」;如需查看配額的操作說明,請參閱「查看及管理配額」。

  4. 選擇 TPU 計費方案:選取最符合工作負載、工作負載時間長度和費用需求的計費方案。如需各 TPU 版本適用的用量方案清單,請參閱 TPU 用量方案

  5. 選擇拓撲:選取所選 TPU 版本支援的拓撲。如需各個 TPU 版本適用的拓撲清單,請參閱「TPU 拓撲」。

建立含有多主機 TPU 配量的 MIG

  1. 建立執行個體範本。
  2. 建立工作負載政策。
  3. 建立 MIG。

建立執行個體範本

建立執行個體範本的指令取決於您使用的消耗選項:隨選、Spot、取決於預留項目或彈性啟動。如要進一步瞭解用量選項,請參閱「關於 VM 佈建模式」。

為隨選 TPU VM 建立執行個體範本

下列指令會使用隨選消耗選項建立執行個體範本:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替換下列預留位置:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
  • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
  • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images

建立 TPU Spot VM 的執行個體範本

以下指令會使用 Spot 消耗量選項建立執行個體範本:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=STOP \
  --provisioning-model=SPOT \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替換下列預留位置:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
  • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
  • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images

為繫結 TPU 預留項目的 VM 建立執行個體範本

下列指令會使用與預訂項目綁定的消耗量選項,建立執行個體範本:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --machine-type=MACHINE_TYPE \
  --maintenance-policy=TERMINATE \
  --instance-termination-action=DELETE \
  --reservation-affinity=specific \
  --provisioning-model=reservation-bound \
  --reservation=RESERVATION_NAME \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT

替換下列預留位置:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
  • RESERVATION_NAME:要使用的特定預訂項目名稱。
  • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
  • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images

為 TPU 彈性啟動型 VM 建立執行個體範本

下列指令會使用彈性啟動消耗選項建立執行個體範本:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --instance-termination-action=DELETE \
    --provisioning-model=FLEX_START \
    --max-run-duration=DURATION \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT

替換下列預留位置:

  • INSTANCE_TEMPLATE_NAME:執行個體範本的名稱。
  • MACHINE_TYPE:TPU VM 的機型,例如 ct6e-standard-8t
  • DURATION:TPU VM 的執行時間上限。
  • IMAGE_FAMILY:TPU VM 的作業系統映像檔系列。如要安裝特定 OS 版本,請使用 --image 旗標。如要進一步瞭解 OS 映像檔,請參閱「OS 映像檔」。
  • IMAGE_PROJECT:包含 OS 映像檔的專案。如果是 TPU 映像檔,則為 ubuntu-os-accelerator-images

建立工作負載政策

您必須使用 accelerator-topology 參數 (例如 4x48x84x4x4) 建立工作負載政策。加速器拓撲會將 MIG 設定為將執行個體視為單一互連的切片。

下列指令會建立工作負載政策:

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --accelerator-topology=TOPOLOGY \
  --region=REGION

替換下列預留位置:

  • WORKLOAD_POLICY_NAME:工作負載政策的名稱。
  • TOPOLOGY:TPU VM 的拓撲,例如 4x4x8。如要進一步瞭解各個 TPU 版本的拓撲,請參閱 TPU 拓撲
  • REGION:工作負載政策的區域

建立 MIG

使用 gcloud compute instance-groups managed create 指令建立可用區或區域性 MIG,如下所示:

  • 如要建立包含多主機 TPU 配量的區域 MIG,請使用下列指令:

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL
    
  • 如要建立包含多主機 TPU 配量的區域性 MIG,請使用下列指令:

     gcloud compute instance-groups managed create MIG_NAME \
        --size=MIG_SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION \
        --default-action-on-vm-failure=do-nothing \
        --workload-policy=WORKLOAD_POLICY_URL \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none
    

替換下列預留位置:

  • MIG_NAME:MIG 的名稱。
  • MIG_SIZE:MIG 中的 VM 數量。
  • INSTANCE_TEMPLATE_URL:您要用於在 MIG 中建立執行個體的執行個體範本網址。網址可以包含執行個體範本的 ID 或名稱。請指定下列其中一個值:
    • 如果是區域執行個體範本:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 如果是全域執行個體範本:INSTANCE_TEMPLATE_ID
  • ZONE:MIG 的區域
  • REGION:MIG 的區域
  • WORKLOAD_POLICY_URL:您要用來在 MIG 中建立執行個體的執行個體政策網址。例如:projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME

在 MIG 中使用自訂名稱建立 VM

您可以為每個 VM 指定自訂名稱,在 MIG 中建立 VM。這有助於偵錯,並確保執行個體是以特定順序建立。

含有多主機 TPU 配量的 MIG 會使用目標大小政策的大量模式。在這種 MIG 中使用自訂名稱建立 VM 時,適用下列事項:

  • 您必須先驗證 MIG 中沒有 VM,如果 MIG 含有 VM,您必須調整 MIG 大小,將目標大小設為 0,或是建立另一個 MIG,並將目標大小設為 0

  • 您只能使用 REST API 建立自訂名稱的 VM。

使用下列其中一種 REST API 方法,建立具有自訂名稱的 VM:

  • 如果是區域 MIG,請使用 instanceGroupManagers.createInstances

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

  • 如果是區域 MIG,請使用 regionInstanceGroupManagers.createInstances

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/createInstances
     {
       "instances": [
         {
           "name": "INSTANCE_NAME_1"
         },
         {
           "name": "INSTANCE_NAME_2"
         },
         ...
       ]
     }
     

替換下列預留位置:

  • PROJECT_ID:MIG 所在的專案 ID。
  • ZONE:MIG 的區域
  • REGION:MIG 的區域
  • INSTANCE_NAME_1,2,..:要新增至指定 MIG 的 VM 名稱。

後續步驟