Criar uma instância otimizada para IA com A4X

Neste documento, descrevemos as etapas para criar instâncias de máquina virtual (VM) autônomas que usam tipos de máquina A4X. Para saber mais sobre esse tipo de máquina, consulte A4X.

Para saber mais sobre outras maneiras de criar VMs ou clusters, consulte Visão geral das opções de implantação.

Limitações

Ao criar uma VM A4X independente, as seguintes limitações se aplicam:

Leia também as restrições das políticas de posicionamento.

Antes de começar

Antes de criar VMs, siga estas etapas, caso ainda não tenha feito isso:

  1. Escolha uma opção de consumo: sua escolha determina como você recebe e usa os recursos de GPU. Para saber mais, consulte Escolher uma opção de consumo.
  2. Obter capacidade: o processo para obter capacidade varia de acordo com cada opção de consumo. Para saber mais sobre o processo de obtenção de capacidade para a opção de consumo escolhida, consulte Visão geral da capacidade.

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

No console do Google Cloud , ative o Cloud Shell.

Ativar o Cloud Shell

Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

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 .

Funções exigidas

Para receber as permissões necessárias para criar VMs, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para criar VMs. Para acessar as permissões exatas necessárias, abra a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar VMs:

  • compute.instances.create no projeto
  • Usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
  • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
  • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
  • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Atribuir uma rede legada à VM: compute.networks.use no projeto
  • Atribuir um endereço IP externo à VM usando uma rede legada: compute.networks.useExternalIp no projeto
  • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
  • Definir tags para a VM: compute.instances.setTags na VM
  • Definir rótulos para a VM: compute.instances.setLabels na VM
  • Definir uma conta de serviço a ser usada pela VM: compute.instances.setServiceAccount na VM
  • Criar um disco para a VM: compute.disks.create no projeto
  • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
  • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Princípios básicos do A4X

Um cluster A4X é organizado em uma hierarquia de blocos e sub-blocos para facilitar o desempenho de rede em grande escala e sem bloqueios. Entender essa topologia é fundamental ao reservar capacidade e implantar cargas de trabalho.

Instância A4X
Uma instância A4X é um único tipo de máquina A4X com quatro GPUs anexadas.
Sub-bloco
Um sub-bloco é a unidade fundamental da capacidade do A4X. Para A4X, um subbloco consiste em 18 instâncias A4X (72 GPUs). Essas instâncias formam um domínio NVLink e são conectadas usando um sistema NVLink de vários nós. Para criar um subbloco A4X, aplique uma política de posicionamento compacto que especifique uma topologia 1x72.
Bloquear
Um bloco A4X é composto de 25 sub-blocos (domínios NVLink), totalizando até 450 instâncias A4X (1.800 GPUs). Os sub-blocos são alinhados por rails para escalonamento eficiente. Cada sub-bloco requer uma política de posicionamento compacto. Portanto, para um único bloco A4X, é possível criar 25 políticas de posicionamento compacto.

A tabela a seguir mostra as opções de topologia compatíveis para instâncias A4X:

Topologia (gpuTopology) Número de GPUs Número de instâncias
1x72 72 18

Visão geral

A criação de uma instância com o tipo de máquina A4X inclui as seguintes etapas:

  1. Criar redes VPC
  2. Criar uma política de posicionamento compacto
  3. Criar uma instância
  4. Instalar os drivers da GPU
  5. Opcional: Ativar o modo de GPU NVIDIA com várias instâncias

Criar redes VPC

Para configurar a rede para os tipos de máquina A4X, crie três redes VPC para as seguintes interfaces de rede:

  • Duas redes VPC regulares para as interfaces de rede (NICs) gVNIC . Em seguida, as NICs usam essas redes VPC para comunicação entre hosts.
  • Uma rede VPC com o perfil de rede RoCE para as NICs CX-7 ao criar vários subblocos A4X. A rede VPC RoCE para instâncias de VM precisa ter quatro sub-redes, uma para cada NIC CX-7. Essas NICs usam RDMA em Ethernet convergente (RoCE), fornecendo a comunicação de alta largura de banda e baixa latência essencial para escalonar para vários subblocos A4X.

Para mais informações sobre o arranjo de NICs, consulte Analisar a largura de banda da rede e o arranjo de NICs.

Crie as redes manualmente seguindo os guias de instruções ou automaticamente usando o script fornecido.

Guias de instruções

Crie as redes, suando as seguintes instruções:

