Criar uma instância A3 Mega, A3 High ou A3 Edge com o GPUDirect ativado

Este documento descreve a configuração para instâncias de máquina virtual (VM) A3 Mega, A3 High ou A3 Edge que têm oito GPUs NVIDIA H100 anexadas e usam uma das seguintes tecnologias GPUDirect: GPUDirect-TCPX ou GPUDirect-TCPXO. Para criar uma instância A3 High com menos de 8 GPUs, consulte Criar uma instância A3 High ou A2.

A tecnologia GPUDirect que você usa depende do tipo de máquina A3 selecionado.

  • GPUDirect-TCPXO: é uma pilha de rede descarregada semelhante ao RDMA que é compatível com tipos de máquina A3 Mega (a3-megagpu-8g) que têm oito GPUs H100.
  • GPUDirect-TCPX: é uma versão otimizada do TCP de convidado que oferece latência menor e é compatível com os tipos de máquina A3 High (a3-highgpu-8g) e A3 Edge (a3-edgegpu-8g) que têm oito GPUs H100.

A série de máquinas com otimização para aceleradores A3 tem 208 vCPUs e até 1.872 GB de memória. Os tipos de máquina a3-megagpu-8g, a3-highgpu-8g e a3-edgegpu-8g oferecem 80 GB de memória de GPU por GPU. Esses tipos de máquina podem ter até 1.800 Gbps de largura de banda de rede, o que os torna ideais para grandes modelos de linguagem baseados em transformadores, bancos de dados e computação de alto desempenho (HPC).

O GPUDirect-TCPX e o GPUDirect-TCPXO usam a tecnologia NVIDIA GPUDirect para aumentar o desempenho e reduzir a latência das VMs A3. Isso é possível porque os payloads de pacotes de dados são transferidos diretamente da memória da GPU para a interface de rede, sem passar pela CPU e pela memória do sistema. Essa é uma forma de acesso direto à memória remota (RDMA). Quando combinadas com a placa de rede virtual do Google (gVNIC), as VMs A3 podem oferecer a maior capacidade de processamento entre as VMs em um cluster em comparação com os tipos de máquina otimizados para aceleradores A2 ou G2 da geração anterior.

Neste documento, descrevemos como criar uma VM A3 Mega, A3 High ou A3 Edge e ativar o GPUDirect-TCPX ou o GPUDirect-TCPXO para testar o desempenho aprimorado da rede de GPU.

Antes de começar

  • Para analisar limitações e outras etapas de pré-requisito para criar instâncias com GPUs anexadas, como selecionar uma imagem do SO e verificar a cota de GPU, consulte Visão geral da criação de uma instância com GPUs anexadas.
  • 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ódigo ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:
    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:

      gcloud init

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

    2. Set a default region and zone.

Papéis necessários

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.

Visão geral

Para testar o desempenho da rede com o GPUDirect, siga estas etapas:

  1. Configure uma ou mais redes de nuvem privada virtual (VPC) com uma MTU grande configurada.
  2. Crie a instância de GPU.

Configurar redes VPC

Para ativar a comunicação eficiente das suas VMs de GPU, crie uma rede de gerenciamento e uma ou mais redes de dados. A rede de gerenciamento é usada para acesso externo, como SSH, e para a maioria das comunicações de rede gerais. As redes de dados são usadas para comunicação de alta performance entre as GPUs em diferentes VMs, por exemplo, para tráfego de acesso direto à memória remota (RDMA).

Para essas redes VPC, recomendamos definir a unidade máxima de transmissão (MTU) para um valor maior. Valores de MTU mais altos aumentam o tamanho do pacote e reduzem a sobrecarga do cabeçalho do pacote, o que aumenta a capacidade de dados do payload. Para mais informações sobre como criar redes VPC, consulte Criar e verificar uma rede MTU de frame jumbo.

Criar rede de gerenciamento, sub-rede e regra de firewall

