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

Este documento descreve a configuração de instâncias de máquinas virtuais (MV) 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 o artigo Crie uma instância A3 High ou A2.

A tecnologia GPUDirect que usa depende do tipo de máquina A3 que selecionar.

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

A série de máquinas otimizadas para aceleradores A3 tem 208 vCPUs e até 1872 GB de memória. Os tipos de máquinas a3-megagpu-8g, a3-highgpu-8g e a3-edgegpu-8g oferecem 80 GB de memória de GPU por GPU. Estes tipos de máquinas podem atingir até 1800 Gbps de largura de banda da rede, o que os torna ideais para modelos de linguagem baseados em transformadores grandes, bases 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 suas VMs A3. Isto é conseguido permitindo que as cargas úteis dos pacotes de dados sejam transferidas diretamente da memória da GPU para a interface de rede, ignorando a CPU e a memória do sistema. Esta é uma forma de acesso direto à memória remoto (RDMA). Quando combinadas com a NIC virtual da Google (gVNIC), as VMs A3 podem oferecer o débito mais elevado entre VMs num cluster em comparação com os tipos de máquinas otimizados para aceleradores A2 ou G2 da geração anterior.

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

Antes de começar

  • Para rever as limitações e os passos pré-requisitos adicionais para criar instâncias com GPUs anexadas, como selecionar uma imagem do SO e verificar a quota de GPU, consulte o resumo da criação de uma instância com GPUs anexadas.
  • 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:
    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.

Funções necessárias

Para receber as autorizações necessárias para criar VMs, peça ao seu administrador para lhe conceder a função de IAM Administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para criar VMs. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

As seguintes autorizações são necessárias para criar VMs:

  • compute.instances.create no projeto
  • Para usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
  • Para usar um instantâneo para criar a VM: compute.snapshots.useReadOnly no instantâneo
  • Para usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
  • Para especificar uma sub-rede para a sua VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Para especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Para atribuir um endereço IP externo à VM quando usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Para atribuir uma rede antiga à VM: compute.networks.use no projeto
  • Para atribuir um endereço IP externo à VM quando usar uma rede antiga: compute.networks.useExternalIp no projeto
  • Para definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
  • Para definir etiquetas para a VM: compute.instances.setTags na VM
  • Para definir etiquetas para a VM: compute.instances.setLabels na VM
  • Para definir uma conta de serviço para a VM usar: compute.instances.setServiceAccount na VM
  • Para criar um novo disco para a VM: compute.disks.create no projeto
  • Para anexar um disco existente no modo de leitura ou leitura/escrita: compute.disks.use no disco
  • Para anexar um disco existente no modo de leitura: compute.disks.useReadOnly no disco

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Vista geral

Para testar o desempenho da rede com o GPUDirect, conclua os seguintes passos:

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

Configure redes VPC

Para permitir uma comunicação eficiente para as suas VMs de GPU, tem de criar uma rede de gestão e uma ou mais redes de dados. A rede de gestão é usada para acesso externo, por exemplo, SSH, e para a maioria das comunicações de rede gerais. As redes de dados são usadas para comunicação de alto desempenho entre as GPUs em VMs diferentes, por exemplo, para tráfego de acesso direto à memória remoto (RDMA).

Para estas redes VPC, recomendamos que defina a unidade de transmissão máxima (MTU) para um valor superior. Os valores de MTU mais elevados aumentam o tamanho dos pacotes e reduzem a sobrecarga do cabeçalho dos pacotes, o que aumenta o débito de dados da carga útil. Para mais informações sobre como criar redes VPC, consulte o artigo Crie e valide uma rede MTU de jumbo frames.

Crie uma rede de gestão, uma sub-rede e uma regra de firewall

Conclua os passos seguintes para configurar a rede de gestão:

  1. Crie a rede de gestão com 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 gestão com 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 através do comando firewall-rules create.

    1. Crie uma regra de firewall para a rede de gestão.

      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 os endereços IP de origem que podem estabelecer ligação à sua VM através de 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 icmpque pode ser usada para verificar se existem 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 o seguinte:

  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • PROJECT_ID : o ID do seu projeto.
  • REGION: a região onde quer criar as redes.
  • SSH_SOURCE_IP_RANGE: intervalo de IPs no formato CIDR. Isto especifica que endereços IP de origem podem estabelecer ligação à sua VM através de SSH.

Crie redes de dados, sub-redes e regras de firewall

O número de redes de dados varia consoante o tipo de máquina de GPU que está a criar.

