Questa pagina descrive come utilizzare l'hardware GPU NVIDIA acceleratori su istanze di macchine virtuali (VM) Container-Optimized OS.
Panoramica
Con Compute Engine puoi creare istanze VM che eseguono un sistema operativo ottimizzato per i container con GPU collegate. Puoi utilizzare solo due di macchine per l'esecuzione di GPU su Compute Engine: ottimizzate per l'acceleratore e N1 per uso generico.
Per i tipi di macchina ottimizzati per l'acceleratore, ogni tipo di macchina ha una specifica di GPU NVIDIA collegate.
- 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 GPU NVIDIA A100. Questi sono disponibili nelle opzioni A100 da 40 GB e A100 da 80 GB.
- Per i tipi di macchine ottimizzati 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 come transcodifica video ed elaborazione di immagini.
Google Cloud fornisce un'esperienza senza interruzioni per l'esecuzione dei carichi di lavoro GPU all'interno dei container sulle istanze VM di Container-Optimized OS, puoi trarre vantaggio da altre funzionalità di Container-Optimized OS, come sicurezza e affidabilità.
Per ulteriori informazioni sui casi d'uso per le GPU, consulta GPU Cloud.
Per 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 quanto segue requisiti:
Immagini x86 di Container-Optimized OS: solo sistemi operativi ottimizzati per container basati su x86 che supportano le GPU. Le immagini Container-Optimized OS basate su ARM supportano la funzionalità.
Versione di Container-Optimized OS: per eseguire GPU su una VM Container-Optimized OS di Compute Engine, 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 prima di poter creare una VM Container-Optimized OS con GPU. Per assicurarti di disporre di una quota GPU sufficiente nel tuo progetto, consulta Quote nella console Google Cloud.
Se hai bisogno di una quota GPU aggiuntiva, devi richiedi la quota GPU nella console Google Cloud. Se disponi di un account di fatturazione già stabilito, il progetto riceve automaticamente Quota GPU dopo l'invio della richiesta di quota.
Driver GPU NVIDIA: devi installare i driver GPU NVIDIA in autonomia delle istanze VM di Container-Optimized OS. Questa sezione spiega come installare i driver sulla VM Container-Optimized OS di Compute Engine.
Crea una VM
Le sezioni seguenti spiegano come eseguire GPU su Container-Optimized OS delle VM in esecuzione.
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 con sistema operativo ottimizzato per i container con GPU NVIDIA H100, A100 o L4 collegate, consulta Creare una VM ottimizzata per l'acceleratore.
- Per creare una VM Container-Optimized OS a cui è collegata NVIDIA T4, P4: per le GPU P100, o V100, consulta Crea una VM N1 con GPU collegate.
Puoi anche aggiungere GPU alle istanze VM di Container-Optimized OS esistenti.
Quando crei le VM, ricordati di scegliere immagini o famiglie di immagini da
il progetto immagine cos-cloud
.
Per controllare tutte le GPU collegate alla VM attuale 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 per consentire alle applicazioni di accedere al dispositivo. Questa guida illustra le modi per installare i driver proprietari NVIDIA sulla VM Container-Optimized OS di Compute Engine.
Container-Optimized OS offre un'utilità integrata cos-extensions
per
semplificare il processo di installazione dei driver NVIDIA. Eseguendo l'utilità, gli utenti
accetta di accettare il contratto di licenza NVIDIA.
Identifica le versioni dei driver GPU
Ogni versione dell'immagine di Container-Optimized OS ha un elenco di Versioni del driver GPU NVIDIA per ciascun tipo di GPU, oltre a un driver predefinito per per ogni tipo. Per un elenco completo delle versioni supportate, consulta le note di rilascio della i principali traguardi LTS di Container-Optimized OS.
535.183.01
Puoi anche controllare tutte le versioni dei driver GPU supportate dalla GPU sul tuo Istanza VM di Container-Optimized OS eseguendo questo comando:
sudo cos-extensions list
Identifica la versione richiesta del toolkit CUDA
Se le tue applicazioni utilizzano CUDA, installare 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 il minimo La versione del driver GPU richiesta per la tua versione di CUDA; consulta CUDA Toolkit e versioni di driver compatibili. Assicurati che la versione di Container-Optimized OS che stai utilizzando disponga della 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
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 connetterti 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 anche installare i driver GPU tramite script di avvio. Puoi fornisci lo script di avvio quando crei istanze VM applica lo script alle istanze VM in esecuzione e poi riavvia le VM. In questo modo puoi installare i driver senza collegarti alle VM. Inoltre assicura che i driver GPU siano configurati su 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. Le seguenti un esempio mostra come installare il driver GPU tramite cloud-init:
#cloud-config
runcmd:
- cos-extensions install gpu
Utilizzando cloud-init puoi specificare le dipendenze in modo che la GPU vengono eseguite solo dopo l'installazione del driver. Consulta le End-to-end: esecuzione di un'applicazione GPU in Container-Optimized OS per ulteriori dettagli.
Per ulteriori informazioni su come utilizzare cloud-init sulla VM Container-Optimized OS vedere le istanze di Compute Engine, 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 modello GPU. Consulta le versioni obbligatorie dei driver NVIDIA per i requisiti delle versioni 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 uno dei seguenti
opzioni:
default
: installa il driver predefinito designato dal Release di Container-Optimized OS. Questa versione riceve correzioni di bug e aggiornamenti della sicurezza.latest
: installa il driver più recente disponibile nella release del sistema operativo ottimizzato per i container. Tieni presente che ciò potrebbe introdurre modifiche di compatibilità dovute a potenziali aggiornamenti principali della versione in COS release.- La versione completa: utilizza questa opzione per bloccare una versione specifica per i carichi di lavoro
sensibili alle modifiche del conducente. Ad esempio, specifica la versione
535.183.01
. - Branch del driver NVIDIA: installa il driver stabile più recente in un branch NVIDIA specifico per rimanere al passo con gli aggiornamenti della sicurezza e le correzioni di bug all'interno di quel branch. Ad esempio, specifica il ramo
R535
. Questa opzione è disponibile a partire dal giornocos-gpu-installer:v2.2.1
.
Per vedere le versioni disponibili per ciascuna di queste opzioni, esegui il comando Identifica le versioni dei driver GPU.
Verificare l'installazione
Puoi eseguire i comandi seguenti sulla VM Container-Optimized OS per verificare manualmente l'installazione dei driver GPU. L'output dal comando mostra le informazioni dei dispositivi GPU, come 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
e consumano GPU. L'esempio seguente mostra come eseguire un 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. vedi il End-to-end: esecuzione di un'applicazione GPU in Container-Optimized OS per ulteriori dettagli.
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
Istanze VM di Container-Optimized OS che eseguono il provisioning di un'applicazione GPU
container 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® è il chip di NVIDIA la piattaforma di computing parallela e il modello di programmazione per GPU. Per utilizzare CUDA applicazioni, le librerie devono essere presenti dell'immagine che stai utilizzando. Per aggiungere l'interfaccia NVIDIA, puoi eseguire una delle operazioni seguenti Librerie CUDA-X:
Utilizza un'immagine con le librerie NVIDIA CUDA-X preinstallate. Ad esempio, è possibile usare I container di deep learning di Google. Questi container preinstallano i framework chiave di data science, NVIDIA CUDA-X librerie e strumenti. 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 dispositivi NVIDIA, in la 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 ed eseguono il debug le utilità necessarie nei container Docker possono trovarsi in/usr/local/cuda-11.0/lib64
rispettivamente/usr/local/nvidia/bin
.
Sicurezza
Come gli altri moduli kernel in Container-Optimized OS, i driver GPU firmate e verificate tramite crittografia mediante chiavi integrate Kernel Container-Optimized OS. A differenza di altre distribuzioni, Container-Optimized OS non consente agli utenti di registrare il proprio proprietario di macchina (MOK) e utilizza le chiavi per firmare moduli kernel personalizzati. Questo serve a garantire che integrità del kernel Container-Optimized OS e ridurre l'attacco superficie.
Limitazioni
Restrizioni relative alle versioni di Container-Optimized OS
Solo il traguardo della release 85 di Container-Optimized OS LTS e versioni successive supporta
Utilità cos-extensions
menzionata nella sezione Installazione dei driver di dispositivi GPU NVIDIA
. Per i traguardi di release precedenti di Container-Optimized OS, utilizza lo strumento open source cos-gpu-installer
per installare manualmente i driver della GPU.
Restrizioni relative alle istanze VM
Le istanze VM con GPU hanno limitazioni specifiche che le comportano in modo diverso rispetto ad altri tipi di istanze. Per ulteriori informazioni, consulta Pagina Restrizioni delle GPU di Compute Engine.
Quota e disponibilità
Le GPU sono disponibili in regioni e zone specifiche. Quando richiedi una quota GPU, prendi in considerazione 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 release di Container-Optimized OS ha almeno una versione del driver GPU NVIDIA supportata. La Il team Container-Optimized OS qualifica i driver GPU supportati la versione di Container-Optimized OS prima del rilascio, per assicurarti compatibili. Di volta in volta potrebbero essere rese disponibili nuove versioni dei driver GPU NVIDIA. Alcune versioni del driver GPU non sono idonee per Container-Optimized OS e le tempistiche di idoneità non sono garantite.
Quando il team Container-Optimized OS rilascia una nuova versione su traguardo di rilascio cerchiamo di supportare l'ultima versione del driver GPU del conducente. Questo serve a correggere il prima possibile le CVE scoperte nei driver GPU.
Se un cliente Container-Optimized OS identifica un problema relativo a con i driver GPU NVIDIA, il cliente 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ù su come eseguire i contenitori su un'istanza VM Container-Optimized OS.
- Scopri di più sulle GPU su Compute Engine.
- Scopri di più sulla richiesta di quota GPU.