Siga estas etapas para configurar a rede de gerenciamento:

  1. Crie a rede de gerenciamento usando o comando networks create:

    gcloud compute networks create NETWORK_NAME_PREFIX-mgmt-net \
        --project=PROJECT_ID \
        --subnet-mode=custom \
        --mtu=8244
    
  2. Crie a sub-rede de gerenciamento usando o comando networks subnets create:

    gcloud compute networks subnets create NETWORK_NAME_PREFIX-mgmt-sub \
        --project=PROJECT_ID \
        --network=NETWORK_NAME_PREFIX-mgmt-net \
        --region=REGION \
        --range=192.168.0.0/24
    
  3. Crie regras de firewall usando o comando firewall-rules create.

    1. Crie uma regra de firewall para a rede de gerenciamento.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-internal \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=tcp:0-65535,udp:0-65535,icmp \
          --source-ranges=192.168.0.0/16
      
    2. Crie a regra de firewall tcp:22 para limitar quais endereços IP de origem podem se conectar à sua VM usando SSH.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ssh \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=SSH_SOURCE_IP_RANGE
      
    3. Crie a regra de firewall icmp que pode ser usada para verificar se há problemas de transmissão de dados na rede.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ping \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=0.0.0.0/0
      

Substitua:

  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • PROJECT_ID: o ID do projeto.
  • REGION: a região em que você quer criar as redes.
  • SSH_SOURCE_IP_RANGE: intervalo de IP no formato CIDR. Isso especifica quais endereços IP de origem podem se conectar à VM usando SSH.

Criar redes de dados, sub-redes e regra de firewall

O número de redes de dados varia de acordo com o tipo de máquina de GPU que você está criando.

A3 Mega

O A3 Mega exige oito redes de dados. Use o comando a seguir para criar oito redes de dados, cada uma com sub-redes e regras de firewall.

for N in $(seq 1 8); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
    --project=PROJECT_ID \
    --subnet-mode=custom \
    --mtu=8244

gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --region=REGION \
    --range=192.168.$N.0/24

gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=192.168.0.0/16
done

A3 High e A3 Edge

O A3 High e o A3 Edge exigem quatro redes de dados. Use o comando a seguir para criar quatro redes de dados, cada uma com sub-redes e regras de firewall.

for N in $(seq 1 4); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
    --project=PROJECT_ID \
    --subnet-mode=custom \
    --mtu=8244

gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --region=REGION \
    --range=192.168.$N.0/24

gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=192.168.0.0/16
done

Criar instâncias A3 Mega (GPUDirect-TCPXO)

Crie instâncias A3 Mega usando a imagem do Container-Optimized OS cos-121-lts ou mais recente.

COS

Para testar o desempenho da rede com o GPUDirect-TCPXO, crie pelo menos duas instâncias de VM A3 Mega. Crie cada VM usando a imagem do Container-Optimized OS cos-121-lts ou mais recente e especificando as redes VPC criadas na etapa anterior.

As VMs A3 Mega exigem nove interfaces de rede NIC virtual do Google (gVNIC), uma para a rede de gerenciamento e oito para as redes de dados.

Com base no modelo de provisionamento que você quer usar para criar a VM, selecione uma das seguintes opções:

Padrão

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address

Substitua:

  • VM_NAME: o nome da instância de VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.

Spot

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Substitua:

  • VM_NAME: o nome da instância de VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída quando for preemptiva. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.

Início flexível

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --reservation-affinity=none

