Esecuzione di istanze con acceleratori GPU

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina descrive come utilizzare gli acceleratori hardware NVIDIA (Graphics Processing Unit) sulle istanze VM (Container-Optimized OS) delle macchine virtuali.

Panoramica

Su Compute Engine, puoi creare istanze VM con sistema operativo ottimizzato per i container dotate di GPU NVIDIA Tesla K80, P100, P4, V100 e T4. Le GPU forniscono la potenza di calcolo per guidare attività di deep learning come il riconoscimento delle immagini e l'elaborazione del linguaggio naturale, nonché altre attività ad alta intensità di calcolo, come la transcodifica video e l'elaborazione di immagini.

Google offre agli utenti un'esperienza fluida per eseguire i carichi di lavoro GPU all'interno dei container Docker nelle istanze VM del sistema operativo ottimizzato per i container, in modo che gli utenti possano trarre vantaggio da altre funzionalità del sistema operativo ottimizzate per i container come sicurezza e affidabilità.

Per saperne di più sui casi d'uso delle GPU, consulta l'articolo Cloud GPU.

Per saperne di più sull'utilizzo di GPU su Google Kubernetes Engine (GKE), vedi Esecuzione di GPU su GKE.

Requisiti

L'esecuzione di GPU su istanze VM di Container-Optimized OS prevede i seguenti requisiti:

  • Immagini OS x86 ottimizzate per i container: solo le immagini Container-Optimized OS basate su x86 supportano le GPU in esecuzione. Le immagini OS ottimizzate per i container non supportano la funzionalità.

  • Versione del sistema operativo ottimizzato per i container: per eseguire le GPU su istanze VM di Container-Optimized OS, il punto di rilascio del sistema operativo ottimizzato per i container deve essere un traguardo LTS e il numero di versione deve essere 85 o superiore.

  • Quota GPU: devi avere la quota GPU di Compute Engine nella zona desiderata prima di poter creare istanze VM con sistema operativo ottimizzato per i container con GPU. Per assicurarti di avere una quota GPU sufficiente nel tuo progetto, consulta Quote nella console Google Cloud.

    Se hai bisogno di una quota GPU aggiuntiva, devi richiedere la quota GPU nella console Google Cloud. Se hai un account di fatturazione stabilito, il tuo progetto riceve automaticamente la quota GPU dopo aver inviato la richiesta di quota.

  • Driver GPU NVIDIA: devi installare autonomamente i driver GPU NVIDIA sulle tue istanze VM con sistema operativo ottimizzato per i container. Questa sezione spiega come installare i driver nelle istanze VM di Container-Optimized OS.

Guida introduttiva: esecuzione di GPU su Container-Optimized OS

Le seguenti sezioni spiegano come eseguire GPU su istanze VM con sistema operativo ottimizzato per i container.

Innanzitutto, devi avere un'istanza VM del sistema operativo ottimizzata per i container con GPU. Puoi creare un'istanza VM del sistema operativo ottimizzata per i container con una GPU o aggiungere GPU a un'istanza VM del sistema operativo ottimizzata per i container esistente. Quando crei istanze VM, ricorda di scegliere immagini o famiglie di immagini dal progetto immagine cos-cloud.

Per controllare tutte le GPU collegate alle istanze VM del sistema operativo ottimizzate per i container attuali, esegui il comando seguente:

gcloud compute instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --zone ZONE \
    --format="value(guestAccelerators)"

Sostituisci quanto segue:

Installazione dei driver per dispositivi GPU NVIDIA

Dopo aver creato un'istanza con una o più GPU, il sistema richiede i driver di dispositivo in modo che le applicazioni possano accedervi. Questa guida mostra i modi per installare i driver proprietari NVIDIA sulle istanze VM di un sistema operativo ottimizzato per i container.

Container-Optimized OS offre un'utilità integrata cos-extensions per semplificare il processo di installazione del driver NVIDIA. Eseguendo l'utilità, gli utenti accettano di accettare il contratto di licenza NVIDIA.

Identificazione della versione del driver della GPU

Ogni versione dell'immagine del sistema operativo ottimizzata per i container ha una versione predefinita del driver GPU NVIDIA supportato. Consulta le note di rilascio dei principali obiettivi LTS del sistema operativo ottimizzato per la versione predefinita supportata.

Puoi anche controllare tutte le versioni dei driver GPU supportati eseguendo il comando seguente sull'istanza VM del sistema operativo ottimizzato per i container:

sudo cos-extensions list

Installazione del toolkit CUDA

