Crie um MIG com VMs de GPU


Este documento descreve como criar um grupo de instâncias geridas (GIG) com instâncias de máquinas virtuais (VMs) que têm GPUs anexadas. Descreve como adicionar VMs de GPU de uma só vez num MIG zonal através de pedidos de redimensionamento e do modelo de aprovisionamento de início flexível. Se quiser criar um pedido de redimensionamento de MIG para consumir uma reserva, consulte o seguinte:

Use um pedido de redimensionamento de MIG com o modelo de aprovisionamento de início flexível para aumentar as suas probabilidades de obter VMs de GPU. Na solicitação, tem de especificar o número de VMs com GPU. O Dynamic Workload Scheduler (DWS), o mecanismo de agendamento subjacente, faz tentativas com base no melhor esforço para agendar pedidos de redimensionamento criados no Compute Engine com base nas durações pedidas e na disponibilidade de recursos. Se os recursos pedidos ficarem disponíveis, o MIG cria as VMs.

Se a tarefa terminar antes da duração pedida, pode eliminar as VMs criadas. Caso contrário, o MIG elimina as VMs no final da respetiva duração de execução.

Também pode ler acerca de outros cenários básicos para criar um GIG.

Antes de começar

  • Para se certificar de que tem quota de GPU suficiente para os recursos que está a pedir, verifique a sua quota de GPU.
  • Para compreender o consumo de quotas, leia o artigo VMs de GPU e quotas de alocação preemptivas.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

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

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Limitações

Reveja as limitações para criar um pedido de redimensionamento de MIG.

Crie um MIG e adicione VMs de GPU de uma só vez

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

  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 para VMs de GPU e configurações adicionais necessárias para usar pedidos de redimensionamento.

    Para mais informações sobre modelos de instâncias, consulte o artigo Acerca dos modelos de instâncias.

  2. Crie um MIG e um pedido de redimensionamento para adicionar VMs de GPU de uma só vez.

Crie um modelo de instância

Crie um modelo de instância que especifique uma série de máquinas com GPU suportada para pedidos de redimensionamento de MIG, conforme descrito nesta secção. Em seguida, use o modelo para criar um MIG.

Consola

  1. Aceda à página Modelos de instâncias.

    Aceda a Modelos de instâncias

  2. Clique em Criar modelo de instância. É apresentada a página Criar um modelo de instância.

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

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

    1. Clique no separador 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 secção Tipo de máquina, selecione um tipo de máquina.

  5. Na secção Modelo de aprovisionamento, faça o seguinte:

    1. Na lista Modelo de aprovisionamento de VMs, selecione Início flexível.

    2. Para definir uma duração de execução para as VMs criadas através do modelo de instância, no campo Introduza o número de horas, introduza o número de horas. O valor tem de estar compreendido entre uma hora (1) e sete dias (168).

  6. Opcional: para alterar o tipo ou a imagem do disco de arranque predefinido, na secção Disco de arranque, clique em Alterar. Em seguida, siga as instruções para alterar o disco de arranque.

  7. Clique em Criar.

gcloud

Crie um modelo de instância com 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 o seguinte:

  • 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 imagens suportados, consulte Imagens públicas.

  • IMAGE_FAMILY: uma família de imagens. Isto especifica a imagem do SO não descontinuada mais recente. Por exemplo, se especificar debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte as práticas recomendadas para famílias de imagens.

  • REGION: a região na qual criar o modelo de instância.

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

  • RUN_DURATION: a duração durante a qual quer que as VMs pedidas sejam executadas. Tem de formatar o valor como o número de dias, horas, minutos ou segundos, seguido de d, h, m ou s, respetivamente. Por exemplo, especifique 30m para 30 minutos ou 1d2h3m4s para um dia, duas horas, três minutos e quatro segundos. O valor tem de estar entre 10 minutos e sete dias.

REST

Crie um modelo de instância fazendo um pedido 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 o seguinte:

  • PROJECT_ID: o ID do projeto no qual quer criar o modelo de instância.

  • REGION: a região na qual criar o modelo de instância.

  • 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 imagens suportados, consulte Imagens públicas.

  • IMAGE: especifique uma das seguintes opções:

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

    • Uma família de imagens, que tem de estar formatada como family/IMAGE_FAMILY. Isto especifica a imagem do SO mais recente e não descontinuada. Por exemplo, se especificar family/debian-12, é usada a versão mais recente na família de imagens do Debian 12. Para mais informações sobre a utilização de famílias de imagens, consulte o artigo Práticas recomendadas para famílias de imagens.

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

  • RUN_DURATION: a duração, em segundos, durante a qual quer que as VMs pedidas sejam executadas antes de o GIG as eliminar automaticamente. O valor tem de estar entre 600, que corresponde a 600 segundos (10 minutos), e 604800, que corresponde a 604 800 segundos (sete dias).