Substitua:

  • VM_NAME: o nome da instância de VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída ao final da duração da execução. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.
  • RUN_DURATION: o tempo máximo de execução da VM antes de ser interrompida ou excluída pelo Compute Engine. Formate o valor como o número de dias, horas, minutos ou segundos, seguido por d, h, m e s, respectivamente. Por exemplo, um valor de 30m define um tempo de 30 minutos, e um valor de 1h2m3s define um tempo de uma hora, dois minutos e três segundos. É possível especificar um valor entre 10 minutos e sete dias.
  • VALID_FOR_DURATION`: o tempo máximo de espera pelo provisionamento dos recursos solicitados. Formate o valor como o número de dias, horas, minutos ou segundos seguidos por d, h, m e s, respectivamente. Com base nos requisitos zonais da sua carga de trabalho, especifique uma das seguintes durações para aumentar as chances de sucesso da solicitação de criação de VM:
    • Se a carga de trabalho exigir que a VM seja criada em uma zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). Quanto maior a duração, maiores as chances de conseguir recursos.
    • Se a VM puder ser executada em qualquer zona da região, especifique uma duração de zero segundos (0s). Esse valor especifica que o Compute Engine só aloca recursos se eles estiverem disponíveis imediatamente. Se a solicitação de criação falhar porque os recursos não estão disponíveis, tente de novo em outra zona.

Vinculada à reserva

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Substitua:

  • VM_NAME: o nome da instância de VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída ao final do período de reserva. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.
  • RESERVATION_URL: o URL da reserva que você quer consumir. Especifique um dos seguintes valores:
    • Se você criou a reserva no mesmo projeto: example-reservation
    • Se a reserva estiver em um projeto diferente e seu projeto puder usá-la: projects/PROJECT_ID/reservations/example-reservation.

Instalar os drivers da GPU

Em cada VM A3 Mega, instale os drivers de GPU.

  1. Instale os drivers de GPU NVIDIA.

    sudo cos-extensions install gpu -- --version=latest
    
  2. Remonte o caminho.

    sudo mount --bind /var/lib/nvidia /var/lib/nvidia
    sudo mount -o remount,exec /var/lib/nvidia
    

Conceder às placas de rede (NICs) acesso às GPUs

Em cada VM A3 Mega, conceda às placas de rede acesso às GPUs.

  1. Ajuste as configurações de firewall para aceitar todas as conexões TCP de entrada e permitir a comunicação entre os nós do cluster:
    sudo /sbin/iptables -I INPUT -p tcp -m tcp -j ACCEPT
  2. Configure o módulo dmabuf. Carregue o módulo import-helper, que faz parte do framework dmabuf. Essa estrutura permite o compartilhamento de memória de alta velocidade e sem cópia entre a GPU e a placa de interface de rede (NIC, na sigla em inglês), um componente essencial para a tecnologia GPUDirect:
    sudo modprobe import-helper
  3. Configure o Docker para autenticar solicitações ao Artifact Registry.
    docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  4. Inicie o RxDM no contêiner. O RxDM é um serviço de gerenciamento que é executado junto com o aplicativo de GPU para gerenciar a memória da GPU. Esse serviço pré-aloca e gerencia a memória da GPU para o tráfego de rede recebido, que é um elemento essencial da tecnologia GPUDirect e fundamental para redes de alto desempenho. Inicie um contêiner do Docker chamado rxdm:
    docker run --pull=always --rm --detach --name rxdm \
        --network=host  --cap-add=NET_ADMIN  \
        --privileged \
        --volume /var/lib/nvidia:/usr/local/nvidia \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \
        us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.19 \
        --num_hops=2 --num_nics=8

    Para verificar se o RxDM foi iniciado, execute o comando. Aguarde a mensagem "Buffer manager initialization complete" (Inicialização do gerenciador de buffer concluída) para confirmar a inicialização bem-sucedida do RxDM.

    docker container logs --follow  rxdm

    Ou então, verifique o registro de conclusão da inicialização do RxDM.

    docker container logs rxdm 2>&1 | grep "Buffer manager initialization complete"

Configurar o ambiente do NCCL

Em cada VM A3 Mega, conclua as etapas a seguir:

  1. Instale a biblioteca nccl-net, um plug-in para NCCL que permite a comunicação GPUDirect pela rede.O comando a seguir extrai a imagem do instalador e instala os arquivos de biblioteca necessários em /var/lib/tcpxo/lib64/.
    NCCL_NET_IMAGE="us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.13-1"
    
    docker run --pull=always --rm --privileged \
        --network=host --cap-add=NET_ADMIN \
        --volume /var/lib/nvidia:/usr/local/nvidia  \
        --volume /var/lib:/var/lib \
        --device /dev/nvidia0:/dev/nvidia0   \
        --device /dev/nvidia1:/dev/nvidia1  \
        --device /dev/nvidia2:/dev/nvidia2  \
        --device /dev/nvidia3:/dev/nvidia3  \
        --device /dev/nvidia4:/dev/nvidia4  \
        --device /dev/nvidia5:/dev/nvidia5  \
        --device /dev/nvidia6:/dev/nvidia6  \
        --device /dev/nvidia7:/dev/nvidia7  \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm  \
        --device /dev/nvidiactl:/dev/nvidiactl  \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper  \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \
        ${NCCL_NET_IMAGE} install  --install-nccl
    
    sudo mount --bind /var/lib/tcpxo /var/lib/tcpxo && sudo mount -o remount,exec /var/lib/tcpxo
    
  2. Inicie um contêiner dedicado nccl-tests para testes da NCCL. Esse contêiner vem pré-configurado com as ferramentas e os scripts de utilidade necessários, garantindo um ambiente limpo e consistente para verificar o desempenho da configuração do GPUDirect.

    Esse comando reutiliza a variável NCCL_NET_IMAGE definida na etapa anterior.

    docker run --pull=always --rm --detach --name nccl \
        --network=host --cap-add=NET_ADMIN \
        --privileged \
        --volume /var/lib/nvidia:/usr/local/nvidia  \
        --volume /var/lib/tcpxo:/var/lib/tcpxo \
        --shm-size=8g \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \
        ${NCCL_NET_IMAGE} daemon

Executar o comparativo de mercado nccl-tests

Para executar o comparativo de mercado nccl-tests em uma única VM A3 Mega, siga estas etapas:

  1. Abra um shell bash interativo no contêiner nccl-tests.
    docker exec -it nccl bash
  2. No shell bash do contêiner nccl-tests, conclua as etapas a seguir.

    1. Configure o ambiente para uma execução de vários nós configurando o SSH e gerando arquivos de host. Substitua VM_NAME_1 e VM_NAME_2 pelos nomes de cada VM.
      /scripts/init_ssh.sh VM_NAME_1 VM_NAME_2
      /scripts/gen_hostfiles.sh VM_NAME_1 VM_NAME_2
        

      Isso cria um diretório chamado /scripts/hostfiles2.

    2. Execute o comparativo all_gather_perf para medir a performance da comunicação coletiva:
      /scripts/run-nccl-tcpxo.sh all_gather_perf "${LD_LIBRARY_PATH}" 8 eth1,eth2,eth3,eth4,eth5,eth6,eth7,eth8 1M 512M 3 2 10 8 2 10

Criar instâncias A3 High e Edge (GPUDirect-TCPX)

Crie instâncias A3 High e Edge usando a imagem do Container-Optimized OS cos-121-lts ou mais recente.

COS

Para testar o desempenho da rede com o GPUDirect-TCPX, é necessário criar pelo menos duas VMs A3 High ou Edge. Crie cada VM usando a imagem do Container-Optimized OS cos-121-lts ou mais recente e especificando as redes VPC que você criou na etapa anterior.

As VMs precisam usar a interface de rede NIC virtual do Google (gVNIC). Para VMs A3 High ou Edge, use a versão 1.4.0rc3 ou mais recente do driver gVNIC. Essa versão do driver está disponível no Container-Optimized OS. A primeira NIC virtual é usada como principal para rede e armazenamento gerais. As outras quatro NICs virtuais são alinhadas a duas das oito GPUs no mesmo switch PCIe.

Com base no modelo de provisionamento que você quer usar para criar a VM, selecione uma das seguintes opções:

Padrão

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina da VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.

Spot

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina da VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída quando for preemptiva. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.

Início flexível

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --reservation-affinity=none

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina da VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída ao final da duração da execução. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.
  • RUN_DURATION: o tempo máximo de execução da VM antes de ser interrompida ou excluída pelo Compute Engine. Formate o valor como o número de dias, horas, minutos ou segundos, seguido por d, h, m e s, respectivamente. Por exemplo, um valor de 30m define um tempo de 30 minutos, e um valor de 1h2m3s define um tempo de uma hora, dois minutos e três segundos. É possível especificar um valor entre 10 minutos e sete dias.
  • VALID_FOR_DURATION`: o tempo máximo de espera pelo provisionamento dos recursos solicitados. Formate o valor como o número de dias, horas, minutos ou segundos seguidos por d, h, m e s, respectivamente. Com base nos requisitos zonais da sua carga de trabalho, especifique uma das seguintes durações para aumentar as chances de sucesso da solicitação de criação de VM:
    • Se a carga de trabalho exigir que a VM seja criada em uma zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). Quanto maior a duração, maiores as chances de conseguir recursos.
    • Se a VM puder ser executada em qualquer zona da região, especifique uma duração de zero segundos (0s). Esse valor especifica que o Compute Engine só aloca recursos se eles estiverem disponíveis imediatamente. Se a solicitação de criação falhar porque os recursos não estão disponíveis, tente de novo em outra zona.

