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:
-
Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
- 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.createno projeto -
Usar uma imagem personalizada para criar a VM:
compute.images.useReadOnlyna imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnlyno snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância -
Especificar uma sub-rede para a VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida -
Especificar um endereço IP estático para a VM:
compute.addresses.useno projeto -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida -
Atribuir uma rede legada à VM:
compute.networks.useno projeto -
Atribuir um endereço IP externo à VM usando uma rede legada:
compute.networks.useExternalIpno projeto -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadatano projeto -
Definir tags para a VM:
compute.instances.setTagsna VM -
Definir rótulos para a VM:
compute.instances.setLabelsna VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccountna VM -
Criar um disco para a VM:
compute.disks.createno projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.useno disco -
Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnlyno 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:
- Configure uma ou mais redes de nuvem privada virtual (VPC) com uma MTU grande configurada.
- 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:
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=8244Crie 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/24Crie regras de firewall usando o comando
firewall-rules create.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/16Crie a regra de firewall
tcp:22para 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_RANGECrie a regra de firewall
icmpque 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.
- Para interromper a VM:
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.
- Para interromper a VM:
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 pord,h,mes, respectivamente. Por exemplo, um valor de30mdefine um tempo de 30 minutos, e um valor de1h2m3sdefine 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 pord,h,mes, 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.
- Se a carga de trabalho exigir que a VM seja criada em uma zona específica, especifique uma duração
entre 90 segundos (
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.
- Para interromper a VM:
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.
- Se você criou a reserva no mesmo projeto:
Instalar os drivers da GPU
Em cada VM A3 Mega, instale os drivers de GPU.
Instale os drivers de GPU NVIDIA.
sudo cos-extensions install gpu -- --version=latest
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.
- 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
- Configure o módulo
dmabuf. Carregue o móduloimport-helper, que faz parte do frameworkdmabuf. 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
- Configure o Docker para autenticar solicitações ao Artifact Registry.
docker-credential-gcr configure-docker --registries us-docker.pkg.dev
- Inicie o
RxDMno contêiner. ORxDMé 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 chamadorxdm: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=8Para verificar se o
RxDMfoi 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 doRxDM.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:
- 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 - Inicie um contêiner dedicado
nccl-testspara 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_IMAGEdefinida 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:
- Abra um shell bash interativo no contêiner
nccl-tests.docker exec -it nccl bash
- Configure o ambiente para uma execução de vários nós
configurando o SSH e gerando arquivos de host. Substitua
VM_NAME_1eVM_NAME_2pelos 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. - Execute o comparativo
all_gather_perfpara 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
No shell bash do contêiner nccl-tests, conclua as etapas a seguir.
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. Especifiquea3-highgpu-8goua3-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. Especifiquea3-highgpu-8goua3-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.
- Para interromper a VM:
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. Especifiquea3-highgpu-8goua3-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.
- Para interromper a VM:
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 pord,h,mes, respectivamente. Por exemplo, um valor de30mdefine um tempo de 30 minutos, e um valor de1h2m3sdefine 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 pord,h,mes, 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.
- Se a carga de trabalho exigir que a VM seja criada em uma zona específica, especifique uma duração
entre 90 segundos (
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. Especifiquea3-highgpu-8goua3-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.
- Para interromper a VM:
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.
- Se você criou a reserva no mesmo projeto:
Instalar os drivers da GPU
Em cada VM A3 High ou Edge, conclua as etapas a seguir.
- Instale os drivers de GPU NVIDIA executando o seguinte comando:
sudo cos-extensions install gpu -- --version=latest
- 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:
- 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
- Se você estiver usando o Container Registry, execute o seguinte comando:
- 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" - Verifique se o contêiner
receive-datapath-managerfoi 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...
- Para interromper a visualização dos registros, pressione
ctrl-c. - Instalar as regras da tabela de IP.
sudo iptables -I INPUT -p tcp -m tcp -j ACCEPT
- 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.soelibnccl.soserã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:
- 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
/devno 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_LOCKaos recursos do contêiner - Monta o
/tmpdo host no/tmpdo 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
- Monta dispositivos NVIDIA do
- 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:- 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
- Em uma VM, execute os seguintes comandos:
- Configure a conexão entre as VMs. Substitua
VM-0eVM-1pelos 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/hostfiles2em cada VM. - Execute o script.
/scripts/run-allgather.sh 8 eth1,eth2,eth3,eth4 1M 512M 2
- Configure a conexão entre as VMs. Substitua
O script
run-allgatherleva cerca de dois minutos para ser executado. No final dos registros, você verá os resultadosall-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.
- Em cada VM A3 High ou Edge, execute o seguinte:
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:
Crie instâncias A3 Mega, A3 High ou A3 Edge.
Instale os drivers da GPU.
Ative o modo MIG. Para instruções, consulte Ativar o MIG.
Configure as partições de GPU. Para instruções, consulte Trabalhar com partições de GPU.