Criar um MIG que adicione VMs de GPU de uma só vez

Neste documento, explicamos como criar um grupo gerenciado de instâncias (MIG) para adicionar instâncias de máquina virtual (VM) de GPU de uma só vez.

O MIG usa o modo em massa da política de tamanho de destino para adicionar as VMs de uma só vez. Ele também usa o modelo de provisionamento de início flexível para melhorar a capacidade de obtenção de recursos. Para mais informações sobre o modelo de provisionamento de início flexível, consulte Sobre modelos de provisionamento.

Outro método para adicionar VMs de GPU de uma só vez em um MIG é criar solicitações de redimensionamento. Para determinar se o modo em massa ou a solicitação de redimensionamento é mais adequado para sua carga de trabalho, consulte a Comparação do modo em massa e da solicitação de redimensionamento.

Se a carga de trabalho não exigir que o MIG crie VMs de uma só vez, mas você ainda quiser melhorar a capacidade de obtenção de recursos, use o modelo de provisionamento de início flexível, conforme descrito em Criar um MIG com VMs de início flexível.

Antes de começar

  • Para garantir que haja cota de GPU suficiente para os recursos solicitados, verifique sua cota de GPU.
  • Para entender o consumo de cota, confira VMs de GPU e cotas de alocação preemptivas.
  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.

    gcloud

    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  • Defina uma região e uma zona padrão.
  • REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Limitações

Considere as seguintes limitações:

Criar um MIG e adicionar VMs de GPU de uma só vez

Para criar as VMs de GPU de uma só vez, faça o seguinte:

  1. Crie um modelo de instância, que é necessário para criar um MIG. Em seguida, o MIG usa esse modelo para criar cada VM no grupo. No modelo, especifique as configurações do modelo de provisionamento de início flexível.

    Para mais informações sobre modelos de instância, consulte este link.

  2. Criar um MIG para provisionamento em massa de VMs. Durante a criação do MIG, ative o provisionamento em massa definindo o modo da política de tamanho de destino como BULK. No modo BULK, o MIG tenta criar todas as VMs de uma só vez para atender ao tamanho de destino definido.

Criar um modelo de instância

Crie um modelo de instância que especifique uma série de máquinas com GPU. Em seguida, use o modelo para criar um MIG.

Observação: se você quiser executar cargas de trabalho de ciência de dados ou de machine learning, use uma imagem de VM de aprendizado profundo ao criar um modelo de instância. O Deep Learning VM Images é um conjunto de imagens de VM predefinidas que acompanha frameworks de machine learning e ferramentas essenciais. Para mais informações sobre essas imagens, consulte Escolher uma imagem na documentação de imagens de VM de aprendizado profundo.

Console

  1. Acesse a página Modelos de instância.

    Acesse "Modelos de instância"

  2. Clique em Criar modelo de instância. A página Criar modelo de instância será aberta.

  3. No campo Nome, insira um nome para o modelo de instância.

  4. Na seção Configuração da máquina, faça o seguinte:

    1. Clique na guia GPUs.

    2. Na lista Tipo de GPU, selecione o tipo de GPU.

    3. Na lista Número de GPUs, selecione o número de GPUs.

    4. Na lista Tipo de máquina, selecione um tipo de máquina.

  5. Na seção Modelo de provisionamento, faça o seguinte:

    1. Na lista Modelo de provisionamento de VM, selecione Início flexível.

    2. Para definir uma duração de execução para as VMs criadas com o modelo de instância, no campo Inserir número de horas, insira o número de horas. O valor precisa estar entre uma hora (1) e sete dias (168).

  6. Opcional: para alterar o valor padrão do tipo ou da imagem do disco de inicialização, na seção Disco de inicialização, clique em Alterar. Depois, siga as instruções para alterar o disco de inicialização.

  7. Clique em Criar.

gcloud

Crie um modelo de instância usando o comando instance-templates create:

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

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • IMAGE_PROJECT: o projeto que contém a imagem, como debian-cloud. Para mais informações sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. Ela especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • REGION: a região em que o modelo de instância será criado.

  • MACHINE_TYPE: um tipo de máquina com GPU. Se você especificar um tipo de máquina N1, inclua a flag --accelerator para especificar o número e o tipo de GPUs a serem anexadas às VMs.

  • RUN_DURATION: a duração da execução das VMs solicitadas. Formate o valor como o número de dias, horas, minutos ou segundos, seguido por d, h, m ou s, respectivamente. Por exemplo, especifique 30m para 30 minutos ou 1d2h3m4s para um dia, duas horas, três minutos e quatro segundos. O valor precisa estar entre 10 minutos e sete dias.