Vinculada à reserva

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Substitua:

  • VM_NAME: o nome da VM.
  • PROJECT_ID: ID do projeto.
  • ZONE: uma zona que oferece suporte ao seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina da VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de inicialização em GB. Por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo de nome a ser usado para as redes e sub-redes VPC.
  • TERMINATION_ACTION: indica se a VM será interrompida ou excluída ao final do período de reserva. Especifique um dos seguintes valores:
    • Para interromper a VM: STOP.
    • Para excluir a VM: DELETE.
  • RESERVATION_URL: o URL da reserva que você quer consumir. Especifique um dos seguintes valores:
    • Se você criou a reserva no mesmo projeto: example-reservation
    • Se a reserva estiver em um projeto diferente e seu projeto puder usá-la: projects/PROJECT_ID/reservations/example-reservation.

Instalar os drivers da GPU

Em cada VM A3 High ou Edge, conclua as etapas a seguir.

  1. Instale os drivers de GPU NVIDIA executando o seguinte comando:
    sudo cos-extensions install gpu -- --version=latest
  2. Remonte o caminho executando o seguinte comando:
    sudo mount --bind /var/lib/nvidia /var/lib/nvidia
    sudo mount -o remount,exec /var/lib/nvidia

Conceder às placas de rede (NICs) acesso às GPUs