Se le tue applicazioni utilizzano CUDA, installa il toolkit CUDA di NVIDIA nei tuoi container Docker. Ogni versione di CUDA richiede una versione minima del driver GPU o una versione successiva. Per controllare la versione minima del driver della GPU richiesta per la tua versione di CUDA, consulta il toolkit CUDA e le versioni dei driver compatibili. Assicurati che la versione del sistema operativo ottimizzata per i container che utilizzi sia quella corretta del driver GPU per la versione di CUDA che utilizzi.

Installazione dei driver tramite comandi shell

Dopo aver effettuato la connessione alle istanze VM di Container-Optimized OS, puoi eseguire manualmente il seguente comando per installare i driver:

sudo cos-extensions install gpu

Installazione dei driver tramite script di avvio

Puoi anche installare i driver GPU tramite gli script di avvio. Puoi fornire lo script di avvio quando crei istanze VM o applicare lo script alle istanze VM in esecuzione, quindi riavviare le VM. Ciò consente di installare i driver senza connettersi alle VM. Assicurati inoltre che i driver GPU siano configurati a ogni riavvio della VM.

Di seguito è riportato uno script di avvio di esempio per installare i driver:

#! /bin/bash

sudo cos-extensions install gpu

Installazione dei driver tramite cloud-init

Cloud-init è simile agli script di avvio, ma è più potente. L'esempio seguente mostra come installare il driver GPU tramite cloud-init:

#cloud-config

runcmd:
  - cos-extensions install gpu

L'utilizzo di cloud-init consente di specificare le dipendenze in modo che le applicazioni GPU vengano eseguite solo dopo l'installazione del driver. Per maggiori dettagli, consulta la sezione End-to-end: Running a GPU application on Container-Optimized OS.

Per ulteriori informazioni su come utilizzare cloud-init nelle istanze VM del sistema operativo ottimizzato per i container, consulta la pagina Creazione e configurazione delle istanze.

Verifica dell'installazione in corso...

Puoi eseguire i comandi seguenti sulle istanze VM del sistema operativo ottimizzato per i container per verificare manualmente l'installazione dei driver GPU. L'output del comando mostra le informazioni sui dispositivi GPU, ad esempio lo stato e la versione del driver.

# Make the driver installation path executable by re-mounting it.
sudo mount --bind /var/lib/nvidia /var/lib/nvidia
sudo mount -o remount,exec /var/lib/nvidia
/var/lib/nvidia/bin/nvidia-smi

Configurazione di container Docker per consumare GPU

Dopo aver installato i driver GPU, puoi configurare i container Docker affinché utilizzino le GPU. L'esempio seguente mostra come eseguire una semplice applicazione CUDA in un container Docker che utilizza /dev/nvidia0:

docker run \
  --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \
  --volume /var/lib/nvidia/bin:/usr/local/nvidia/bin \
  --device /dev/nvidia0:/dev/nvidia0 \
  --device /dev/nvidia-uvm:/dev/nvidia-uvm \
  --device /dev/nvidiactl:/dev/nvidiactl \
  gcr.io/google_containers/cuda-vector-add:v0.1

Puoi eseguire i container Docker mediante cloud-init per specificare la dipendenza tra l'installazione del driver e i container Docker. Per ulteriori dettagli, consulta la sezione End-to-end: Running a GPU application on Container-Optimized OS.

End-to-end: esecuzione di un'applicazione GPU su Container-Optimized OS

L'esempio end-to-end di seguito mostra come utilizzare cloud-init per configurare le istanze VM del sistema operativo ottimizzato per i container che eseguono il provisioning di un container dell'applicazione GPU myapp:latest dopo l'installazione del driver GPU:

#cloud-config

users:
- name: myuser
  uid: 2000

write_files:
  - path: /etc/systemd/system/install-gpu.service
    permissions: 0644
    owner: root
    content: |
      [Unit]
      Description=Install GPU drivers
      Wants=gcr-online.target docker.socket
      After=gcr-online.target docker.socket

      [Service]
      User=root
      Type=oneshot
      ExecStart=cos-extensions install gpu
      StandardOutput=journal+console
      StandardError=journal+console
  - path: /etc/systemd/system/myapp.service
    permissions: 0644
    owner: root
    content: |
      [Unit]
      Description=Run a myapp GPU application container
      Requires=install-gpu.service
      After=install-gpu.service

      [Service]
      User=root
      Type=oneshot
      RemainAfterExit=true
      ExecStart=/usr/bin/docker run --rm -u 2000 --name=myapp --device /dev/nvidia0:/dev/nvidia0 myapp:latest
      StandardOutput=journal+console
      StandardError=journal+console

