Solicitar VMs spot de TPU

As VMs spot oferecem capacidade não utilizada a taxas com grandes descontos. Embora as VMs spot possam ser interrompidas a qualquer momento, elas não têm uma duração máxima do ambiente de execução, ao contrário das TPUs preemptivas. Para reiniciar uma instância ou um MIG de VMs spot, é necessário excluir e recriar.

Para mais informações sobre VMs spot, consulte a documentação do Compute Engine sobre VMs spot.

Criar VMs spot de TPU

É possível criar VMs spot de TPU como instâncias individuais ou como parte de um grupo gerenciado de instâncias (MIG, na sigla em inglês).

Para criar VMs spot de TPU com um MIG, especifique o modelo de provisionamento spot no modelo de instância.

  1. Criar um modelo de instância:

    gcloud

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --project=PROJECT_ID \
        --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"
    

    Substitua os seguintes marcadores de posição:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
    • MACHINE_TYPE: o tipo de máquina da VM de TPU, por exemplo, ct6e-standard-8t.
    • IMAGE_FAMILY: a família de imagens do SO para a VM de TPU. Se você quiser instalar uma versão específica do SO, use a flag --image. Para mais informações sobre imagens do SO, consulte Imagens do SO.
    • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, esse é ubuntu-os-accelerator-images.
  2. Criar uma política de carga de trabalho

    O comando a seguir cria uma política de carga de trabalho. Isso é opcional para fatias de host único.

    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"
    

    Substitua os seguintes marcadores de posição:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • WORKLOAD_POLICY_NAME: o nome da política de carga de trabalho.
    • TOPOLOGY: a topologia das VMs de TPU, por exemplo, 4x4x8. Para mais informações sobre a topologia de cada versão da TPU, consulte Versões de TPU.
    • REGION: a região da sua política de carga de trabalho.
  3. Criar o MIG:

    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"
    

    Substitua os seguintes marcadores de posição:

    • PROJECT_ID: o ID doprojeto. Google Cloud
    • MIG_NAME: o nome do MIG.
    • MIG_SIZE: o tamanho do MIG.
    • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que você quer usar para criar instâncias no MIG. O URL pode conter o ID ou o nome do modelo de instância. Especifique um dos seguintes valores:
      • Para um modelo de instância regional: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID.
      • Para um modelo de instância global: INSTANCE_TEMPLATE_ID
    • ZONE: a zona do MIG.
    • WORKLOAD_POLICY_URL: o URL da política de carga de trabalho que você quer usar para criar instâncias no MIG. Por exemplo: projects/PROJECT_ID/regions/WORKLOAD_POLICY_REGION/resourcePolicies/WORKLOAD_POLICY_NAME.

Como usar VMs de TPU únicas

Também é possível criar VMs spot de TPU únicas.

gcloud

gcloud compute instances create TPU_NAME \
  --machine-type=MACHINE_TYPE \
  --image-family=IMAGE_FAMILY \
  --image-project=IMAGE_PROJECT \
  --zone=ZONE \
  --provisioning-model=SPOT \
  --instance-termination-action=DELETE \
  --maintenance-policy=TERMINATE

REST

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

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID doprojeto. Google Cloud
  • TPU_NAME: um nome para a VM de TPU.
  • MACHINE_TYPE: o tipo de máquina da VM de TPU (por exemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: a família de imagens do SO para a VM de TPU. Se você quiser instalar uma versão específica do SO, use a --image flag. Para mais informações sobre imagens do SO, consulte Imagens do SO.
  • IMAGE_PROJECT: o projeto que contém a imagem do SO. Para imagens de TPU, esse é ubuntu-os-accelerator-images.
  • ZONE: a zona da VM de TPU (por exemplo, us-central1-b).

Para mais informações sobre VMs spot no Compute Engine, consulte VMs spot.

Preços e cotas

O preço das VMs spot de TPU é significativamente menor do que o das TPUs on demand e reservadas. Para mais informações sobre preços, consulte Preços do Cloud TPU.

Você precisa de uma cota preemptiva para usar as VMs spot de TPU. Saiba mais em veja Cotas.

A seguir