Para essas redes VPC, defina a unidade máxima de transmissão (MTU) para um valor maior. Para tipos de máquina A4X, o MTU recomendado é de 8896 bytes. Para conferir as configurações de MTU recomendadas para outros tipos de máquina de GPU, consulte Configurações de MTU para tipos de máquina de GPU.

Script

Crie as redes, seguindo estas etapas.

Para essas redes VPC, defina a unidade máxima de transmissão (MTU) para um valor maior. Para tipos de máquina A4X, o MTU recomendado é de 8896 bytes. Para conferir as configurações de MTU recomendadas para outros tipos de máquina de GPU, consulte Configurações de MTU para tipos de máquina de GPU.

  1. Use o script a seguir para criar redes VPC regulares para as gVNICs.

    
    
        #!/bin/bash
    
        # Create regular VPC networks and subnets for the gVNICs
        for N in $(seq 0 1); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
            --subnet-mode=custom \
            --mtu=8896
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --region=REGION \
            --range=192.168.$N.0/24
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --action=ALLOW \
            --rules=tcp:0-65535,udp:0-65535,icmp \
            --source-ranges=192.168.0.0/16
        done
    
        # Create SSH firewall rules
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
        # Assumes that an external IP is only created for vNIC 0
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
    
          
  2. Se você precisar de vários subblocos A4X, use o script a seguir para criar a rede VPC RoCE para instâncias de VM (roce) e sub-redes para as quatro NICs CX-7 em cada instância A4X.

    
    
        #!/bin/bash
    
        # List and make sure network profiles exist in the machine type's zone
        gcloud compute network-profiles list --filter "location.name=ZONE"
    
        # Create network for RDMA NICs
        gcloud compute networks create RDMA_NAME_PREFIX-mrdma \
          --network-profile=ZONE-vpc-roce \
          --subnet-mode custom \
          --mtu=8896
    
        # Create subnets
        for N in $(seq 0 3); do
          gcloud compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
            --network=RDMA_NAME_PREFIX-mrdma \
            --region=REGION \
            --range=192.168.$((N+2)).0/24 # offset to avoid overlap with gVNICs
        done
    
    
          
  3. Substitua:

    • GVNIC_NAME_PREFIX: o prefixo de nome personalizado a ser usado para as redes e sub-redes VPC regulares das gVNICs.
    • RDMA_NAME_PREFIX: o prefixo de nome personalizado a ser usado para a rede VPC RoCE para instâncias de VM (roce) e sub-redes para as NICs CX-7.
    • ZONE: especifique uma zona em que o tipo de máquina que você quer usar esteja disponível, como us-central1-a. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.
    • REGION: a região em que você quer criar as sub-redes. Essa região precisa corresponder à zona especificada. Por exemplo, se a zona for us-central1-a, a região será us-central1.
    • IP_RANGE: o intervalo de IP a ser usado para as regras de firewall SSH.
  4. Opcional: para verificar se os recursos de rede VPC foram criados, confira as configurações de rede no console do Google Cloud :
    1. No console do Google Cloud , acesse a página Redes VPC.

      Acessar redes VPC

    2. Pesquise na lista as redes que você criou na etapa anterior.
    3. Para conferir as sub-redes, regras de firewall e outras configurações de rede, clique no nome da rede.

Criar uma política de colocação de compactação

Para criar uma política de posicionamento compacto, selecione uma das seguintes opções:

gcloud

Para criar uma política de posicionamento compacto, use o comando gcloud beta compute resource-policies create group-placement:

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --gpu-topology=1x72 \
    --region=REGION

Substitua:

  • POLICY_NAME: o nome da política de posicionamento compacto.
  • REGION: a região em que você quer criar a política de posicionamento compacto. Especifique a região que contém a zona em que você planeja criar instâncias e verifique se o tipo de máquina que você quer usar está disponível nessa região. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.

REST

Para criar uma política de posicionamento compacto, faça uma solicitação POST para o método resourcePolicies.insert beta.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "gpuTopology": "1x72"
    }
  }

Substitua:

  • PROJECT_ID: o ID do projeto.
  • POLICY_NAME: o nome da política de posicionamento compacto.
  • REGION: a região em que você quer criar a política de posicionamento compacto. Especifique a região que contém a zona em que você planeja criar instâncias e verifique se o tipo de máquina que você quer usar está disponível nessa região. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.

Criar uma instância A4X

