Criar VMs de início flexível de TPU com o Compute Engine

As VMs de início flexível de TPU, com tecnologia do Dynamic Workload Scheduler, oferecem uma maneira flexível e econômica de acessar recursos de TPU para cargas de trabalho de IA por até 7 dias sem reservas de longo prazo. Quando você solicita VMs de início flexível de TPU, sua solicitação permanece em uma fila até que a capacidade esteja disponível. Depois de provisionadas, as VMs de TPU são executadas pelo período especificado.

Essas VMs são adequadas para experimentos rápidos, testes em pequena escala, provisionamento dinâmico de TPUs para cargas de trabalho de inferência, ajuste de modelos e execuções de carga de trabalho que levam menos de sete dias. Para mais informações sobre outras opções de consumo de TPU, consulte Opções de consumo do Cloud TPU.

Você pode excluir seus recursos de TPU a qualquer momento para interromper o faturamento. Para mais informações sobre os preços das TPUs, consulte Preços do Cloud TPU.

Limitações

As VMs de início flexível de TPU têm as seguintes limitações:

  • É possível solicitar essas VMs por até sete dias.
  • É possível solicitar tipos de máquina TPU7x, TPU v6e e TPU v5p. Para mais informações sobre as regiões e zonas em que esses tipos de máquina estão disponíveis, consulte Regiões e zonas de TPU.

Os MIGs com TPUs têm as seguintes limitações:

  • Operações de ciclo de vida: não é possível interromper, iniciar, retomar ou suspender instâncias de TPU. Para mudar configurações que exigem uma reinicialização ou parar de gerar custos, exclua as instâncias.

  • Distribuição de zona do MIG regional: defina o formato de distribuição de destino como ANY_SINGLE_ZONE.

  • Atualizações de configuração em um MIG:

    • Não é possível atualizar um MIG que forma uma fração de TPU de vários hosts devido à topologia de acelerador definida.
    • É possível atualizar um MIG que forma frações de TPU de host único usando os métodos automático ou seletivo. No entanto, as atualizações para fatias de TPU de host único não aceitam a ação de reinicialização (RESTART). Se uma reinicialização for necessária e a ação mais disruptiva permitida for a substituição (REPLACE), o atualizador vai substituir a instância. Caso contrário, a tentativa de atualização vai falhar com um erro.

  • Para um MIG que forma uma fração de TPU de vários hosts, as seguintes limitações também se aplicam:

    • Política de tamanho do destino: defina o modo da política de tamanho do destino como BULK. Depois de definir esse modo, não será possível mudar.

    • Tamanho do destino: no modo em massa, é possível definir o tamanho do destino como 0 ou o número de instâncias necessárias para formar a topologia do acelerador.

    • Política de carga de trabalho: especifique uma política de carga de trabalho em que a topologia do acelerador esteja definida. Depois de definir a política de carga de trabalho, não é possível mudar ou remover a política do MIG.

    • Reparos iniciados pelo MIG: é necessário desativar os reparos iniciados pelo MIG definindo o campo defaultActionOnFailure como DO_NOTHING. Nessa configuração, o MIG não realiza nenhuma ação em uma instância com falha. O Compute Engine recupera automaticamente a instância com falha reiniciando todas as instâncias na mesma fração em uma capacidade íntegra.

  • Recursos não compatíveis: MIGs com TPUs não são compatíveis com os seguintes recursos:

Antes de começar

Antes de solicitar as VMs de início flexível de TPU, faça o seguinte:

  • Instale a CLI do Google Cloud.
  • Crie um projeto do Google Cloud .
  • Ative a API Compute Engine (compute.googleapis.com)
  • Verifique se você tem as permissões necessárias:
    • roles/compute.instanceAdmin.v1
    • roles/iam.serviceAccountUser

Para mais informações, consulte Configurar um projeto do Google Cloud para TPUs.