A3 Mega

O A3 Mega requer oito redes de dados. Use o comando seguinte 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 requerem quatro redes de dados. Use o seguinte comando 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

Crie instâncias A3 Mega (GPUDirect-TCPXO)

Crie as suas instâncias A3 Mega usando a imagem do SO otimizado para contentores cos-121-lts ou posterior.

COS

Para testar o desempenho da rede com o GPUDirect-TCPXO, crie, pelo menos, duas instâncias de VM A3 Mega. Crie cada VM com a imagem do SO otimizado para contentores cos-121-lts ou posterior e especificando as redes VPC que criou no passo anterior.

As VMs A3 Mega requerem nove interfaces de rede da NIC virtual da Google (gVNIC), uma para a rede de gestão e oito para as redes de dados.

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

Standard

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 o seguinte:

  • VM_NAME: o nome da sua instância de VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.

Espaç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 \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Substitua o seguinte:

  • VM_NAME: o nome da sua instância de VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se a VM deve ser parada ou eliminada na preempção. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE

Flex-start

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 o seguinte:

  • VM_NAME: o nome da sua instância de VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final da respetiva duração de execução. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE
  • RUN_DURATION: o tempo máximo que a VM é executada antes de o Compute Engine a parar ou eliminar. Tem de formatar o valor como o número de dias, horas, minutos ou segundos, seguido de d, h, m e s, respetivamente. 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. Pode especificar um valor entre 10 minutos e sete dias.
  • VALID_FOR_DURATION`: o tempo máximo de espera para o aprovisionamento dos recursos pedidos. Tem de formatar o valor como o número de dias, horas, minutos ou segundos seguido de d, h, m e s, respetivamente. Com base nos requisitos zonais da sua carga de trabalho, especifique uma das seguintes durações para ajudar a aumentar as probabilidades de êxito do seu pedido de criação de VMs:
    • Se a sua carga de trabalho exigir que crie a VM numa zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). As durações mais longas dão-lhe maiores probabilidades de obter recursos.
    • Se a VM puder ser executada em qualquer zona na região, especifique uma duração de zero segundos (0s). Este valor especifica que o Compute Engine só atribui recursos se estiverem imediatamente disponíveis. Se o pedido de criação falhar porque os recursos estão indisponíveis, tente novamente o pedido numa zona diferente.

Associado a 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 o seguinte:

  • VM_NAME: o nome da sua instância de VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final do período de reserva. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE
  • RESERVATION_URL: o URL da reserva que quer consumir. Especifique um dos seguintes valores:
    • Se criou a reserva no mesmo projeto: example-reservation
    • Se a reserva estiver num projeto diferente e o seu projeto puder usá-la: projects/PROJECT_ID/reservations/example-reservation.

Instale controladores da GPU

Em cada VM A3 Mega, instale os controladores da GPU.

  1. Instale os controladores da GPU NVIDIA.

    sudo cos-extensions install gpu -- --version=latest
    
  2. Volte a montar o caminho.

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

Conceda às NICs acesso às GPUs

Em cada VM A3 Mega, conceda às NICs acesso às GPUs.

  1. Ajuste as definições da firewall para aceitar todas as ligações TCP recebidas e ativar a comunicação entre os nós no seu 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 da framework dmabuf. Esta estrutura permite a partilha de memória de alta velocidade e sem cópias entre a GPU e a placa de rede (NIC), um componente crítico para a tecnologia GPUDirect:
    sudo modprobe import-helper
  3. Configure o Docker para autenticar pedidos ao Artifact Registry.
    docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  4. Inicie o RxDM no contentor. RxDM é um serviço de gestão que é executado juntamente com a aplicação de GPU para gerir a memória da GPU. Este serviço pré-atribui e gere a memória da GPU para o tráfego de rede recebido, que é um elemento essencial da tecnologia GPUDirect e essencial para redes de alto desempenho. Inicie um contentor do Docker com o nome 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 com êxito, execute o comando. Aguarde pela mensagem "Buffer manager initialization complete" para confirmar a inicialização bem-sucedida.RxDM

    docker container logs --follow  rxdm

    Em alternativa, verifique o registo de conclusão da inicialização RxDM.

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

Configure o ambiente NCCL

Em cada VM A3 Mega, conclua os seguintes passos:

  1. Instale a biblioteca nccl-net, um plug-in para o NCCL que permite a comunicação GPUDirect através da rede.O seguinte comando extrai a imagem do instalador e instala os ficheiros 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 contentor dedicado nccl-tests para testes da NCCL. Este contentor é pré-configurado com as ferramentas e os scripts de utilidade necessários, o que garante um ambiente limpo e consistente para validar o desempenho da configuração do GPUDirect.

    Este comando reutiliza a variável NCCL_NET_IMAGE que definiu no passo 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

Execute o teste de referência nccl-tests

Para executar o benchmark nccl-tests numa única VM A3 Mega, conclua os seguintes passos:

  1. Abra uma shell bash interativa no contentor nccl-tests.
    docker exec -it nccl bash
  2. A partir da shell bash do contentor nccl-tests, conclua os seguintes passos.

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

      Isto cria um diretório com o nome /scripts/hostfiles2.

    2. Execute o teste de referência all_gather_perf para medir o desempenho 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

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

Crie as suas instâncias A3 High e Edge usando a imagem do SO otimizado para contentores cos-121-lts ou posterior.

COS

Para testar o desempenho da rede com o GPUDirect-TCPX, tem de criar, pelo menos, duas VMs A3 High ou Edge. Crie cada VM usando a imagem do SO otimizado para contentores cos-121-lts ou posterior e especificando as redes VPC que criou no passo anterior.

As VMs têm de usar a interface de rede da NIC virtual da Google (gVNIC). Para VMs A3 High ou Edge, tem de usar a versão 1.4.0rc3 ou posterior do controlador gVNIC. Esta versão do controlador está disponível no SO otimizado para contentores. A primeira NIC virtual é usada como a NIC principal para rede e armazenamento gerais. As outras quatro NICs virtuais estão alinhadas com NUMA com duas das oito GPUs no mesmo comutador PCIe.

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

Standard

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 o seguinte:

  • VM_NAME: o nome da sua VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina para a VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.

Espaç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 \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Substitua o seguinte:

  • VM_NAME: o nome da sua VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina para a VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se a VM deve ser parada ou eliminada na preempção. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE

Flex-start

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 o seguinte:

  • VM_NAME: o nome da sua VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o 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 arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final da respetiva duração de execução. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE
  • RUN_DURATION: o tempo máximo que a VM é executada antes de o Compute Engine a parar ou eliminar. Tem de formatar o valor como o número de dias, horas, minutos ou segundos, seguido de d, h, m e s, respetivamente. 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. Pode especificar um valor entre 10 minutos e sete dias.
  • VALID_FOR_DURATION`: o tempo máximo de espera para o aprovisionamento dos recursos pedidos. Tem de formatar o valor como o número de dias, horas, minutos ou segundos seguido de d, h, m e s, respetivamente. Com base nos requisitos zonais da sua carga de trabalho, especifique uma das seguintes durações para ajudar a aumentar as probabilidades de êxito do seu pedido de criação de VMs:
    • Se a sua carga de trabalho exigir que crie a VM numa zona específica, especifique uma duração entre 90 segundos (90s) e duas horas (2h). As durações mais longas dão-lhe maiores probabilidades de obter recursos.
    • Se a VM puder ser executada em qualquer zona na região, especifique uma duração de zero segundos (0s). Este valor especifica que o Compute Engine só atribui recursos se estiverem imediatamente disponíveis. Se o pedido de criação falhar porque os recursos estão indisponíveis, tente novamente o pedido numa zona diferente.