REST

Crie um modelo de instância fazendo uma solicitação POST ao método instanceTemplates.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar o modelo de instância.

  • REGION: a região em que o modelo de instância será criado.

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.

  • IMAGE_PROJECT: o projeto que contém a imagem, como debian-cloud. Para mais informações sobre os projetos de imagem disponíveis, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20240617.

    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Isso especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/debian-12, a versão mais recente na família de imagens do Debian 12 será usada. Para saber como usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: um tipo de máquina com GPU. Se você especificar um tipo de máquina N1, inclua o campo guestAccelerators para especificar o número e o tipo de GPUs a serem anexadas às VMs.

  • RUN_DURATION: a duração, em segundos, da execução das VMs solicitadas antes que o MIG as exclua automaticamente. O valor precisa estar entre 600, que representa 600 segundos (10 minutos), e 604800, que é 604.800 segundos (sete dias).

Depois de criar o modelo de instância, você pode visualizá-lo para conferir o ID e as propriedades da instância.

Criar um MIG e adicionar VMs de GPU de uma só vez

Crie um MIG conforme descrito nesta seção. Ao ativar o provisionamento em massa no MIG, é necessário desativar os reparos.

Console

  1. Acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique em Criar grupo de instâncias. A página Criar grupo de instâncias é aberta.

  3. No campo Nome, insira um nome para o MIG.

  4. Antes de selecionar um modelo de instância, desative os reparos e defina o local da seguinte maneira:

    1. Para desativar os reparos, faça o seguinte:
      1. Na seção Ciclo de vida da instância de VM, desmarque a caixa de seleção Permitir a correção de VMs em uma zona alternativa.
      2. Na lista Ação padrão em caso de falha, selecione Nenhuma ação.
    2. Para definir a seção Local, faça o seguinte:
      • Para criar um MIG zonal, selecione Zona única.
      • Para criar um MIG regional, selecione Várias zonas. Em Forma de distribuição de destino, selecione Qualquer zona única. Na caixa de diálogo que aparece, selecione Desativar redistribuição de instâncias.
  5. Volte ao campo Modelo de instância. Na lista Modelo de instância, selecione o modelo de instância que você criou na seção anterior.

  6. No campo Número de instâncias, especifique o número de instâncias que você quer criar de uma só vez.

  7. Marque a caixa de seleção Obter VMs de uma só vez com a política de tamanho de destino em massa.

  8. Clique em Criar.

gcloud

Para criar um MIG com capacidade de provisionamento em massa, use o comando instance-groups managed create.

  • Para criar um MIG zonal, execute o seguinte comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE \
    
  • Para criar um MIG regional, execute o seguinte comando:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --target-size-policy-mode=bulk \
        --template=INSTANCE_TEMPLATE_URL \
        --zones=LIST_OF_ZONES \
    

Substitua:

  • INSTANCE_GROUP_NAME: o nome do 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 em que o MIG cria VMs.
  • LIST_OF_ZONES: uma lista separada por vírgulas de zonas em que o MIG regional cria VMs. Por exemplo, us-central1-a, us-central1-b, us-central1-c.

REST

Para criar um MIG com a criação em massa ativada, faça uma solicitação POST da seguinte maneira. No corpo da solicitação, defina o campo targetSizePolicy.mode como bulk.

Se o modelo de instância que você usa especificar o modelo de provisionamento de início flexível, desative os reparos no MIG incluindo o campo "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} nas seguintes solicitações.

  • Para criar um MIG zonal, faça uma solicitação POST para o método instanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    
  • Para criar um MIG regional, faça uma solicitação POST para o método regionInstanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": SIZE,
      "targetSizePolicy": {
        "mode": "bulk"
      },
      "instanceLifecyclePolicy": {
          "defaultActionOnFailure": "DO_NOTHING"
      },
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ]
    }
    

Substitua:

  • PROJECT_ID:o ID do projeto.
  • ZONE:a zona em que o MIG cria VMs.
  • REGION:a região em que o MIG cria VMs.
  • INSTANCE_GROUP_NAME:o nome do 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

A seguir