Criar um MIG com fração de TPU de vários hosts

Neste documento, descrevemos como criar um grupo gerenciado de instâncias (MIG, na sigla em inglês) que forma uma fração de TPU de vários hosts.

Antes de começar

Pré-requisitos

Antes de criar uma fração de TPU de vários hosts, faça o seguinte:

  1. Escolha a versão da TPU: selecione a versão da TPU adequada para sua carga de trabalho. Para uma lista de versões de TPU por tipo de carga de trabalho, consulte Versões de TPU recomendadas por tipos de carga de trabalho.

  2. Valide a disponibilidade da TPU no local de sua preferência: as TPUs estão disponíveis em regiões Google Cloud específicas. Para usar uma versão de TPU, verifique a disponibilidade dela na região de sua preferência. Para uma lista de locais de TPU, consulte Disponibilidade de TPU.

  3. Verifique se o projeto tem cota de TPU suficiente: se você estiver criando uma fração de TPU de vários hosts com VMs spot ou sob demanda, é preciso ter cota de TPU suficiente disponível na região que você quer usar. A criação de uma fração de TPU de vários hosts que consome uma reserva de TPU não exige nenhuma cota de TPU, já que a cota é usada quando a reserva é criada. Para uma lista de nomes de cota de TPU, consulte Cota de TPU e, para instruções sobre como visualizar a cota, consulte Visualizar e gerenciar cotas

  4. Escolha uma opção de consumo de TPU: selecione uma opção de consumo que melhor se ajuste à sua carga de trabalho, à duração dela e às suas necessidades de custo. Para uma lista de disponibilidade de opções de consumo por versões de TPU, consulte Opções de consumo de TPU.

  5. Escolha uma topologia: selecione uma topologia compatível com a versão de TPU selecionada. Para uma lista de topologias disponíveis para cada versão de TPU, consulte Topologia de TPU.

Criar um MIG com frações de TPU de vários hosts

  1. Criar um modelo de instância.
  2. Criar uma política de carga de trabalho.
  3. Criar o MIG.

Criar um modelo de instância

O comando para criar um modelo de instância depende da opção de consumo usada: sob demanda, spot, vinculada à reserva ou início flexível. Para mais informações sobre as opções de consumo, consulte Sobre os modelos de provisionamento de VM.

Criar um modelo de instância para uma VM de TPU sob demanda

O comando a seguir cria um modelo de instância usando a opção de consumo sob demanda:

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

Substitua os seguintes marcadores de posição:

  • 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 o --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.

Criar um modelo de instância para uma VM spot de TPU

O comando a seguir cria um modelo de instância usando a opção de consumo 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

Substitua os seguintes marcadores de posição:

  • 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 o --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.

Criar um modelo de instância para uma VM de TPU vinculada à reserva

O comando a seguir cria um modelo de instância usando a opção de consumo vinculada à reserva:

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

Substitua os seguintes marcadores de posição:

  • 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.
  • RESERVATION_NAME: o nome da reserva específica a ser consumida.
  • 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 o --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.

Criar um modelo de instância para uma VM de TPU de início flexível

O comando a seguir cria um modelo de instância usando a opção de consumo de início flexível:

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

Substitua os seguintes marcadores de posição:

  • 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.
  • DURATION: a duração máxima em que a VM de TPU pode ser executada.
  • 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 o --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.

Criar uma política de carga de trabalho

É necessário criar uma política de carga de trabalho com o parâmetro accelerator-topology (por exemplo, 4x4, 8x8 ou 4x4x4). A topologia do acelerador configura o MIG para tratar as instâncias como uma única fração interconectada.

O comando a seguir cria uma política de carga de trabalho:

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

Substitua os seguintes marcadores de posição:

  • 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 Topologia de TPU.
  • REGION: a região da sua política de carga de trabalho.

Criar um MIG

Crie um MIG zonal ou regional usando o gcloud compute instance-groups managed create comando da seguinte maneira:

  • Para criar um MIG zonal que contenha uma fração de TPU de vários hosts, use o seguinte comando:

     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
    
  • Para criar um MIG regional que contenha uma fração de TPU de vários hosts, use o seguinte comando:

     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
    

Substitua os seguintes marcadores de posição:

  • MIG_NAME: o nome do MIG.
  • MIG_SIZE: o número de VMs no 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.
  • REGION: a região 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.

Criar VMs com nomes personalizados em um MIG

É possível criar VMs em um MIG especificando nomes personalizados para cada VM. Isso é útil para depuração e para garantir que as instâncias sejam criadas em uma ordem específica.

Os MIGs que contêm uma fração de TPU de vários hosts usam o modo em massa da política de tamanho de destino. Ao criar VMs com nomes personalizados em um MIG, o seguinte se aplica:

Crie VMs com nomes personalizados usando um dos seguintes métodos da API REST:

  • Para um MIG zonal, use o 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"
         },
         ...
       ]
     }
     

  • Para um MIG regional, use o 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"
         },
         ...
       ]
     }
     

Substitua os seguintes marcadores de posição:

  • PROJECT_ID: o ID do projeto em que o MIG existe.
  • ZONE: a zona do MIG.
  • REGION: a região do MIG.
  • INSTANCE_NAME_1,2,..: os nomes das VMs a serem adicionadas ao MIG especificado.

A seguir