Criar um MIG com VMs de GPU


Neste documento, descrevemos como criar um grupo gerenciado de instâncias (MIG) com instâncias de máquina virtual (VM) que têm GPUs anexadas. Ele descreve como adicionar VMs de GPU de uma só vez em um MIG zonal usando solicitações de redimensionamento e o modelo de provisionamento de início flexível. Para criar uma solicitação de redimensionamento de MIG que possa usar os recursos e serviços disponíveis no Cluster Director, consulte Criar um MIG e uma solicitação de redimensionamento na documentação do Hypercomputer de IA.

O uso de uma solicitação de redimensionamento de MIG com o modelo de provisionamento de início flexível melhora a capacidade de acesso de VMs de GPU. Na solicitação, especifique o número de VMs de GPU e a duração da execução dessas VMs. O Dynamic Workload Scheduler (DWS), o mecanismo de programador subjacente, programa solicitações de redimensionamento criadas no Compute Engine com base nas durações solicitadas e na disponibilidade dos recursos. Quando os recursos ficam disponíveis, o MIG cria as VMs automaticamente.

Se o job em execução nessas VMs for concluído antes da duração solicitada, será possível excluí-las. Caso contrário, o MIG excluirá automaticamente as VMs ao final da duração da execução.

Você também pode ler sobre outros cenários básicos para criar um MIG.

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. A autenticação é o processo de verificação da 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:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Limitações

Analise as limitações para criar uma solicitação de redimensionamento de MIG.

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

Para criar um MIG e adicionar VMs de GPU de uma só vez no grupo, faça isto:

  1. Crie um modelo de instância, que é necessário para criar um MIG. O MIG cria cada VM no grupo com base no modelo de instância. No modelo, especifique a configuração das VMs de GPU e as outras configurações necessárias para usar solicitações de redimensionamento.

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

  2. Crie um MIG e uma solicitação de redimensionamento para adicionar VMs de GPU de uma só vez.

Criar um modelo de instância

Crie um modelo de instância conforme descrito nesta seção e use-o para criar um MIG.

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 um modelo de instância é 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 pelo modelo de instância, insira o número de horas no campo Enter number of hours. 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 beta instance-templates create:

gcloud beta 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 de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. 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 que dá suporte a GPUs. 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. Você precisa formatar 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 beta.instanceTemplates.insert:

POST https://compute.googleapis.com/compute/beta/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 de imagem que contém a imagem, por exemplo, debian-cloud. Para mais informações sobre os projetos de imagem com suporte, consulte Imagens públicas.

  • IMAGE: especifique uma destas opções:

    • Uma versão específica da imagem do SO. Por exemplo: debian-12-bookworm-v20240617

    • Uma família de imagens, que precisa ser formatada como 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 mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

  • MACHINE_TYPE: um tipo de máquina que dá suporte a GPUs. Se você especificar um tipo de máquina N1, inclua a flag 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 é 600 segundos (10 minutos), e 604800, que é 604.800 segundos (sete dias).

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

Crie um MIG conforme descrito nesta seção. Para criar uma solicitação de redimensionamento no MIG, não configure o escalonamento automático e desative 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, exclua a configuração de escalonamento automático e desative os reparos da seguinte maneira:

    1. Para excluir a configuração de escalonamento automático, faça o seguinte:
      1. Na seção Escalonamento automático, clique na lista Modo de escalonamento automático e em Excluir configuração de escalonamento automático.
      2. Na caixa de diálogo de confirmação, clique em Excluir.
    2. Para desativar os reparos, na seção Ciclo de vida da instância de VM, clique na lista Ação padrão em caso de falha e selecione Nenhuma ação.
  5. Volte para o 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. Escolha uma destas opções:

    • Para criar uma solicitação de redimensionamento com o MIG, faça o seguinte:
      1. No campo Número de instâncias, insira o número de VMs que você quer criar de uma só vez.
      2. Marque a caixa de seleção Usar solicitação de redimensionamento para criar VMs de uma só vez.
      3. Opcional: para especificar uma duração de execução diferente para as VMs, em vez da definida no modelo de instância, no campo Duração da execução solicitada e nas listas Unidade, especifique uma duração. A duração precisa ser de uma a sete horas.
    • Para criar uma solicitação de redimensionamento depois de criar o MIG, insira 0 no campo Número de instâncias.
  7. Na seção Local, especifique se você quer criar um MIG regional ou por zona da seguinte maneira:

    1. Para criar um MIG zonal, selecione Zona única. Ou, para criar um MIG regional, selecione Várias zonas.
    2. Selecione a Região e as Zonas do MIG.
    3. Se você estiver criando um MIG regional, faça o seguinte:
      1. No campo Forma de distribuição de destino, selecione Qualquer zona única.
      2. Na caixa de diálogo exibida, clique em Desativar redistribuição de instâncias.
  8. Clique em Criar.

gcloud

  1. Crie um MIG zonal usando o comando instance-groups managed create:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
       --template=INSTANCE_TEMPLATE_NAME \
       --size=0 \
       --zone=ZONE \
       --default-action-on-vm-failure=do_nothing
    
  2. No MIG, crie uma solicitação de redimensionamento usando o comando instance-groups managed resize-requests create. Especifique o número de VMs de GPU que você quer e a duração da execução dessas VMs.

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
       --resize-request=RESIZE_REQUEST_NAME \
       --resize-by=COUNT \
       --zone=ZONE
    

Substitua:

  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância para VMs de GPU.
  • ZONE: uma das zonas disponíveis para o Compute Engine.
  • RESIZE_REQUEST_NAME: o nome da solicitação de redimensionamento.
  • COUNT: o número de VMs a serem adicionadas de uma só vez no grupo.

REST

  1. Crie um MIG zonal fazendo uma solicitação POST para o método instanceGroupManagers.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
     "versions": [
       {
         "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
       }
     ],
     "name": "INSTANCE_GROUP_NAME",
     "targetSize": 0,
     "instanceLifecyclePolicy": {
       "defaultActionOnFailure": "DO_NOTHING"
     }
    }
    
  2. No MIG, crie uma solicitação de redimensionamento fazendo uma solicitação POST ao método instanceGroupManagerResizeRequests.insert. No corpo da solicitação, especifique o número de VMs de GPU que você quer criar de uma só vez e a duração da execução dessas VMs.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
    {
     "name": "RESIZE_REQUEST_NAME",
     "resizeBy": COUNT
    }
    

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar o MIG.
  • INSTANCE_GROUP_NAME: o nome do MIG;
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância para VMs de GPU.
  • ZONE: uma das zonas disponíveis para o Compute Engine.
  • RESIZE_REQUEST_NAME: o nome da solicitação de redimensionamento.
  • COUNT: o número de VMs a serem adicionadas de uma só vez no grupo.

A solicitação de redimensionamento criada permanece no estado ACCEPTED até que o MIG crie todas as VMs de GPU solicitadas. Depois que todas as VMs de GPU forem criadas no grupo, o estado da solicitação mudará para SUCCEEDED.

A seguir