Questo documento descrive la configurazione per le istanze di macchine virtuali (VM) A3 Mega, A3 High o A3 Edge con otto GPU NVIDIA H100 collegate e che utilizzano una delle seguenti tecnologie GPUDirect: GPUDirect-TCPX o GPUDirect-TCPXO. Per creare un'istanza A3 High con meno di 8 GPU, consulta Crea un'istanza A3 High o A2.
La tecnologia GPUDirect che utilizzi dipende dal tipo di macchina A3 che selezioni.
- GPUDirect-TCPXO: è uno stack di rete con trasferimento simile a RDMA
supportato sui tipi di macchine A3 Mega (
a3-megagpu-8g) con otto GPU H100. - GPUDirect-TCPX: è una versione ottimizzata di TCP guest che offre
una latenza inferiore ed è supportata sui tipi di macchine A3 High (
a3-highgpu-8g) e A3 Edge (a3-edgegpu-8g) che dispongono di otto GPU H100.
La serie di macchine A3 ottimizzate per l'acceleratore
ha 208 vCPU e fino a 1872 GB di memoria. I tipi di macchina
a3-megagpu-8g, a3-highgpu-8g e a3-edgegpu-8g offrono 80 GB
di memoria GPU per GPU. Questi tipi di macchine possono raggiungere fino a 1800 Gbps di larghezza di banda di rete, il che le rende ideali per HPC, database e modelli linguistici di grandi dimensioni basati su Transformer.
GPUDirect-TCPX e GPUDirect-TCPXO utilizzano la tecnologia NVIDIA GPUDirect per aumentare le prestazioni e ridurre la latenza delle VM A3. Ciò è possibile consentendo il trasferimento dei payload dei pacchetti di dati direttamente dalla memoria GPU all'interfaccia di rete, bypassando la CPU e la memoria di sistema. Si tratta di una forma di accesso diretto alla memoria da remoto (RDMA). Se combinate con Google Virtual NIC (gVNIC), le VM A3 possono offrire il throughput più elevato tra le VM in un cluster rispetto ai tipi di macchine ottimizzati per l'acceleratore A2 o G2 di generazione precedente.
Questo documento descrive come creare una VM A3 Mega, A3 High o A3 Edge e attivare GPUDirect-TCPX o GPUDirect-TCPXO per testare le prestazioni di rete migliorate della GPU.
Prima di iniziare
- Per esaminare le limitazioni e i passaggi preliminari aggiuntivi per la creazione di istanze con GPU collegate, ad esempio la selezione di un'immagine sistema operativo e il controllo della quota di GPU, consulta la Panoramica della creazione di un'istanza con GPU collegate.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso a Google Cloud servizi e API. Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
- Set a default region and zone.
-
Ruoli obbligatori
Per ottenere le autorizzazioni
necessarie per creare VM,
chiedi all'amministratore di concederti il
ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare VM. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare VM sono necessarie le seguenti autorizzazioni:
-
compute.instances.createsul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnlysull'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnlysullo snapshot -
Per utilizzare un template di istanza per creare la VM:
compute.instanceTemplates.useReadOnlysul template di istanza -
Per specificare una subnet per la VM:
compute.subnetworks.usesul progetto o sulla subnet scelta -
Per specificare un indirizzo IP statico per la VM:
compute.addresses.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC:
compute.subnetworks.useExternalIpsul progetto o sulla subnet scelta -
Per assegnare una rete legacy alla VM:
compute.networks.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIpsul progetto -
Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadatasul progetto -
Per impostare i tag per la VM:
compute.instances.setTagssulla VM -
Per impostare le etichette per la VM:
compute.instances.setLabelssulla VM -
Per impostare un service account che la VM possa utilizzare:
compute.instances.setServiceAccountsulla VM -
Per creare un nuovo disco per la VM:
compute.disks.createsul progetto -
Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura:
compute.disks.usesul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnlysul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Panoramica
Per testare le prestazioni di rete con GPUDirect, completa i seguenti passaggi:
- Configura una o più reti Virtual Private Cloud (VPC) con un valore MTU elevato.
- Crea l'istanza GPU.
Configura le reti VPC
Per consentire una comunicazione efficiente per le tue VM GPU, devi creare una rete di gestione e una o più reti di dati. La rete di gestione viene utilizzata per l'accesso esterno, ad esempio SSH, e per la maggior parte delle comunicazioni di rete generali. Le reti di dati vengono utilizzate per la comunicazione ad alte prestazioni tra le GPU su VM diverse, ad esempio per il traffico di accesso diretto alla memoria remota (RDMA).
Per queste reti VPC, ti consigliamo di impostare l'unità massima di trasmissione (MTU) su un valore maggiore. Valori MTU più elevati aumentano le dimensioni dei pacchetti e riducono l'overhead delle intestazioni dei pacchetti, il che aumenta il throughput dei dati del payload. Per ulteriori informazioni su come creare reti VPC, consulta Crea e verifica una rete MTU con frame jumbo.
Crea una rete di gestione, una subnet e una regola firewall
Per configurare la rete di gestione, completa i seguenti passaggi:
Crea la rete di gestione utilizzando il comando
networks create:gcloud compute networks create NETWORK_NAME_PREFIX-mgmt-net \ --project=PROJECT_ID \ --subnet-mode=custom \ --mtu=8244Crea la subnet di gestione utilizzando il 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/24Crea le regole firewall utilizzando il comando
firewall-rules create.Crea una regola firewall per la rete di gestione.
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/16Crea la regola firewall
tcp:22per limitare gli indirizzi IP di origine che possono connettersi alla tua VM utilizzando 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_RANGECrea la regola firewall
icmpche può essere utilizzata per verificare la presenza di problemi di trasmissione dei dati nella rete.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
Sostituisci quanto segue:
NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.PROJECT_ID: il tuo ID progetto.REGION: la regione in cui vuoi creare le reti.SSH_SOURCE_IP_RANGE: l'intervallo IP in formato CIDR. Questo specifica quali indirizzi IP di origine possono connettersi alla VM utilizzando SSH.
Crea reti dati, subnet e regole firewall
Il numero di reti di dati varia a seconda del tipo di macchina GPU che stai creando.A3 Mega
A3 Mega richiede otto reti dati. Utilizza il seguente comando per creare otto reti dati, ciascuna con subnet e regole 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
A3 High e A3 Edge richiedono quattro reti di dati. Utilizza il seguente comando per creare quattro reti dati, ciascuna con subnet e regole 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
Crea istanze A3 Mega (GPUDirect-TCPXO)
Crea le istanze A3 Mega utilizzando l'immagine Container-Optimized OS cos-121-lts o successiva.
COS
Per testare le prestazioni di rete con GPUDirect-TCPXO, crea almeno due istanze VM A3 Mega.
Crea ogni VM utilizzando l'immagine Container-Optimized OS cos-121-lts o successiva
e specificando le reti VPC create nel passaggio precedente.
Le VM A3 Mega richiedono nove interfacce di rete Google Virtual NIC (gVNIC), una per la rete di gestione e otto per le reti di dati.
In base al modello di provisioning che vuoi utilizzare per creare la VM, seleziona una delle seguenti opzioni:
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
Sostituisci quanto segue:
VM_NAME: il nome dell'istanza VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.
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
Sostituisci quanto segue:
VM_NAME: il nome dell'istanza VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM in caso di prerilascio. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
Avvio flessibile
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
Sostituisci quanto segue:
VM_NAME: il nome dell'istanza VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine della durata di esecuzione. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
RUN_DURATION: il tempo massimo di esecuzione della VM prima che Compute Engine la arresti o la elimini. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguito rispettivamente dad,h,mes. Ad esempio, un valore di30mdefinisce un tempo di 30 minuti, mentre un valore di1h2m3sdefinisce un tempo di un'ora, due minuti e tre secondi. Puoi specificare un valore compreso tra 10 minuti e 7 giorni.VALID_FOR_DURATION: il tempo massimo di attesa per il provisioning delle risorse richieste. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguiti rispettivamente dad,h,mes. In base ai requisiti di zona per il tuo workload, specifica una delle seguenti durate per aumentare le probabilità di riuscita della richiesta di creazione della VM:- Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata
compresa tra 90 secondi (
90s) e due ore (2h). Durate più lunghe aumentano le probabilità di ottenere risorse. - Se la VM può essere eseguita in qualsiasi zona all'interno della regione, specifica una durata di zero secondi
(
0s). Questo valore specifica che Compute Engine alloca le risorse solo se sono immediatamente disponibili. Se la richiesta di creazione non va a buon fine perché le risorse non sono disponibili, riprova la richiesta in una zona diversa.
- Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata
compresa tra 90 secondi (
Con prenotazione
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
Sostituisci quanto segue:
VM_NAME: il nome dell'istanza VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine del periodo di prenotazione. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
RESERVATION_URL: l'URL della prenotazione che vuoi utilizzare. Specifica uno dei seguenti valori:- Se hai creato la prenotazione nello stesso progetto:
example-reservation - Se la prenotazione si trova in un progetto diverso e
il tuo progetto può utilizzarla:
projects/PROJECT_ID/reservations/example-reservation.
- Se hai creato la prenotazione nello stesso progetto:
Installa i driver della GPU
Installa i driver della GPU su ogni VM A3 Mega.
Installa i driver GPU NVIDIA.
sudo cos-extensions install gpu -- --version=latest
Rimonta il percorso.
sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia
Concedi alle NIC l'accesso alle GPU
Su ogni VM A3 Mega, concedi alle NIC l'accesso alle GPU.
- Modifica le impostazioni del firewall per accettare tutte le connessioni TCP in entrata e abilitare la comunicazione
tra i nodi del cluster:
sudo /sbin/iptables -I INPUT -p tcp -m tcp -j ACCEPT
- Configura il modulo
dmabuf. Carica il moduloimport-helper, che fa parte del frameworkdmabuf. Questo framework consente la condivisione della memoria ad alta velocità e senza copia tra la GPU e la scheda di interfaccia di rete (NIC), un componente fondamentale per la tecnologia GPUDirect:sudo modprobe import-helper
- Configura Docker per autenticare le richieste ad Artifact Registry.
docker-credential-gcr configure-docker --registries us-docker.pkg.dev
- Avvia
RxDMnel container.RxDMè un servizio di gestione che viene eseguito insieme all'applicazione GPU per gestire la memoria GPU. Questo servizio prealloca e gestisce la memoria GPU per il traffico di rete in entrata, un elemento chiave della tecnologia GPUDirect ed essenziale per il networking ad alte prestazioni. Avvia un container Docker denominatorxdm: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=8Per verificare che
RxDMsia stato avviato correttamente, esegui il comando. Attendi il messaggio "Buffer manager initialization complete" (Inizializzazione del buffer manager completata) per confermare l'inizializzazione riuscita diRxDM.docker container logs --follow rxdm
In alternativa, controlla il log di completamento dell'inizializzazione di
RxDM.docker container logs rxdm 2>&1 | grep "Buffer manager initialization complete"
Configura l'ambiente NCCL
Su ogni VM A3 Mega, completa i seguenti passaggi:
- Installa la libreria
nccl-net, un plug-in per NCCL che consente la comunicazione GPUDirect sulla rete.Il seguente comando estrae l'immagine del programma di installazione e installa i file di libreria necessari in/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 - Avvia un container dedicato
nccl-testsper i test NCCL. Questo container è preconfigurato con gli strumenti e gli script di utilità necessari, garantendo un ambiente pulito e coerente per la verifica delle prestazioni di configurazione di GPUDirect.Questo comando riutilizza la variabile
NCCL_NET_IMAGEimpostata nel passaggio precedente.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
Esegui il benchmark nccl-tests
Per eseguire il benchmark nccl-tests su una singola VM A3 Mega, completa i seguenti passaggi:
- Apri una shell bash interattiva all'interno del container
nccl-tests.docker exec -it nccl bash
- Configura l'ambiente per un'esecuzione
multi-nodo impostando SSH e generando file host. Sostituisci
VM_NAME_1eVM_NAME_2con i nomi di ciascuna VM./scripts/init_ssh.sh VM_NAME_1 VM_NAME_2 /scripts/gen_hostfiles.sh VM_NAME_1 VM_NAME_2
Viene creata una directory denominata
/scripts/hostfiles2. - Esegui il
all_gather_perfbenchmark per misurare il rendimento collettivo della comunicazione:/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
Dall'interno della shell bash del container nccl-tests, completa i seguenti passaggi.
Crea istanze A3 High e Edge (GPUDirect-TCPX)
Crea le istanze A3 High e Edge utilizzando l'immagine Container-Optimized OS cos-121-lts o successiva.
COS
Per testare le prestazioni di rete con GPUDirect-TCPX, devi creare almeno
due VM A3 High o Edge. Crea ogni VM utilizzando l'immagine Container-Optimized OS cos-121-lts o successiva
e specificando le reti VPC create nel passaggio precedente.
Le VM devono utilizzare l'interfaccia di rete Google Virtual NIC (gVNIC). Per le VM A3 High o Edge, devi utilizzare la versione 1.4.0rc3 o successive del driver gVNIC. Questa versione del driver è disponibile su Container-Optimized OS. La prima NIC virtuale viene utilizzata come NIC principale per la rete e l'archiviazione generiche, mentre le altre quattro NIC virtuali sono allineate con NUMA con due delle otto GPU sullo stesso switch PCIe.
In base al modello di provisioning che vuoi utilizzare per creare la VM, seleziona una delle seguenti opzioni:
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
Sostituisci quanto segue:
VM_NAME: il nome della VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.MACHINE_TYPE: il tipo di macchina per la VM Specificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.
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
Sostituisci quanto segue:
VM_NAME: il nome della VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.MACHINE_TYPE: il tipo di macchina per la VM Specificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM in caso di prerilascio. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
Avvio flessibile
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
Sostituisci quanto segue:
VM_NAME: il nome della VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.MACHINE_TYPE: il tipo di macchina per la VM Specificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine della durata di esecuzione. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
RUN_DURATION: il tempo massimo di esecuzione della VM prima che Compute Engine la arresti o la elimini. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguito rispettivamente dad,h,mes. Ad esempio, un valore di30mdefinisce un tempo di 30 minuti, mentre un valore di1h2m3sdefinisce un tempo di un'ora, due minuti e tre secondi. Puoi specificare un valore compreso tra 10 minuti e 7 giorni.VALID_FOR_DURATION: il tempo massimo di attesa per il provisioning delle risorse richieste. Devi formattare il valore come numero di giorni, ore, minuti o secondi seguiti rispettivamente dad,h,mes. In base ai requisiti di zona per il tuo workload, specifica una delle seguenti durate per aumentare le probabilità di riuscita della richiesta di creazione della VM:- Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata
compresa tra 90 secondi (
90s) e due ore (2h). Durate più lunghe aumentano le probabilità di ottenere risorse. - Se la VM può essere eseguita in qualsiasi zona all'interno della regione, specifica una durata di zero secondi
(
0s). Questo valore specifica che Compute Engine alloca le risorse solo se sono immediatamente disponibili. Se la richiesta di creazione non va a buon fine perché le risorse non sono disponibili, riprova la richiesta in una zona diversa.
- Se il tuo workload richiede la creazione della VM in una zona specifica, specifica una durata
compresa tra 90 secondi (
Con prenotazione
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
Sostituisci quanto segue:
VM_NAME: il nome della VM.PROJECT_ID: l'ID progetto.ZONE: una zona che supporta il tuo tipo di macchina.MACHINE_TYPE: il tipo di macchina per la VM Specificaa3-highgpu-8goa3-edgegpu-8g.BOOT_DISK_SIZE: le dimensioni del disco di avvio in GB, ad esempio50.NETWORK_NAME_PREFIX: il prefisso del nome da utilizzare per le reti VPC e le subnet.TERMINATION_ACTION: indica se arrestare o eliminare la VM al termine del periodo di prenotazione. Specifica uno dei seguenti valori:- Per arrestare la VM:
STOP - Per eliminare la VM:
DELETE
- Per arrestare la VM:
RESERVATION_URL: l'URL della prenotazione che vuoi utilizzare. Specifica uno dei seguenti valori:- Se hai creato la prenotazione nello stesso progetto:
example-reservation - Se la prenotazione si trova in un progetto diverso e
il tuo progetto può utilizzarla:
projects/PROJECT_ID/reservations/example-reservation.
- Se hai creato la prenotazione nello stesso progetto:
Installa i driver della GPU
Su ogni VM A3 High o Edge, completa i seguenti passaggi.
- Installa i driver GPU NVIDIA eseguendo il seguente comando:
sudo cos-extensions install gpu -- --version=latest
- Monta di nuovo il percorso eseguendo il seguente comando:
sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia
Concedi alle NIC l'accesso alle GPU
Su ogni VM A3 High o Edge, concedi alle NIC l'accesso alle GPU completando i seguenti passaggi:
- Configura il registry.
- Se utilizzi Container Registry, esegui il seguente comando:
docker-credential-gcr configure-docker
- Se utilizzi Artifact Registry, esegui il seguente comando:
docker-credential-gcr configure-docker --registries us-docker.pkg.dev
- Se utilizzi Container Registry, esegui il seguente comando:
- Configura il gestore del percorso dati in arrivo. Deve essere eseguito un servizio di gestione,
GPUDirect-TCPX Receive Data Path Manager, insieme alle applicazioni che utilizzano GPUDirect-TCPX. Per avviare il
servizio su ogni VM Container-Optimized OS, esegui il seguente 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" - Verifica che il container
receive-datapath-managersia stato avviato.docker container logs --follow receive-datapath-manager
L'output dovrebbe essere simile al seguente:
I0000 00:00:1687813309.406064 1 rx_rule_manager.cc:174] Rx Rule Manager server(s) started...
- Per interrompere la visualizzazione dei log, premi
ctrl-c. - Installa le regole della tabella IP.
sudo iptables -I INPUT -p tcp -m tcp -j ACCEPT
- Configura la NVIDIA Collective Communications Library (NCCL)
e il plug-in GPUDirect-TCPX.
Per utilizzare NCCL con il supporto di GPUDirect-TCPX è necessaria una versione specifica della libreria NCCL e una combinazione di file binari del plug-in GPUDirect-TCPX. Google Cloud offre pacchetti che soddisfano questo requisito.
Per installare il pacchetto Google Cloud , esegui il seguente 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 il comando ha esito positivo, i file
libnccl-net.soelibnccl.sovengono inseriti nella directory/var/lib/tcpx/lib64.
Esegui test
Su ogni VM A3 High o Edge, esegui un test NCCL completando i seguenti passaggi:
- Avvia il container.
#!/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 \ "$@" }Il comando precedente completa quanto segue:
- Monta i dispositivi NVIDIA da
/devnel container - Imposta lo spazio dei nomi di rete del container sull'host
- Imposta lo spazio dei nomi dell'utente del container sull'host
- Aggiunge
CAP_IPC_LOCKalle funzionalità del container - Monta
/tmpdell'host su/tmpdel container - Monta il percorso di installazione della NCCL e del plug-in GPUDirect-TCPX NCCL nel
container e aggiungi il percorso montato a
LD_LIBRARY_PATH
- Monta i dispositivi NVIDIA da
- Dopo aver avviato il container, le applicazioni che utilizzano NCCL possono essere eseguite
al suo interno. Ad esempio, per eseguire il test
run-allgather, completa i seguenti passaggi:- Su ogni VM A3 High o Edge, esegui quanto segue:
$ run_tcpx_container -it --rm us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx shell
- Su una VM, esegui i seguenti comandi:
- Configura la connessione tra le VM. Sostituisci
VM-0eVM-1con i nomi di ciascuna VM./scripts/init_ssh.sh VM-0 VM-1 pushd /scripts && /scripts/gen_hostfiles.sh VM-0 VM-1; popd
Viene creata una directory
/scripts/hostfiles2su ogni VM. - Esegui lo script.
/scripts/run-allgather.sh 8 eth1,eth2,eth3,eth4 1M 512M 2
- Configura la connessione tra le VM. Sostituisci
L'esecuzione dello script
run-allgatherrichiede circa due minuti. Alla fine dei log, vedrai i risultati diall-gather.Se nei log NCCL viene visualizzata la riga seguente, significa che GPUDirect-TCPX è stato inizializzato correttamente.
NCCL INFO NET/GPUDirectTCPX ver. 3.1.1.
- Su ogni VM A3 High o Edge, esegui quanto segue:
GPU multi-istanza
Una GPU multi-istanza partiziona una singola GPU NVIDIA H100 all'interno della stessa VM in un massimo di sette istanze GPU indipendenti. Vengono eseguite contemporaneamente, ognuna con la propria memoria cache, la propria cache e i propri multiprocessori streaming. Questa configurazione consente alla GPU NVIDIA H100 di offrire una qualità del servizio (QoS) coerente con un utilizzo fino a 7 volte superiore rispetto ai modelli di GPU precedenti.
Puoi creare fino a sette GPU multi-istanza. Con le GPU H100 da 80 GB, a ogni GPU multi-istanza vengono allocati 10 GB di memoria.
Per ulteriori informazioni sull'utilizzo delle GPU multi-istanza, consulta la Guida dell'utente per le GPU multi-istanza NVIDIA.
Per creare GPU multi-istanza, completa i seguenti passaggi:
Crea le istanze A3 Mega, A3 High o A3 Edge.
Installa i driver della GPU.
Attiva la modalità MIG. Per istruzioni, vedi Attivare il MIG.
Configura le partizioni GPU. Per istruzioni, vedi Utilizzare le partizioni GPU.