Em cada VM A3 High ou Edge, conceda às placas de rede acesso às GPUs concluindo as seguintes etapas:

  1. Configure o registro.
    • Se você estiver usando o Container Registry, execute o seguinte comando:
      docker-credential-gcr configure-docker
    • Se você estiver usando o Artifact Registry, execute o seguinte comando:
      docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  2. Configurar o gerenciador de caminho dos dados de recebimento. Um serviço de gerenciamento, o gerenciador de caminho de dados de recebimento GPUDirect-TCPX, precisa ser executado junto com os aplicativos que usam GPUDirect-TCPX. Para iniciar o serviço em cada VM do Container-Optimized OS, execute o seguinte comando:
    docker run --pull=always --rm \
        --name receive-datapath-manager \
        --detach \
        --privileged \
        --cap-add=NET_ADMIN --network=host \
        --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \
        --volume /run/tcpx:/run/tcpx \
        --entrypoint /tcpgpudmarxd/build/app/tcpgpudmarxd \
        us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/tcpgpudmarxd \
        --gpu_nic_preset a3vm --gpu_shmem_type fd --uds_path "/run/tcpx" --setup_param "--verbose 128 2 0"
       
  3. Verifique se o contêiner receive-datapath-manager foi iniciado.
    docker container logs --follow receive-datapath-manager

    A saída será semelhante a esta:

    I0000 00:00:1687813309.406064       1 rx_rule_manager.cc:174] Rx Rule Manager server(s) started...
  4. Para interromper a visualização dos registros, pressione ctrl-c.
  5. Instalar as regras da tabela de IP.
    sudo iptables -I INPUT -p tcp -m tcp -j ACCEPT
  6. Configure a NVIDIA Collective Communications Library (NCCL) e o plug-in GPUDirect-TCPX.

    Uma versão específica da biblioteca NCCL e uma combinação binária do plug-in GPUDirect-TCPX são necessárias para usar o NCCL com suporte a GPUDirect-TCPX. Google Cloud forneceu pacotes que atendem a esse requisito.

    Para instalar o pacote Google Cloud , execute o seguinte comando:

    docker run --rm -v /var/lib:/var/lib us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx install --install-nccl
    sudo mount --bind /var/lib/tcpx /var/lib/tcpx
    sudo mount -o remount,exec /var/lib/tcpx

    Se esse comando for bem-sucedido, os arquivos libnccl-net.so e libnccl.so serão colocados no diretório /var/lib/tcpx/lib64.

