Utilizza una larghezza di banda di rete superiore

Puoi utilizzare larghezze di banda di rete più elevate, di 100 Gbps o più, per migliorare delle prestazioni dei carichi di lavoro distribuiti in esecuzione sulle VM GPU.

Sono disponibili larghezze di banda di rete più elevate per le VM con GPU collegate su Compute Engine come segue:

  • Per le VM per uso generico N1 con GPU T4 e V100 collegate, puoi ottenere un larghezza di banda di rete massima di 100 Gbps, in base alla combinazione Conteggio di GPU e vCPU.
  • Per le VM ottimizzate per l'acceleratore A2 e G2, puoi ottenere e una larghezza di banda di rete massima di 100 Gbps, in base al tipo di macchina.
  • Per le VM ottimizzate per l'acceleratore A3, puoi ottenere una rete massima e una larghezza di banda massima di 1800 Gbit/s.

Per esaminare le configurazioni o i tipi di macchina che supportano queste reti larghezze di banda, vedi Larghezza di banda di rete e GPU.

Per informazioni generali sulla larghezza di banda della rete su Compute Engine, consulta Larghezza di banda della rete.

Panoramica

Per utilizzare le larghezze di banda della rete più elevate per ogni VM GPU, completa la seguendo i passaggi consigliati:

  1. Crea la tua VM GPU utilizzando un'immagine sistema operativo che supporti Google Virtual NIC (gVNIC). Per le VM A3, ti consigliamo di usare un'immagine Container-Optimized OS.
  2. (Facoltativo) Installa Fast Socket. Fast Socket migliora le prestazioni NCCL su 100 Gbps o superiori riducendo il conflitto tra più TCP e altre connessioni. Alcune Deep Learning VM Images (DLVM) hanno Fast Socket sono preinstallate.

Utilizza Deep Learning VM Image

Puoi creare le tue VM utilizzando qualsiasi immagine supportata da GPU dal progetto Deep Learning VM Images. Tutte le immagini DLVM supportate da GPU avere il driver GPU, il software ML e gVNIC preinstallati. Per un elenco di DLVM immagini, consulta la sezione Scegliere un'immagine.

Se vuoi utilizzare Fast Socket, puoi scegliere un'immagine DLVM come: tf-latest-gpu-debian-10 o tf-latest-gpu-ubuntu-1804.

Creare VM che utilizzano larghezze di banda di rete più elevate

Per larghezze di banda di rete più elevate, si consiglia di abilitare NIC virtuale Google (gVNIC). Per ulteriori informazioni, consulta la sezione Utilizzo dei NIC virtuali di Google.

Per le VM A3, è richiesto gVNIC versione 1.4.0rc3 o successiva. Questo conducente è disponibile in Container-Optimized OS. Per tutti gli altri sistemi operativi, devi installare gVNIC versione 1.4.0rc3 o successive.

Completa la procedura per creare una VM con GPU collegate e una larghezza di banda di rete superiore. le seguenti:

  1. Esaminare la larghezza di banda di rete massima disponibile. per ogni tipo di macchina con GPU collegate.
  2. Creare la tua VM GPU. I seguenti esempi mostrano come creare A3, A2, e N1 con VM V100 collegate.

    In questi esempi, le VM vengono create utilizzando Google Cloud CLI. Tuttavia, puoi anche utilizzare la console Google Cloud o API Compute Engine per creare queste VM. Per ulteriori informazioni sulla creazione di VM GPU, consulta Crea una VM con GPU collegate.

    A3 (H100)

    Per istruzioni dettagliate su come configurare le VM A3 per massimizzare la rete rendimento, esamina quanto segue:

    A2 (A100)

    Ad esempio, per creare una VM con una larghezza di banda massima di 100 Gbps, otto GPU A100 collegate e utilizza l'immagine DLVM tf-latest-gpu, esegui seguente comando:

    gcloud compute instances create VM_NAME \
     --project=PROJECT_ID \
     --zone=ZONE \
     --machine-type=a2-highgpu-8g \
     --maintenance-policy=TERMINATE --restart-on-failure \
     --image-family=tf-latest-gpu \
     --image-project=deeplearning-platform-release \
     --boot-disk-size=200GB \
     --network-interface=nic-type=GVNIC \
     --metadata="install-nvidia-driver=True,proxy-mode=project_editors" \
     --scopes=https://www.googleapis.com/auth/cloud-platform
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della VM
    • PROJECT_ID : il tuo ID progetto
    • ZONE: la zona per la VM. Questa zona deve supportare il tipo di GPU specificato. Per ulteriori informazioni sulle zone, consulta la disponibilità di regioni e zone GPU.

    N1 (V100)

    Ad esempio, per creare una VM con una larghezza di banda massima di 100 Gbps, ha otto GPU V100 e utilizza l'immagine DLVM tf-latest-gpu, esegui seguente comando:

    gcloud compute instances create VM_NAME \
     --project PROJECT_ID \
     --custom-cpu 96 \
     --custom-memory 624 \
     --image-project=deeplearning-platform-release \
     --image-family=tf-latest-gpu \
     --accelerator type=nvidia-tesla-v100,count=8 \
     --maintenance-policy TERMINATE \
     --metadata="install-nvidia-driver=True"  \
     --boot-disk-size 200GB \
     --network-interface=nic-type=GVNIC \
     --zone=ZONE
    
  3. Se non utilizzi Deep Learning VM Image supportate da GPU oppure Container-Optimized OS, installa i driver GPU. Per ulteriori informazioni informazioni, consulta la sezione Installazione dei driver GPU.

  4. (Facoltativo) Sulla VM, installa Fast Socket.

  5. Dopo aver configurato la VM, puoi verifica la larghezza di banda della rete.