Escolha a opção de criação que se alinha à arquitetura da sua carga de trabalho:

  • Crie uma instância em um domínio NVLink de 72 GPUs (topologia 1x72): ideal para treinamento distribuído em grande escala, ajuste fino e cargas de trabalho de inferência multinó que exigem comunicação de alta largura de banda e baixa latência entre GPUs em até 18 instâncias (72 GPUs) na malha NVLink multinó. Você precisa usar uma política de posicionamento compacto.
  • Criar uma instância independente de quatro GPUs (NVL4): ideal para cargas de trabalho de nó único, inferência de modelo menor, processamento em lote e desenvolvimento interativo que se encaixam em quatro GPUs e exigem apenas peering NVLink intra-nó. Você precisa segmentar um sub-bloco de reserva específico para particioná-lo em instâncias independentes. Você não precisa de uma política de posicionamento compacto.

Criar uma instância em um domínio NVLink de 72 GPUs (topologia 1x72)

Para conseguir uma topologia de GPU de 1x72, crie 18 instâncias A4X. Ao criar as instâncias, aplique a política de posicionamento compacto que especifica o campo gpuTopology. A aplicação da política garante que o Compute Engine crie todas as 18 instâncias A4X em um subbloco para usar um domínio NVLink. Se um sub-bloco não tiver capacidade para uma instância A4X, a solicitação para criar a instância vai falhar.

Para criar uma instância A4X que se conecte às 18 instâncias no domínio NVLink, aplique a política de posicionamento compacto e configure a rede RDMA com várias NICs.

Para criar uma instância A4X, selecione uma das seguintes opções.

Os comandos a seguir também definem o escopo de acesso das suas instâncias. Para simplificar o gerenciamento de permissões, o Google recomenda definir o escopo de acesso de uma instância como cloud-platform e usar papéis do IAM para definir a quais serviços a instância pode acessar. Para mais informações, consulte Práticas recomendadas de escopos.

gcloud

Para criar a instância A4X, use o comando gcloud compute instances create.

As instâncias A4X são compatíveis com os seguintes tipos de reservas:

  • Reservas adiantadas no Hipercomputador de IA
  • Reservas adiantadas no modo calendário

Para consumir esses tipos de reservas, uma instância precisa usar o modelo de provisionamento vinculado à reserva. Por exemplo, use os seguintes parâmetros de criação.

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-highgpu-4g \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address 
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

Substitua:

  • INSTANCE_NAME: o nome da instância do A4X.
  • IMAGE_FAMILY: a família de imagens da imagem do SO que você quer usar. Para uma lista de todos os sistemas operacionais compatíveis, consulte Sistemas operacionais compatíveis.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • ZONE: a zona em que o tipo de máquina que você quer usar está disponível. É preciso usar uma zona na mesma região da política de posicionamento compacto. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.
  • DISK_SIZE: o tamanho do disco de inicialização em GB. Para mais informações, consulte Limites de tamanho do Google Cloud Hyperdisk ou Limites de tamanho do Persistent Disk com base no tipo de disco.
  • GVNIC_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes VPC padrão que usam gVNICs.
  • RDMA_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes da VPC que usam NICs RDMA.
  • RESERVATION: o nome da reserva, um bloco ou um subbloco dentro de uma reserva. Para conferir o nome da reserva ou os blocos disponíveis, consulte Visualizar a capacidade reservada. Com base nos seus requisitos de posicionamento de instâncias, escolha uma das seguintes opções:
    • Para criar instâncias A4X em qualquer bloco único:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Para criar instâncias A4X em um bloco específico:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Para criar instâncias A4X em um subbloco específico:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: se o Compute Engine interrompe (STOP) ou exclui (DELETE) a instância A4X ao final do período de reserva.

  • POLICY_NAME: o nome da política de posicionamento compacto.

REST

Para criar a instância A4X, faça uma solicitação POST para o método instances.insert.

As instâncias A4X são compatíveis com os seguintes tipos de reservas:

  • Reservas adiantadas no Hipercomputador de IA
  • Reservas adiantadas no modo calendário