Associado a 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 o seguinte:

  • VM_NAME: o nome da sua VM.
  • PROJECT_ID: o ID do seu projeto.
  • ZONE: uma zona que suporta o seu tipo de máquina.
  • MACHINE_TYPE: o tipo de máquina para a VM. Especifique a3-highgpu-8g ou a3-edgegpu-8g.
  • BOOT_DISK_SIZE: o tamanho do disco de arranque em GB, por exemplo, 50.
  • NETWORK_NAME_PREFIX: o prefixo do nome a usar para as redes e as sub-redes da VPC.
  • TERMINATION_ACTION: se deve parar ou eliminar a VM no final do período de reserva. Especifique um dos seguintes valores:
    • Para parar a VM: STOP
    • Para eliminar a VM: DELETE
  • RESERVATION_URL: o URL da reserva que quer consumir. Especifique um dos seguintes valores:
    • Se criou a reserva no mesmo projeto: example-reservation
    • Se a reserva estiver num projeto diferente e o seu projeto puder usá-la: projects/PROJECT_ID/reservations/example-reservation.

Instale controladores da GPU

Em cada VM A3 High ou Edge, conclua os passos seguintes.

  1. Instale os controladores da GPU NVIDIA executando o seguinte comando:
    sudo cos-extensions install gpu -- --version=latest
  2. Volte a montar o caminho executando o seguinte comando:
    sudo mount --bind /var/lib/nvidia /var/lib/nvidia
    sudo mount -o remount,exec /var/lib/nvidia