Executar testes

Em cada VM A3 High ou Edge, execute um teste de NCCL seguindo estas etapas:

  1. Inicie o contêiner.
    #!/bin/bash
    
    function run_tcpx_container() {
    docker run \
       -u 0 --network=host \
       --cap-add=IPC_LOCK \
       --userns=host \
       --volume /run/tcpx:/tmp \
       --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \
       --volume /var/lib/tcpx/lib64:/usr/local/tcpx/lib64 \
       --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \
       --device /dev/nvidia0:/dev/nvidia0 \
       --device /dev/nvidia1:/dev/nvidia1 \
       --device /dev/nvidia2:/dev/nvidia2 \
       --device /dev/nvidia3:/dev/nvidia3 \
       --device /dev/nvidia4:/dev/nvidia4 \
       --device /dev/nvidia5:/dev/nvidia5 \
       --device /dev/nvidia6:/dev/nvidia6 \
       --device /dev/nvidia7:/dev/nvidia7 \
       --device /dev/nvidia-uvm:/dev/nvidia-uvm \
       --device /dev/nvidiactl:/dev/nvidiactl \
       --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/tcpx/lib64 \
       "$@"
    }
    

    O comando anterior completa o seguinte:

    • Monta dispositivos NVIDIA do /dev no contêiner
    • Define o namespace da rede do contêiner para o host
    • Define o namespace do usuário do contêiner para host
    • Adiciona CAP_IPC_LOCK aos recursos do contêiner
    • Monta o /tmp do host no /tmp do contêiner
    • Monta o caminho de instalação do plug-in NCCL e GPUDirect-TCPX NCCL no contêiner e adiciona o caminho montado a LD_LIBRARY_PATH
  2. Depois de iniciar o contêiner, os aplicativos que usam NCCL podem ser executados dentro dele. Por exemplo, para executar o teste run-allgather, conclua as seguintes etapas:
    1. Em cada VM A3 High ou Edge, execute o seguinte:
      $ run_tcpx_container -it --rm us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx shell
    2. Em uma VM, execute os seguintes comandos:
      1. Configure a conexão entre as VMs. Substitua VM-0 e VM-1 pelos nomes de cada VM.
        /scripts/init_ssh.sh VM-0 VM-1
        pushd /scripts && /scripts/gen_hostfiles.sh VM-0 VM-1; popd

        Isso cria um diretório /scripts/hostfiles2 em cada VM.

      2. Execute o script.
        /scripts/run-allgather.sh 8 eth1,eth2,eth3,eth4 1M 512M 2

    O script run-allgather leva cerca de dois minutos para ser executado. No final dos registros, você verá os resultados all-gather.

    Se a linha a seguir for exibida nos registros da NCCL, isso vai verificar se o GPUDirect-TCPX foi inicializado com sucesso.

    NCCL INFO NET/GPUDirectTCPX ver. 3.1.1.
    

GPU de várias instâncias

Uma GPU com várias instâncias particiona uma única GPU NVIDIA H100 na mesma VM em até sete instâncias de GPU independentes. Elas são executadas simultaneamente, cada uma com a própria memória, o próprio cache e os próprios multiprocessadores de streaming. Essa configuração permite que a GPU NVIDIA H100 ofereça qualidade de serviço (QoS) consistente com utilização até sete vezes maior em comparação com os modelos de GPU anteriores.

É possível criar até sete GPUs com várias instâncias. Com as GPUs H100 de 80 GB, cada GPU com várias instâncias recebe 10 GB de memória.

Para mais informações sobre o uso de GPUs de várias instâncias, consulte o Guia do usuário de GPU com várias instâncias NVIDIA.

Para criar GPUs de várias instâncias, conclua as seguintes etapas:

  1. Crie instâncias A3 Mega, A3 High ou A3 Edge.

  2. Instale os drivers da GPU.

  3. Ative o modo MIG. Para instruções, consulte Ativar o MIG.

  4. Configure as partições de GPU. Para instruções, consulte Trabalhar com partições de GPU.