In questa pagina viene descritto come utilizzare gli acceleratori hardware NVIDIA Graphics Processing Unit (GPU) sulle istanze di macchine virtuali (VM) Container-Optimized OS.
Panoramica
Utilizzando Compute Engine, puoi creare istanze VM che eseguono Container-Optimized OS a cui sono collegate GPU. Quando esegui GPU su Compute Engine, puoi utilizzare solo due famiglie di macchine: ottimizzate per l'acceleratore e N1 per uso generico.
Per i tipi di macchine ottimizzati per l'acceleratore, a ogni tipo di macchina è collegato un modello specifico di GPU NVIDIA.
- Per i tipi di macchine ottimizzati per l'acceleratore A3, sono collegate GPU NVIDIA H100 da 80 GB.
- Per i tipi di macchine ottimizzati per l'acceleratore A2, sono collegate le GPU NVIDIA A100. Questi sono disponibili nelle opzioni A100 da 40 GB e A100 da 80 GB.
- Per i tipi di macchine ottimizzate per l'acceleratore G2, sono collegate GPU NVIDIA L4.
Per i tipi di macchine per uso generico N1, puoi collegare le seguenti GPU:
Le GPU forniscono potenza di calcolo per 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 delle immagini.
Google Cloud offre un'esperienza senza interruzioni per l'esecuzione dei carichi di lavoro GPU all'interno di container su istanze VM di Container-Optimized OS, in modo da poter usufruire dei vantaggi di altre funzionalità di Container-Optimized OS, come sicurezza e affidabilità.
Per ulteriori informazioni sui casi d'uso per le GPU, consulta GPU Cloud.
Per ulteriori informazioni sull'utilizzo delle GPU su Google Kubernetes Engine (GKE), consulta Esecuzione di GPU su GKE.
Requisiti
L'esecuzione di GPU su istanze VM di Container-Optimized OS prevede i seguenti requisiti:
Immagini x86 di Container-Optimized OS: solo le immagini Container-Optimized OS basate su x86 supportano le GPU in esecuzione. Le immagini Container-Optimized OS basate su ARM non supportano la funzionalità.
Versione di Container-Optimized OS: per eseguire GPU su istanze VM di Container-Optimized OS, il traguardo di rilascio di Container-Optimized OS deve essere un traguardo LTS e il numero di traguardo deve essere 85 o superiore.
Quota GPU: devi avere una quota GPU di Compute Engine nella zona scelta per poter creare istanze VM di Container-Optimized OS con GPU. Per assicurarti di disporre di una quota GPU sufficiente nel progetto, consulta Quote nella console Google Cloud.
Se hai bisogno di un'ulteriore quota GPU, devi richiedere una quota GPU nella console Google Cloud. Se hai un account di fatturazione già stabilito, il progetto riceve automaticamente la quota GPU dopo che invii la richiesta di quota.
Driver GPU NVIDIA: devi installare i driver GPU NVIDIA in autonomia sulle tue istanze VM di Container-Optimized OS. Questa sezione illustra come installare i driver sulle istanze VM di Container-Optimized OS.
Crea una VM
Le sezioni seguenti spiegano come eseguire GPU su VM di Container-Optimized OS.
Innanzitutto, hai bisogno di un'istanza VM di Container-Optimized OS con GPU. Il metodo utilizzato per creare una VM dipende dal modello GPU selezionato.
- Per creare una VM Container-Optimized OS con GPU NVIDIA H100, A100 o L4, consulta Creare una VM ottimizzata per l'acceleratore.
- Per creare una VM di Container-Optimized OS con GPU NVIDIA T4, P4, P100 o V100, consulta Creare una VM N1 con GPU collegate.
Puoi anche aggiungere GPU alle istanze VM esistenti di Container-Optimized OS.
Quando crei le VM, ricordati di scegliere immagini o famiglie di immagini dal progetto di immagini cos-cloud
.
Per verificare tutte le GPU collegate alle istanze VM attuali di Container-Optimized OS, esegui questo comando:
gcloud compute instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --zone ZONE \ --format="value(guestAccelerators)"
Sostituisci quanto segue:
INSTANCE_NAME
: il nome della nuova istanza VM.PROJECT_ID
: l'ID del progetto.zone
: la zona per l'istanza VM.
Installa i driver di dispositivo GPU NVIDIA
Dopo aver creato un'istanza con una o più GPU, il sistema richiede i driver di dispositivo per consentire alle applicazioni di accedere al dispositivo. Questa guida mostra i modi per installare i driver proprietari NVIDIA su istanze VM di Container-Optimized OS.
Container-Optimized OS fornisce un'utilità integrata cos-extensions
per
semplificare il processo di installazione dei driver NVIDIA. Eseguendo l'utilità, gli utenti accettano
il contratto di licenza NVIDIA.
Identifica le versioni dei driver GPU
Ogni versione dell'immagine Container-Optimized OS ha una versione del driver GPU NVIDIA supportata predefinita. Consulta le note di rilascio dei principali traguardi LTS di Container-Optimized OS per conoscere la versione predefinita supportata.
Puoi anche controllare tutte le versioni del driver GPU supportate eseguendo questo comando sull'istanza VM di Container-Optimized OS:
sudo cos-extensions list
Identificare la versione richiesta del toolkit CUDA
Se le tue applicazioni utilizzano CUDA, installa il toolkit CUDA di NVIDIA nei tuoi container. Ogni versione di CUDA richiede una versione minima del driver GPU o una versione successiva. Per verificare la versione minima del driver GPU richiesta per la tua versione di CUDA, consulta Versioni del toolkit CUDA e dei driver compatibili. Assicurati che la versione di Container-Optimized OS che stai utilizzando abbia la versione del driver GPU corretta per la versione di CUDA in uso.
Installa il driver
Puoi installare le GPU utilizzando i comandi della shell, gli script di avvio o cloud-init. Tutti e tre i metodi utilizzano il comando sudo cos-extensions install gpu
per installare il driver GPU predefinito per la versione LTS di Container-Optimized OS.
Shell
Dopo aver connesso alle tue istanze VM di Container-Optimized OS, puoi eseguire manualmente il seguente comando per installare i driver:
sudo cos-extensions install gpu
Script di avvio
Puoi installare i driver GPU anche tramite gli script di avvio. Puoi fornire lo script di avvio quando crei le istanze VM o applicare lo script alle istanze VM in esecuzione e quindi riavviare le VM. In questo modo puoi installare i driver senza connetterti alle VM. Inoltre, assicura che i driver GPU siano configurati a ogni riavvio della VM.
Di seguito è riportato un esempio di script di avvio per installare i driver:
#! /bin/bash
sudo cos-extensions install gpu
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 ulteriori dettagli, consulta la sezione End-to-end: esecuzione di un'applicazione GPU su Container-Optimized OS.
Per ulteriori informazioni su come utilizzare cloud-init sulle istanze VM di Container-Optimized OS, consulta la pagina Creazione e configurazione di istanze.
In alcuni casi, il driver predefinito incluso in Container-Optimized OS non soddisfa i requisiti minimi dei driver del toolkit CUDA o del modello GPU. Consulta la pagina Versioni del driver NVIDIA richieste per i requisiti di versione per tipi specifici di GPU.
Per installare una versione specifica del driver GPU, esegui questo comando:
sudo cos-extensions install gpu -- -version=DRIVER_VERSION
Sostituisci DRIVER_VERSION
con una delle seguenti
opzioni:
default
: installa il driver predefinito designato dalla release Container-Optimized OS. Questa versione riceve correzioni di bug e aggiornamenti della sicurezza.latest
: installa il driver più recente disponibile nella release di Container-Optimized OS. Tieni presente che ciò potrebbe introdurre modifiche alla compatibilità dovute a potenziali aggiornamenti principali della versione nelle release di COS.- La versione completa: utilizza questa opzione per bloccare una versione specifica per i carichi di lavoro sensibili alle modifiche del driver. Ad esempio, specifica la versione
535.183.01
. - Ramo driver NVIDIA: installa il driver stabile più recente in un ramo NVIDIA specifico per rimanere al passo con gli aggiornamenti della sicurezza e le correzioni di bug all'interno del ramo. Ad esempio, specifica il ramo
R535
. Questa opzione è disponibile a partire dacos-gpu-installer:v2.2.1
.
Per visualizzare le versioni disponibili per ciascuna di queste opzioni, esegui il comando Identifica le versioni dei driver GPU.
Verifica l'installazione
Puoi eseguire i comandi seguenti sulle tue istanze VM di Container-Optimized OS per verificare manualmente l'installazione dei driver GPU. L'output del comando mostra le informazioni dei dispositivi GPU, come 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
Configura i container per il consumo di GPU
Dopo aver installato i driver GPU, puoi configurare i container in modo che utilizzino le GPU. L'esempio seguente mostra come eseguire un'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 tramite cloud-init per specificare la dipendenza tra l'installazione del driver e i container. Per ulteriori dettagli, consulta la sezione End-to-end: esecuzione di un'applicazione GPU su Container-Optimized OS.
End-to-end: esecuzione di un'applicazione GPU in Container-Optimized OS
Il seguente esempio end-to-end mostra come utilizzare cloud-init per configurare le istanze VM di Container-Optimized OS che eseguono il provisioning di un container di applicazioni 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 NVIDIA CUDA-X
CUDA® è la piattaforma di computing parallelo e il modello di programmazione per GPU di NVIDIA. Per utilizzare le applicazioni CUDA, le librerie devono essere presenti nell'immagine che stai utilizzando. Per aggiungere le librerie NVIDIA CUDA-X, puoi effettuare una delle seguenti operazioni:
Utilizza un'immagine con le librerie NVIDIA CUDA-X preinstallate. Ad esempio, puoi utilizzare i container di deep learning di Google. In questi container vengono preinstallati i framework principali di data science, le librerie CUDA-X e gli strumenti NVIDIA. In alternativa, l'immagine CUDA di NVIDIA contiene solo le librerie NVIDIA CUDA-X.
Crea e utilizza la tua immagine. In questo caso, includi
/usr/local/cuda-XX.X/lib64
, che contiene le librerie NVIDIA CUDA-X, e/usr/local/nvidia/lib64
, che contiene i driver di dispositivo NVIDIA, nella variabile di ambienteLD_LIBRARY_PATH
. Per/usr/local/cuda-XX.X/lib64
, il nome della directory dipende dalla versione dell'immagine utilizzata. Ad esempio, le librerie NVIDIA CUDA-X e le utilità di debug nei container Docker possono trovarsi rispettivamente a/usr/local/cuda-11.0/lib64
e/usr/local/nvidia/bin
.
Sicurezza
Proprio come gli altri moduli kernel in Container-Optimized OS, i driver GPU sono firmati in modo crittografico e verificati tramite chiavi incorporate nel kernel di Container-Optimized OS. A differenza di altre distribuzioni, Container-Optimized OS non consente agli utenti di registrare la propria chiave proprietario della macchina (MOK) e di utilizzare le chiavi per firmare moduli kernel personalizzati. Questo serve a garantire l'integrità del kernel di Container-Optimized OS e ridurre la superficie di attacco.
Limitazioni
Limitazioni delle versioni di Container-Optimized OS
Solo il traguardo della release 85 di Container-Optimized OS LTS supporta l'utilità cos-extensions
menzionata nella sezione Installazione dei driver di dispositivi GPU NVIDIA. Per i traguardi di rilascio precedenti di Container-Optimized OS, utilizza lo strumento open source cos-gpu-installer
per installare manualmente i driver GPU.
Restrizioni relative alle istanze VM
Le istanze VM con GPU hanno restrizioni specifiche che le comportano in modo diverso da altri tipi di istanze. Per ulteriori informazioni, consulta la pagina Restrizioni delle GPU di Compute Engine.
Quota e disponibilità
Le GPU sono disponibili in regioni e zone specifiche. Quando richiedi la quota GPU, considera le regioni in cui intendi eseguire le istanze VM di Container-Optimized OS.
Per un elenco completo delle regioni e delle zone applicabili, consulta 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 delle GPU, consulta la pagina dei prezzi di Compute Engine.
Supportabilità
Ogni versione di rilascio di Container-Optimized OS ha almeno una versione del driver GPU NVIDIA supportata. Il team di Container-Optimized OS qualifica i driver GPU supportati in base alla versione di Container-Optimized OS prima del rilascio per assicurarsi 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 Container-Optimized OS e la sequenza temporale di idoneità non è garantita.
Quando il team Container-Optimized OS rilascia una nuova versione in occasione di un traguardo di rilascio, proviamo a supportare la versione più recente del driver GPU nel ramo del driver corrispondente. Questo serve a correggere il prima possibile le CVE scoperte nei driver GPU.
Se un cliente Container-Optimized OS identifica un problema relativo ai driver GPU NVIDIA, deve collaborare direttamente con NVIDIA per l'assistenza. Se il problema non è specifico del driver, gli utenti possono aprire una richiesta all'assistenza clienti Google Cloud.
Passaggi successivi
- Scopri di più sull'esecuzione di container su un'istanza VM di Container-Optimized OS.
- Scopri di più sulle GPU su Compute Engine.
- Scopri di più sulla richiesta di quota GPU.