Membuat MIG dengan slice Cloud TPU multi-host

Dokumen ini menjelaskan cara membuat grup instance terkelola (MIG) dengan slice TPU multi-host.

Prasyarat

Selesaikan prasyarat berikut:

  1. Buat project untuk TPU Anda seperti yang dijelaskan dalam Menyiapkan project untuk TPU.
  2. Tentukan persyaratan TPU Anda seperti yang dijelaskan dalam Merencanakan resource Anda.

Membuat MIG dengan slice TPU multi-host

  1. Membuat template instance.
  2. Buat kebijakan workload.
  3. Buat MIG.

Membuat template instance

Perintah untuk membuat template instance bergantung pada opsi konsumsi yang Anda gunakan: on-demand, Spot, terikat dengan reservasi, atau mulai fleksibel. Untuk mengetahui informasi selengkapnya tentang opsi pemakaian, lihat Merencanakan resource TPU.

Membuat template instance untuk VM TPU sesuai permintaan

Perintah berikut membuat template instance menggunakan opsi konsumsi sesuai permintaan:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "scheduling": {
        "onHostMaintenance": "TERMINATE"
      },
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • INSTANCE_TEMPLATE_NAME: Nama template instance Anda.
  • MACHINE_TYPE: Jenis mesin untuk VM TPU, misalnya, ct6e-standard-8t.
  • IMAGE_FAMILY: Kelompok image OS untuk VM TPU. Jika Anda ingin menginstal versi OS tertentu, gunakan flag --image. Untuk mengetahui informasi selengkapnya tentang image OS, lihat Image OS.
  • IMAGE_PROJECT: Project yang berisi image OS. Untuk image TPU, ini adalah ubuntu-os-accelerator-images.

Membuat template instance untuk VM Spot TPU

Perintah berikut membuat template instance menggunakan opsi konsumsi Spot:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "SPOT",
        "instanceTerminationAction": "STOP"
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • INSTANCE_TEMPLATE_NAME: Nama template instance Anda.
  • MACHINE_TYPE: Jenis mesin untuk VM TPU, misalnya, ct6e-standard-8t.
  • IMAGE_FAMILY: Kelompok image OS untuk VM TPU. Jika Anda ingin menginstal versi OS tertentu, gunakan flag --image. Untuk mengetahui informasi selengkapnya tentang image OS, lihat Image OS.
  • IMAGE_PROJECT: Project yang berisi image OS. Untuk image TPU, ini adalah ubuntu-os-accelerator-images.

Membuat template instance untuk VM yang terikat reservasi TPU

Perintah berikut membuat template instance menggunakan opsi penggunaan yang terikat dengan reservasi:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "RESERVATION_BOUND",
        "instanceTerminationAction": "DELETE"
      },
      "reservationAffinity": {
        "consumeReservationType": "SPECIFIC_RESERVATION",
        "key": "compute.googleapis.com/reservation-name",
        "values": [
          "RESERVATION_NAME"
        ]
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • INSTANCE_TEMPLATE_NAME: Nama template instance Anda.
  • MACHINE_TYPE: Jenis mesin untuk VM TPU, misalnya, ct6e-standard-8t.
  • RESERVATION_NAME: Nama reservasi khusus yang akan dipakai. Untuk pemesanan mode Semua Kapasitas, Anda dapat menargetkan blok atau sub-blok dengan menentukan URL reservasi sebagai berikut:

    • Tentukan blok:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
      
    • Tentukan sub-blok:

      RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
      
  • IMAGE_FAMILY: Kelompok image OS untuk VM TPU. Jika Anda ingin menginstal versi OS tertentu, gunakan flag --image. Untuk mengetahui informasi selengkapnya tentang image OS, lihat Image OS.

  • IMAGE_PROJECT: Project yang berisi image OS. Untuk image TPU, ini adalah ubuntu-os-accelerator-images.

Membuat template instance untuk VM TPU Flex-start

Perintah berikut membuat template instance menggunakan opsi penggunaan flex-start:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "INSTANCE_TEMPLATE_NAME",
    "properties": {
      "machineType": "MACHINE_TYPE",
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
          }
        }
      ],
      "scheduling": {
        "onHostMaintenance": "TERMINATE",
        "provisioningModel": "FLEX_START",
        "instanceTerminationAction": "DELETE",
        "maxRunDuration": {
          "seconds": "DURATION"
        }
      },
      "networkInterfaces": [
        {
          "network": "global/networks/default"
        }
      ]
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • INSTANCE_TEMPLATE_NAME: Nama template instance Anda.
  • MACHINE_TYPE: Jenis mesin untuk VM TPU, misalnya, ct6e-standard-8t.
  • DURATION: Durasi maksimum VM TPU dapat berjalan. Untuk REST, tentukan ini sebagai jumlah detik (misalnya, 3600 untuk 1 jam, atau 604800 untuk 7 hari).
  • IMAGE_FAMILY: Kelompok image OS untuk VM TPU. Jika Anda ingin menginstal versi OS tertentu, gunakan flag --image. Untuk mengetahui informasi selengkapnya tentang image OS, lihat Image OS.
  • IMAGE_PROJECT: Project yang berisi image OS. Untuk image TPU, ini adalah ubuntu-os-accelerator-images.