runcmd:
  - systemctl daemon-reload
  - systemctl start install-gpu.service
  - systemctl start myapp.service

Informazioni sulle librerie CUDA

I driver di dispositivo NVIDIA che installi sulle istanze VM del sistema operativo ottimizzato per i container includono le librerie CUDA.

L'esempio precedente mostra anche come montare le librerie CUDA ed eseguire il debug delle utilità nei container Docker rispettivamente a /usr/local/nvidia/lib64 e /usr/local/nvidia/bin.

Le applicazioni CUDA in container Docker che utilizzano GPU NVIDIA devono rilevare dinamicamente le librerie CUDA. È necessario includere /usr/local/nvidia/lib64 nella variabile di ambiente LD_LIBRARY_PATH.

Utilizza le immagini di base CUDA basate su Ubuntu per le applicazioni CUDA su Container-Optimized OS, dove LD_LIBRARY_PATH è già impostato correttamente.

Compatibilità GPU K80

I driver NVIDIA R470 sono l'ultima famiglia di driver che supporta la GPU K80. Se deve essere installata una versione successiva in un'istanza con GPU K80, cos-gpu-installer:v2 (a partire dalla versione 2.0.26) richiamato da cos-extensions utilizzerà automaticamente una versione R470 disponibile.

Sicurezza

Proprio come gli altri moduli del kernel nel sistema operativo ottimizzato per i container, i driver GPU vengono firmati e verificati mediante la crittografia da chiavi integrate nel kernel del sistema operativo ottimizzato per i container. A differenza di alcune altre distribuzioni, Container-Optimized OS non consente agli utenti di registrare la propria chiave proprietario della macchina (MOK) e utilizzare le chiavi per firmare i moduli kernel personalizzati. Questo serve a garantire l'integrità del kernel del sistema operativo ottimizzato per i container e a ridurre la superficie di attacco.

Limitazioni

Limitazioni delle versioni del sistema operativo ottimizzate per i container

Solo la versione 85 della versione LTS del sistema operativo ottimizzata per i container supporta la versione 8 e successive dell'utilità cos-extensions citata nella sezione Installazione dei driver di dispositivo GPU NVIDIA. Per i precedenti punti di rilascio del sistema operativo ottimizzato per i container, utilizza lo strumento open source cos-gpu-installer per installare manualmente i driver GPU.

Limitazioni delle istanze VM

Le istanze VM con GPU hanno restrizioni specifiche che le fanno funzionare in modo diverso rispetto agli altri tipi di istanze. Per ulteriori informazioni, consulta la pagina Restrizioni delle GPU di Compute Engine.

Quota e disponibilità

Le GPU sono disponibili in aree geografiche e zone specifiche. Quando richiedi la quota GPU, considera le regioni in cui intendi eseguire le istanze VM del sistema operativo ottimizzato per i container.

Per un elenco completo delle aree geografiche e delle zone applicabili, consulta l'articolo sulle GPU su Compute Engine. Puoi anche visualizzare le GPU disponibili nella tua zona utilizzando Google Cloud CLI.

gcloud compute accelerator-types list

Prezzi

Per informazioni sui prezzi della GPU, consulta la pagina relativa ai prezzi di Compute Engine.

Supportabilità

Ogni versione di release del sistema operativo ottimizzato per i container include almeno una versione del driver GPU NVIDIA supportata. Il team del sistema operativo ottimizzato per i container confronta i driver GPU supportati con la versione del sistema operativo ottimizzato per i container prima del rilascio, per garantire che siano compatibili. Di tanto in tanto potrebbero essere rese disponibili nuove versioni dei driver GPU NVIDIA. Alcune versioni del driver GPU non sono idonee per il sistema operativo ottimizzato per i container e la tempistica della qualifica non è garantita.

Quando il team di un sistema operativo ottimizzato per i container rilascia una nuova versione su un livello di rilascio, cerchiamo di supportare l'ultima versione del driver GPU nel ramo di driver corrispondente. Ciò serve a correggere i CVE rilevati nei driver GPU il prima possibile.

Se un cliente di un sistema operativo ottimizzato per i container identifica un problema relativo ai driver GPU NVIDIA, deve contattarlo direttamente per ricevere assistenza. Se il problema non riguarda specificamente il conducente, gli utenti possono aprire una richiesta con l'assistenza clienti Google Cloud.

Passaggi successivi