Para consumir esses tipos de reservas, uma instância precisa usar o modelo de provisionamento vinculado à reserva. Por exemplo, use os seguintes parâmetros de criação.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-highgpu-4g",
  "name": "INSTANCE_NAME",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
     ],
  "reservationAffinity": {
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values": [
      "RESERVATION"
    ]
  },
  "scheduling": {
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a instância A4X.
  • ZONE: a zona em que o tipo de máquina que você quer usar está disponível. É preciso usar uma zona na mesma região da política de posicionamento compacto. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.
  • INSTANCE_NAME: o nome da instância do A4X.
  • DISK_SIZE: o tamanho do disco de inicialização em GB. Para mais informações, consulte Limites de tamanho do Google Cloud Hyperdisk ou Limites de tamanho do Persistent Disk com base no tipo de disco.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • IMAGE_FAMILY: a família de imagens da imagem do SO que você quer usar. Para uma lista de todos os sistemas operacionais compatíveis, consulte Sistemas operacionais compatíveis.
  • NETWORK_PROJECT_ID: o ID do projeto da rede.
  • GVNIC_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes VPC padrão que usam gVNICs.
  • REGION: a região da sub-rede.
  • RDMA_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes da VPC que usam NICs RDMA.
  • RESERVATION: o nome da reserva, um bloco ou um subbloco dentro de uma reserva. Para conferir o nome da reserva ou os blocos disponíveis, consulte Visualizar a capacidade reservada. Com base nos seus requisitos de posicionamento de instâncias, escolha uma das seguintes opções:
    • Para criar instâncias A4X em qualquer bloco único:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Para criar instâncias A4X em um bloco específico:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Para criar instâncias A4X em um subbloco específico:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: se o Compute Engine interrompe (STOP) ou exclui (DELETE) a instância A4X ao final do período de reserva.

  • PROJECT_ID: o ID do projeto da política de posicionamento compacto.
  • REGION: a região da política de posicionamento compacto.
  • POLICY_NAME: o nome da política de posicionamento compacto.

Criar uma instância independente de quatro GPUs (NVL4)

O NVL4 particiona o domínio NVLink para criar instâncias independentes na estrutura do NVLink. Para criar instâncias NVL4 autônomas, especifique qual sub-bloco na reserva será particionado. Como cada instância A4X opera de forma independente, não é necessário usar políticas de posicionamento compacto. A comunicação NVLink de quatro GPUs intra-nó é totalmente compatível com cargas de trabalho intra-instância.

Antes de criar instâncias NVL4 autônomas, observe o seguinte:

  • Segmentação por capacidade e sub-bloco: para criar instâncias NVL4 independentes, é necessário segmentar um sub-bloco de reserva específico. A unidade atômica de capacidade reservada é um subbloco inteiro, que é um domínio NVLink de 18 instâncias ou 72 GPUs. Não é possível reservar instâncias NVL4 únicas individualmente. Ao implantar instâncias NVL4, você particiona um subbloco reservado em até 18 nós independentes. Também é possível compartilhar uma reserva de sub-bloco de um projeto host com projetos consumidores.
  • Particionamento estático e mudanças de configuração: as implantações de sub-blocos são estáticas. Para mudar a configuração de um subbloco, como alternar de um domínio NVLink de vários nós 1x72 para instâncias NVL4 autônomas ou vice-versa, exclua todas as instâncias atuais nesse subbloco antes de recriá-las com a nova configuração.
  • Implantações mistas em um subbloco: é possível alocar instâncias na mesma reserva de subbloco em instâncias autônomas do Compute Engine e pools de nós do GKE, como provisionar 12 instâncias autônomas do Compute Engine para desenvolvimento e 6 instâncias em um pool de nós do GKE.
  • Configuração do NCCL e do NVLS: se você executar cargas de trabalho distribuídas usando o NCCL em instâncias NVL4, desative o NVLink SHARP definindo a variável de ambiente NCCL_NVLS_ENABLE=0. Google Cloud não configura grupos de multicast CUDA para comunicação entre vários nós em domínios particionados.

Se você reservou um sub-bloco inteiro, que consiste em 18 instâncias ou 72 GPUs, e quer implantar todas as 18 instâncias A4X independentes, execute o comando de criação 18 vezes e verifique se cada comando tem como destino o mesmo sub-bloco de reserva.

Para criar uma instância A4X independente com quatro GPUs, selecione uma das seguintes opções:

gcloud

Para criar a instância A4X, use o comando gcloud compute instances create.

As instâncias A4X são compatíveis com os seguintes tipos de reservas:

  • Reservas adiantadas no Hipercomputador de IA
  • Reservas adiantadas no modo calendário

Para consumir esses tipos de reservas, uma instância precisa usar o modelo de provisionamento vinculado à reserva. Por exemplo, use os seguintes parâmetros de criação.

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-highgpu-4g \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address 
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --reservation-affinity=specific \
    --reservation=RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure

Substitua:

  • INSTANCE_NAME: o nome da instância do A4X.
  • IMAGE_FAMILY: a família de imagens da imagem do SO que você quer usar. Para uma lista de todos os sistemas operacionais compatíveis, consulte Sistemas operacionais compatíveis.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • ZONE: a zona em que o tipo de máquina que você quer usar está disponível. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.
  • DISK_SIZE: o tamanho do disco de inicialização em GB. Para mais informações, consulte Limites de tamanho do Google Cloud Hyperdisk ou Limites de tamanho do Persistent Disk com base no tipo de disco.
  • GVNIC_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes VPC padrão que usam gVNICs.
  • RDMA_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes da VPC que usam NICs RDMA.
  • RESERVATION_NAME: o nome da sua reserva.
  • BLOCK_NAME: o nome de um bloco específico dentro da reserva.
  • SUB_BLOCK_NAME: o nome do sub-bloco específico dentro do bloco.
  • TERMINATION_ACTION: se o Compute Engine interrompe (STOP) ou exclui (DELETE) a instância A4X ao final do período de reserva.

REST

Para criar a instância A4X, faça uma solicitação POST para o método instances.insert.

As instâncias A4X são compatíveis com os seguintes tipos de reservas:

  • Reservas adiantadas no Hipercomputador de IA
  • Reservas adiantadas no modo calendário

Para consumir esses tipos de reservas, uma instância precisa usar o modelo de provisionamento vinculado à reserva. Por exemplo, use os seguintes parâmetros de criação.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-highgpu-4g",
  "name": "INSTANCE_NAME",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-nat",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
     ],
  "reservationAffinity": {
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values": [
      "RESERVATION_NAME/reservationBlocks/BLOCK_NAME/reservationSubBlocks/SUB_BLOCK_NAME"
    ]
  },
  "scheduling": {
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a instância A4X.
  • ZONE: a zona em que o tipo de máquina que você quer usar está disponível. Para informações sobre regiões, consulte Disponibilidade de GPUs por regiões e zonas.
  • INSTANCE_NAME: o nome da instância do A4X.
  • DISK_SIZE: o tamanho do disco de inicialização em GB. Para mais informações, consulte Limites de tamanho do Google Cloud Hyperdisk ou Limites de tamanho do Persistent Disk com base no tipo de disco.
  • IMAGE_PROJECT: o ID do projeto da imagem do SO.
  • IMAGE_FAMILY: a família de imagens da imagem do SO que você quer usar. Para uma lista de todos os sistemas operacionais compatíveis, consulte Sistemas operacionais compatíveis.
  • NETWORK_PROJECT_ID: o ID do projeto da rede.
  • GVNIC_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes VPC padrão que usam gVNICs.
  • REGION: a região da sub-rede.
  • RDMA_NAME_PREFIX: o prefixo de nome especificado ao criar as redes e sub-redes da VPC que usam NICs RDMA.
  • RESERVATION_NAME: o nome da sua reserva.
  • BLOCK_NAME: o nome de um bloco específico dentro da reserva.
  • SUB_BLOCK_NAME: o nome do sub-bloco específico dentro do bloco.
  • TERMINATION_ACTION: se o Compute Engine interrompe (STOP) ou exclui (DELETE) a instância A4X ao final do período de reserva.

Instalar os drivers da GPU

Depois de criar uma instância, ela não poderá usar as GPUs, a menos que os drivers corretos já estejam instalados. Se você não especificou uma imagem do SO que inclui drivers de GPU, consulte Instalar drivers de GPU na documentação do Compute Engine.

Opcional: ativar o modo de GPU com várias instâncias da NVIDIA

O modo de GPU de várias instâncias (MIG) é um recurso que pode ser ativado em uma GPU NVIDIA compatível. Depois de criar uma instância, é possível ativar o modo MIG em uma única GPU anexada à sua máquina. Com o modo MIG ativado, a única GPU é particionada em até sete instâncias de GPU independentes. Cada instância é executada simultaneamente, cada uma com a própria memória, cache e multiprocessadores de streaming. Depois, é possível executar diferentes cargas de trabalho nessas instâncias de GPU em paralelo. Para mais informações sobre o uso do modo MIG, consulte o Guia do usuário de GPU de várias instâncias (MIG) na documentação da NVIDIA.

A seguir