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 no grupo usando solicitações de redimensionamento.

O uso de uma solicitação de redimensionamento melhora a capacidade de acesso de VMs de GPU em um MIG. 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á as VMs automaticamente quando a duração terminar.

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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    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.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      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 em um 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.

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

  6. Expanda a seção Opções avançadas e depois faça o seguinte:

    1. Expanda a seção Gerenciamento.
    2. Na lista Reservas, selecione Não usar.
  7. Clique em Criar.

gcloud

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

O comando a seguir cria um modelo de instância global com base em uma imagem de VM de aprendizado profundo.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --image-project=deeplearning-platform-release \
    --image-family=common-cu121 \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Substitua:

  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
  • 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.

REST

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

A solicitação a seguir cria um modelo de instância global com base em uma imagem de VM de aprendizado profundo.

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

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/deeplearning-platform-release/global/images/family/common-cu121"
        }
      }
    ],
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar o MIG.
  • INSTANCE_TEMPLATE_NAME: o nome do modelo de instância.
  • 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.

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

Crie um MIG conforme descrito nesta seção. Para usar 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.

  3. Preencha os seguintes campos:

    1. Nome: digite um nome para o grupo.
    2. Modelo de instância: selecione o modelo de instância que você configurou na seção anterior
    3. Na seção Local:
      1. Selecione Única zona.
      2. Nas listas Região e Zona, selecione o local em que você quer criar o grupo.

    O campo Número de instâncias será ativado para edição depois que você excluir a configuração de escalonamento automático e desativar os reparos nas próximas etapas.

  4. Exclua a configuração de escalonamento automático da seguinte maneira:

    1. Na seção Escalonamento automático, clique na lista Modo de escalonamento automático e depois em Excluir configuração de escalonamento automático.
    2. Na caixa de diálogo Excluir configuração de escalonamento automático?, clique em Excluir.
  5. Desative os reparos no MIG da seguinte maneira:

    Na seção Ciclo de vida da instância de VM, defina o campo Ação padrão em caso de falha como Nenhuma ação.

  6. Especifique o número de VMs de GPU e a duração da execução para criar uma solicitação de redimensionamento:

    1. No campo Número de instâncias, insira o número de VMs da GPU que você quer criar de uma só vez.

      O campo do número de instâncias na página "Criar grupo de instâncias".

    2. Marque a caixa de seleção Usar solicitação de redimensionamento para criar VMs de uma só vez. Os campos para inserir a duração da execução são exibidos.

    3. No campo Duração da execução solicitada e na lista Unidade, especifique a duração das VMs da GPU. A duração precisa ser de 1 hora a 7 dias.

  7. 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 \
       --requested-run-duration=RUN_DURATION\
       --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.
  • RUN_DURATION: a duração da execução das VMs solicitadas. O valor precisa ser formatado com o número de dias, horas, minutos ou segundos, seguido por d, h, m e 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

  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,
     "requestedRunDuration": {
       "seconds": "RUN_DURATION"
     }
    }
    

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

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