Verifique se você tem cota preemptiva suficiente para usar as VMs de início flexível de TPU. Se a carga de trabalho exigir mais núcleos do que a alocação atual, solicite um aumento de cota. Para mais detalhes, consulte Cotas do Cloud TPU.

Criar VMs de início flexível de TPU com MIGs

Para usar VMs de início flexível de TPU, crie um grupo gerenciado de instâncias (MIG) com uma configuração específica de modelo de instância.

Para instruções gerais sobre como criar VMs de início flexível, consulte Criar VMs de início flexível.

Criar VMs de início flexível de TPU com uma fração de vários hosts

Criar um modelo de instância

Crie um modelo de instância especificando o modelo de provisionamento FLEX_START e a duração da execução escolhida.

gcloud

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

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/regions/REGION/instanceTemplates"

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID do seu projeto do Google Cloud .
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
  • MACHINE_TYPE: o tipo de máquina para a VM de TPU (por exemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: a família de imagens do SO para a VM de TPU (por exemplo, ubuntu-accelerator-2204-amd64-with-tpu-v6e)
  • IMAGE_PROJECT: o projeto de imagem do SO para a VM de TPU (por exemplo, ubuntu-os-accelerator-images).
  • DURATION: a duração máxima da execução. Para REST, especifique isso como um número de segundos (por exemplo, 3600 para 1 hora ou 604800 para 7 dias).
  • REGION: a região em que o modelo de instância será criado.

Criar uma política de carga de trabalho

O comando a seguir cria uma política de carga de trabalho. Isso é opcional para frações 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 do seu projeto do Google Cloud .
  • WORKLOAD_POLICY_NAME: o nome da política de carga de trabalho.
  • TOPOLOGY: a topologia das VMs de TPU, por exemplo, 4x4x8.
  • REGION: a região em que a política de carga de trabalho será criada.

Criar o MIG

Crie o MIG usando o modelo.

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --workload-policy=WORKLOAD_POLICY_URL \
    --default-action-on-vm-failure=do-nothing \
    --target-size-policy-mode=bulk

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MIG_NAME",
    "targetSize": 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 do seu projeto do Google Cloud .
  • MIG_NAME: o nome do MIG.
  • ZONE: a zona 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
  • SIZE: o número de instâncias a serem criadas.
  • 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.

Criar VMs de início flexível de TPU com frações de host único

Criar um modelo de instância

Crie um modelo de instância especificando o modelo de provisionamento FLEX_START e a duração da execução escolhida.

gcloud

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

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/regions/REGION/instanceTemplates"

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID do seu projeto do Google Cloud .
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
  • MACHINE_TYPE: o tipo de máquina para a VM de TPU (por exemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: a família de imagens do SO para a VM de TPU (por exemplo, ubuntu-accelerator-2204-amd64-with-tpu-v6e)
  • IMAGE_PROJECT: o projeto de imagem do SO para a VM de TPU (por exemplo, ubuntu-os-accelerator-images)
  • DURATION: a duração máxima da execução. Para REST, especifique isso como um número de segundos (por exemplo, 3600 para 1 hora ou 604800 para 7 dias).
  • REGION: a região em que o modelo de instância será criado.

Criar uma política de carga de trabalho

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

gcloud

gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \
  --type=high-throughput \
  --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"
    }
  }' \
  "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies"

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID do seu projeto do Google Cloud .
  • WORKLOAD_POLICY_NAME: um nome para a política de carga de trabalho.
  • REGION: a região em que a política de carga de trabalho será criada.

Criar o MIG

Crie o MIG usando o modelo.

gcloud

gcloud compute instance-groups managed create MIG_NAME \
    --zone=ZONE \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --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": SIZE,
    "instanceTemplate": "INSTANCE_TEMPLATE_URL",
    "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 do seu projeto do Google Cloud .
  • MIG_NAME: o nome do MIG.
  • ZONE: a zona 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
  • SIZE: o número de instâncias a serem criadas.
  • 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.