Installazione di Presa rapida

NVIDIA Collective Communications Library (NCCL) è utilizzata dal deep learning come TensorFlow, PyTorch, Horovod per più GPU e l'addestramento con più nodi.

Fast Socket è un servizio di trasporto di rete di proprietà di Google per NCCL. Attivato Compute Engine, Fast Socket migliora le prestazioni NCCL a 100 Gbps delle reti riducendo il conflitto tra più connessioni TCP. Per ulteriori informazioni su come collaborare con NCCL, consulta Guida dell'utente di NCCL.

La valutazione corrente mostra che Fast Socket migliora la velocità effettiva di riduzione completa del 30-60%, a seconda delle dimensioni del messaggio.

Per configurare un ambiente Fast Socket, puoi utilizzare un Deep Learning VM Image in cui è preinstallato Fast Socket oppure di installare manualmente Fast Socket su una VM Linux. Per verificare se Fast Socket è consulta l'articolo Verificare l'attivazione di Fast Socket.

Prima di installare Fast Socket su una VM Linux, devi installare NCCL. Per istruzioni dettagliate, vedi Documentazione di NVIDIA NCCL.

CentOS/RHEL

Per scaricare e installare Fast Socket su una VM CentOS o RHEL, completa quanto segue passaggi:

  1. Aggiungi il repository dei pacchetti e importa le chiavi pubbliche.

    sudo tee /etc/yum.repos.d/google-fast-socket.repo << EOM
    [google-fast-socket]
    name=Fast Socket Transport for NCCL
    baseurl=https://packages.cloud.google.com/yum/repos/google-fast-socket
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
          https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOM
    
  2. Installare Fast Socket.

    sudo yum install google-fast-socket
    
  3. Verifica che Fast Socket sia abilitato.

SLES

Per scaricare e installare Fast Socket su una VM SLES, completa quanto segue passaggi:

  1. Aggiungi il repository di pacchetti.

    sudo zypper addrepo https://packages.cloud.google.com/yum/repos/google-fast-socket google-fast-socket
    
  2. Aggiungi le chiavi di repository.

    sudo rpm --import https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    
  3. Installare Fast Socket.

    sudo zypper install google-fast-socket
    
  4. Verifica che Fast Socket sia abilitato.

Debian/Ubuntu

Per scaricare e installare Fast Socket su una VM Debian o Ubuntu, completa la procedura seguente passaggi:

  1. Aggiungi il repository di pacchetti.

    echo "deb https://packages.cloud.google.com/apt google-fast-socket main" | sudo tee /etc/apt/sources.list.d/google-fast-socket.list
    
  2. Aggiungi le chiavi di repository.

    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    
  3. Installare Fast Socket.

    sudo apt update && sudo apt install google-fast-socket
    
  4. Verifica che Fast Socket sia abilitato.

È attiva la verifica dell'attivazione di Fast Socket