Conceda às NICs acesso às GPUs

Em cada VM A3 High ou Edge, conceda às NICs acesso às GPUs concluindo os seguintes passos:

  1. Configure a base de dados de registo.
    • Se estiver a usar o Container Registry, execute o seguinte comando:
      docker-credential-gcr configure-docker
    • Se estiver a usar o Artifact Registry, execute o seguinte comando:
      docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  2. Configure o gestor do caminho de receção de dados. Um serviço de gestão, o GPUDirect-TCPX Receive Data Path Manager, tem de ser executado juntamente com as aplicações que usam o GPUDirect-TCPX. Para iniciar o serviço em cada VM do SO otimizado para contentores, 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 contentor receive-datapath-manager foi iniciado.
    docker container logs --follow receive-datapath-manager

    O resultado deve ser semelhante ao seguinte:

    I0000 00:00:1687813309.406064       1 rx_rule_manager.cc:174] Rx Rule Manager server(s) started...
  4. Para parar de ver os registos, prima ctrl-c.
  5. Instale regras de 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.

    É necessária uma combinação específica da versão da biblioteca NCCL e do binário do plugin GPUDirect-TCPX para usar o NCCL com suporte do GPUDirect-TCPX.A Google Cloud forneceu pacotes que cumprem este 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 este comando for bem-sucedido, os ficheiros libnccl-net.so e libnccl.so são colocados no diretório /var/lib/tcpx/lib64.

Execute testes

Em cada VM A3 High ou Edge, execute um teste NCCL concluindo os seguintes passos:

  1. Inicie o contentor.
    #!/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 conclui o seguinte:

    • Monta dispositivos NVIDIA de /dev no contentor
    • Define o espaço de nomes de rede do contentor para o anfitrião
    • Define o espaço de nomes do utilizador do contentor como anfitrião
    • Adiciona CAP_IPC_LOCK às capacidades do contentor
    • Monta /tmp do anfitrião em /tmp do contentor
    • Monta o caminho de instalação do NCCL e do plug-in NCCL GPUDirect-TCPX no contentor e adiciona o caminho montado a LD_LIBRARY_PATH
  2. Depois de iniciar o contentor, as aplicações que usam a NCCL podem ser executadas a partir do interior do contentor. Por exemplo, para executar o teste run-allgather, conclua os seguintes passos:
    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. Numa VM, execute os seguintes comandos:
      1. Configure a ligação entre as VMs. Substitua VM-0 e VM-1 pelos nomes de cada MV.
        /scripts/init_ssh.sh VM-0 VM-1
        pushd /scripts && /scripts/gen_hostfiles.sh VM-0 VM-1; popd

        Esta ação 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

    A execução do script run-allgather demora cerca de dois minutos. No final dos registos, são apresentados os resultados all-gather.

    Se vir a seguinte linha nos registos da NCCL, isto confirma que o GPUDirect-TCPX foi inicializado com êxito.

    NCCL INFO NET/GPUDirectTCPX ver. 3.1.1.
    

GPU de várias instâncias

Uma GPU de várias instâncias divide uma única GPU NVIDIA H100 na mesma VM em até sete instâncias de GPU independentes. São executados em simultâneo, cada um com a sua própria memória, cache e multiprocessadores de streaming. Esta configuração permite que a GPU NVIDIA H100 ofereça uma qualidade de serviço (QoS) consistente com uma utilização até 7 vezes superior em comparação com modelos de GPU anteriores.

Pode criar até sete GPUs multi-instância. Com as GPUs H100 de 80 GB, cada GPU multi-instância tem 10 GB de memória atribuídos.

Para mais informações sobre a utilização de GPUs multi-instância, consulte o guia do utilizador de GPUs multi-instância da NVIDIA.

Para criar GPUs multi-instância, conclua os seguintes passos:

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

  2. Instale os controladores da GPU.

  3. Ative o modo MIG. Para ver instruções, consulte o artigo Ative a MIG.

  4. Configure as partições da GPU. Para ver instruções, consulte o artigo Trabalhe com partições de GPU.