Depois de criar o modelo de instância, pode vê-lo para ver o respetivo ID e rever as propriedades da instância.

Crie um MIG e adicione VMs de GPU de uma só vez

Crie um MIG conforme descrito nesta secção. Para criar um pedido de redimensionamento no MIG, não pode configurar o dimensionamento automático e tem de desativar as reparações.

Consola

  1. Aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique em Criar grupo de instâncias. É apresentada a página Criar grupo de instâncias.

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

  4. Antes de selecionar um modelo de instância, tem de eliminar a configuração do ajuste de escala automático e desativar as reparações da seguinte forma:

    1. Para eliminar a configuração do ajuste de escala automático, faça o seguinte:
      1. Na secção Ajuste automático de escala, clique na lista Modo de ajuste automático de escala e, de seguida, clique em Eliminar configuração do ajuste automático de escala.
      2. Na caixa de diálogo de confirmação, clique em Eliminar.
    2. Para desativar as reparações, na secção Ciclo de vida da instância de VM, clique na lista Ação predefinida em caso de falha e, de seguida, selecione Nenhuma ação.
  5. Volte ao campo Modelo de instância. Na lista Modelo de instância, selecione o modelo de instância que criou na secção anterior.

  6. Efetue um dos seguintes passos:

    • Para criar um pedido de redimensionamento com o MIG, faça o seguinte:
      1. No campo Número de instâncias, introduza o número de VMs que quer criar de uma só vez.
      2. Selecione a caixa de verificação Usar pedido de redimensionamento para criar VMs de uma só vez.
      3. Opcional: para especificar uma duração de execução diferente para as VMs da definida no modelo de instância, nos campos Duração de execução pedida e Unidade, especifique uma duração. A duração tem de ser entre uma hora e sete dias.
    • Para criar um pedido de redimensionamento depois de criar o MIG, no campo Número de instâncias, introduza 0.
  7. Na secção Localização, especifique se quer criar um GIG zonal ou regional da seguinte forma:

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

gcloud

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

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
       --template=INSTANCE_TEMPLATE_URL \
       --size=0 \
       --zone=ZONE \
       --default-action-on-vm-failure=do_nothing
    
  2. No MIG, crie um pedido de redimensionamento com o comando instance-groups managed resize-requests create. Especifique o número de VMs com GPU que quer e a duração durante a qual quer executar essas VMs.

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

Substitua o seguinte:

  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs 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: uma das zonas disponíveis para o Compute Engine.
  • RESIZE_REQUEST_NAME: o nome do pedido de redimensionamento.
  • COUNT: o número de VMs a adicionar de uma só vez no grupo.

REST

  1. Crie um GIG zonal fazendo um pedido POST ao instanceGroupManagers.insertmétodo.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
     "versions": [
       {
         "instanceTemplate": "INSTANCE_TEMPLATE_URL"
       }
     ],
     "name": "INSTANCE_GROUP_NAME",
     "targetSize": 0,
     "instanceLifecyclePolicy": {
       "defaultActionOnFailure": "DO_NOTHING"
     }
    }
    
  2. No MIG, crie um pedido de redimensionamento fazendo um pedido POST ao método instanceGroupManagerResizeRequests.insert. No corpo do pedido, especifique o número de VMs com GPU que quer criar de uma só vez e a duração durante a qual quer executar essas 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 o seguinte:

  • PROJECT_ID: o ID do projeto no qual quer criar o MIG.
  • INSTANCE_GROUP_NAME: o nome do MIG.
  • INSTANCE_TEMPLATE_URL: o URL do modelo de instância que quer usar para criar VMs 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: uma das zonas disponíveis para o Compute Engine.
  • RESIZE_REQUEST_NAME: o nome do pedido de redimensionamento.
  • COUNT: o número de VMs a adicionar de uma só vez no grupo.

O pedido de redimensionamento que criar permanece no estado ACCEPTED até que o MIG crie todas as VMs de GPU pedidas. Depois de todas as VMs de GPU serem criadas no grupo, o estado do pedido muda para SUCCEEDED.

O que se segue?