Completa i seguenti passaggi sulla tua VM:

  1. Individua la home directory del NCCL.

    sudo ldconfig -p | grep nccl

    Ad esempio, su un'immagine DLVM, ottieni il seguente output:

    libnccl.so.2 (libc6,x86-64) => /usr/local/nccl2/lib/libnccl.so.2
    libnccl.so (libc6,x86-64) => /usr/local/nccl2/lib/libnccl.so
    libnccl-net.so (libc6,x86-64) => /usr/local/nccl2/lib/libnccl-net.so

    Questo mostra che la home directory NCCL è /usr/local/nccl2.

  2. Verifica che NCCL carichi il plug-in Fast Socket. Per verificare, devi scarica il pacchetto di test NCCL. Per scaricare il pacchetto di test, esegui questo comando :

    git clone https://github.com/NVIDIA/nccl-tests.git && \
    cd nccl-tests && make NCCL_HOME=NCCL_HOME_DIRECTORY

    Sostituisci NCCL_HOME_DIRECTORY con la home directory NCCL.

  3. Dalla directory nccl-tests, esegui il processo all_reduce_perf:

    NCCL_DEBUG=INFO build/all_reduce_perf

    Se Fast Socket è abilitato, il messaggio FastSocket plugin initialized viene visualizzato nel log di output.

    # nThread 1 nGpus 1 minBytes 33554432 maxBytes 33554432 step: 1048576(bytes) warmup iters: 5 iters: 20 validation: 1
    #
    # Using devices
    #   Rank  0 Pid  63324 on fast-socket-gpu device  0 [0x00] Tesla V100-SXM2-16GB
    .....
    fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : Flow placement enabled.
    fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : queue skip: 0
    fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : Using [0]ens12:10.240.0.24
    fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket plugin initialized
    ......
    

Controllare la larghezza di banda della rete

Quando lavori con GPU con larghezza di banda elevata, puoi utilizzare uno strumento per il traffico di rete, come come iperf2, per misurare la larghezza di banda della rete.

Per controllare la velocità della larghezza di banda, sono necessarie almeno due VM collegate GPU ed entrambi possono supportare la velocità di larghezza di banda che stai testando.

Utilizza iPerf per eseguire il benchmark su sistemi basati su Debian.

  1. Creare due VM in grado di supportare le velocità di larghezza di banda richieste.

  2. Quando entrambe le VM sono in esecuzione, utilizza SSH per connetterti a una delle VM.

    gcloud compute ssh VM_NAME \
        --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della prima VM
    • PROJECT_ID: il tuo ID progetto
  3. Sulla prima VM, completa questi passaggi:

    1. Installa iperf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Ottieni l'indirizzo IP interno per questa VM. Tieni traccia scrivendolo.

      ip a
      
    3. Avvia il server iPerf.

      iperf -s
      

      Questo avvia un server di ascolto delle connessioni per eseguire benchmark. Lascia questa opzione in esecuzione per tutta la durata del test.

  4. Da un nuovo terminale client, connettiti alla seconda VM tramite SSH.

    gcloud compute ssh VM_NAME \
       --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della seconda VM
    • PROJECT_ID: il tuo ID progetto
  5. Sulla seconda VM, completa questi passaggi:

    1. Installa iPerf.

      sudo apt-get update && sudo apt-get install iperf
      
    2. Esegui il test iperf e specifica l'indirizzo IP della prima VM come destinazione.

      iperf -t 30 -c internal_ip_of_instance_1 -P 16
      

      Esegue un test di 30 secondi e produce un risultato simile a il seguente output. Se iPerf non riesce a raggiungere l'altra VM, potrebbe essere necessario regolare la rete impostazioni firewall sulle VM o magari nella console Google Cloud.

Quando utilizzi la larghezza di banda massima disponibile di 100 Gbps o 1000 Gbps (A3), tieni presente quanto segue:

  • A causa dell'overhead delle intestazioni per protocolli come Ethernet, IP e TCP sulla dello stack di virtualizzazione, la velocità effettiva, misurata da netperf, si satura a circa 90 Gbps o 800 Gbps (A3). Generalmente noto come goodput.

    TCP è in grado di raggiungere la velocità di rete di 100 o 1000 Gbps. Altri protocolli, come come UDP, sono più lenti.

  • A causa di fattori quali l'overhead del protocollo e la congestione della rete, le prestazioni dei flussi di dati potrebbero essere leggermente inferiori.

  • Devi utilizzare più flussi TCP per ottenere la larghezza di banda massima tra le istanze VM. Google consiglia da 4 a 16 stream. A 16 flussi per massimizzare la velocità effettiva. A seconda dell'applicazione stack software predefinito, potresti dover regolare le impostazioni dell'applicazione o per configurare più flussi.

Passaggi successivi