Membuat kebijakan beban kerja

Anda harus membuat kebijakan beban kerja dengan parameter accelerator-topology (misalnya, 4x4, 8x8, atau 4x4x4). Topologi akselerator mengonfigurasi MIG untuk memperlakukan instance sebagai slice tunggal yang saling terhubung.

Perintah berikut membuat kebijakan beban kerja untuk topologi tertentu:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "WORKLOAD_POLICY_NAME",
    "workloadPolicy": {
      "type": "HIGH_THROUGHPUT",
      "acceleratorTopology": "TOPOLOGY"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • WORKLOAD_POLICY_NAME: Nama kebijakan workload Anda.
  • TOPOLOGY: Topologi VM TPU, misalnya, 4x4x8. Untuk mengetahui informasi selengkapnya tentang topologi untuk setiap versi TPU, lihat Arsitektur sistem.
  • REGION: Region untuk kebijakan workload Anda.

Membuat MIG

Untuk membuat MIG zona yang berisi slice TPU multi-host, gunakan perintah berikut:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • MIG_NAME: Nama MIG Anda.
  • MIG_SIZE: Ukuran MIG.
  • INSTANCE_TEMPLATE_URL: URL template instance yang ingin Anda gunakan untuk membuat instance di MIG. URL dapat berisi ID atau nama template instance. Tentukan salah satu nilai berikut:
    • Untuk template instance regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Untuk template instance global: INSTANCE_TEMPLATE_ID
  • ZONE: Zona untuk MIG Anda.
  • WORKLOAD_POLICY_URL: URL kebijakan beban kerja yang ingin Anda gunakan untuk membuat instance di MIG. Contoh: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Untuk membuat MIG regional yang berisi slice TPU multi-host, gunakan perintah berikut:

gcloud

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

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": MIG_SIZE,
    "targetSizePolicy": {
      "mode": "BULK"
    },
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "instanceLifecyclePolicy": {
      "defaultActionOnFailure": "DO_NOTHING"
    },
    "resourcePolicies": {
      "workloadPolicy": "WORKLOAD_POLICY_URL"
    },
    "distributionPolicy": {
      "targetShape": "ANY_SINGLE_ZONE"
    },
    "updatePolicy": {
      "instanceRedistributionType": "NONE"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers"

Ganti placeholder berikut:

  • PROJECT_ID: ID Google Cloud project Anda.
  • MIG_NAME: Nama MIG Anda.
  • MIG_SIZE: Jumlah VM di MIG.
  • INSTANCE_TEMPLATE_URL: URL template instance yang ingin Anda gunakan untuk membuat instance di MIG. URL dapat berisi ID atau nama template instance. Tentukan salah satu nilai berikut:
    • Untuk template instance regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • Untuk template instance global: INSTANCE_TEMPLATE_ID
  • ZONE: Zona untuk MIG Anda.
  • REGION: Wilayah untuk MIG Anda.
  • WORKLOAD_POLICY_URL: URL kebijakan beban kerja yang ingin Anda gunakan untuk membuat instance di MIG. Contoh: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Membuat VM dengan nama kustom di MIG

Anda dapat membuat VM di MIG dengan menentukan nama kustom untuk setiap VM. Hal ini berguna untuk proses debug dan memastikan instance dibuat dalam urutan tertentu.

MIG yang berisi slice TPU multi-host menggunakan kebijakan ukuran target mode massal. Saat membuat VM dengan nama kustom di MIG tersebut, hal berikut berlaku:

  • Anda harus memverifikasi terlebih dahulu bahwa MIG tidak memiliki VM di dalamnya. Jika MIG memiliki VM, Anda harus mengubah ukuran MIG ke ukuran target 0 atau membuat MIG lain dengan ukuran target 0.

  • Anda hanya dapat menggunakan REST API untuk membuat VM dengan nama kustom.

Buat VM dengan nama kustom menggunakan salah satu metode REST API berikut:

  • Untuk MIG zona, gunakan 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"
         },
         ...
       ]
     }
     

  • Untuk MIG regional, gunakan 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"
         },
         ...
       ]
     }
     

Ganti placeholder berikut:

  • PROJECT_ID: ID project tempat MIG berada.
  • ZONE: Zona MIG.
  • REGION: Region MIG.
  • INSTANCE_NAME_1,2,..: Nama VM yang akan ditambahkan ke MIG yang ditentukan.

Langkah berikutnya