Questo documento spiega come creare ed eseguire un job che utilizza una GPU (Graphics Processing Unit). Per scoprire di più sulle funzionalità e sulle limitazioni delle GPU, consulta Informazioni sulle GPU nella documentazione di Compute Engine.
Quando crei un job batch, puoi facoltativamente utilizzare le GPU per accelerare carichi di lavoro specifici. I casi d'uso comuni per i job che utilizzano le GPU includono elaborazione di dati intensivi e carichi di lavoro di intelligenza artificiale (AI) come il machine learning (ML).
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la guida introduttiva all'utilizzo di Batch e attivalo completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Batch Job Editor (
roles/batch.jobsEditor
) nel progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Batch Job Editor (
Creare un job che utilizza le GPU
Per creare un job che utilizza le GPU:
- Pianifica i requisiti per un job che utilizza le GPU.
- Crea un job con i requisiti e i metodi che hai identificato. Per esempi su come creare un job utilizzando le opzioni consigliate, consulta Creare un job di esempio che utilizza le GPU in questo documento.
Pianificare i requisiti per un job che utilizza le GPU
Prima di creare un job che utilizza le GPU, pianifica i relativi requisiti come spiegato nelle sezioni seguenti:
- Seleziona il tipo di macchina GPU e il metodo di provisioning
- Installa i driver della GPU
- Definire le risorse VM compatibili
Passaggio 1: seleziona il tipo di macchina GPU e il metodo di provisioning
I requisiti di un job variano in base al tipo di macchina GPU e al metodo di provisioning preferiti e le opzioni per ciascuno potrebbero essere interdipendenti. In base ai tuoi requisiti e alle tue priorità, puoi selezionare prima il tipo di macchina GPU o prima il metodo di provisioning. In genere, il tipo di macchina GPU influisce principalmente sulle prestazioni e sui prezzi base, mentre il metodo di provisioning influisce principalmente sulla disponibilità delle risorse e su costi o sconti aggiuntivi.
Seleziona il tipo di macchina GPU
I tipi di macchine GPU disponibili (le combinazioni valide di tipo di GPU, numero di GPU e tipo di macchina (vCPU e memoria)) e i relativi casi d'uso sono elencati nella pagina Tipi di macchine GPU della documentazione di Compute Engine.
I campi richiesti per un job per specificare un tipo di macchina GPU variano in base alle categorie riportate nella tabella seguente:
Tipi di macchine GPU e relativi requisiti dei job | |
---|---|
GPU per VM ottimizzate per l'acceleratore: le VM con un tipo di macchina della famiglia di macchine ottimizzate per l'acceleratore hanno un tipo e un numero specifici di queste GPU collegate automaticamente. |
Per utilizzare le GPU per le VM ottimizzate per l'acceleratore, ti consigliamo di specificare il tipo di macchina. Ogni tipo di macchina ottimizzato per l'acceleratore supporta solo un tipo e un numero specifico di GPU, pertanto è funzionalmente equivalente se specifichi o meno questi valori oltre al tipo di macchina ottimizzato per l'acceleratore. Nello specifico, Batch supporta anche la specifica solo del tipo e del numero di GPU per le VM ottimizzate per l'acceleratore, ma le opzioni di vCPU e memoria risultanti sono spesso molto limitate. Di conseguenza, ti consigliamo di verificare che le opzioni di vCPU e memoria disponibili siano compatibili con i requisiti delle attività del job. |
GPU per le VM N1: per queste GPU devi specificare il tipo e la quantità da collegare a ogni VM e devono essere collegate a VM con un tipo di macchina della serie di macchine N1. |
Per utilizzare le GPU per le VM N1, ti consigliamo di specificare almeno il tipo di GPU e il numero di GPU. Assicurati che la combinazione di valori corrisponda a una delle opzioni GPU valide per i tipi di macchine N1. Le opzioni di vCPU e memoria per le VM N1 che utilizzano GPU di tipo e numero specifici sono abbastanza flessibili, quindi, se preferisci, puoi lasciare che Batch selezioni un tipo di macchina che soddisfi i requisiti delle attività del job. |
Seleziona il metodo di provisioning
Batch utilizza diversi metodi per eseguire il provisioning delle risorse VM per i job che utilizzano le GPU in base al tipo di risorse richieste dal job. I metodi di provisioning disponibili e i relativi requisiti sono descritti nella tabella seguente, che li elenca in base ai casi d'uso: dalla disponibilità delle risorse più elevata a quella più bassa.
In sintesi, consigliamo alla maggior parte degli utenti di procedere nel seguente modo:
Se intendi utilizzare tipi di macchine GPU A3 senza una prenotazione, utilizza Dinamic Workload Scheduler per Batch (anteprima).
Per tutti gli altri tipi di macchine GPU, utilizza il metodo di provisioning predefinito. Il metodo di provisioning predefinito è solitamente on demand. Un'eccezione è rappresentata dal caso in cui il progetto abbia prenotazioni inutilizzate che il job può consumare automaticamente.
Metodi di provisioning e relativi requisiti dei job | |
---|---|
Prenotazioni
|
Batch utilizza le prenotazioni per i job che possono consumare le prenotazioni inutilizzate. Per ulteriori informazioni sulle prenotazioni e sui relativi requisiti, consulta la pagina Garantire la disponibilità delle risorse utilizzando le prenotazioni delle VM. |
Dynamic Workload Scheduler per Batch (anteprima)
|
Batch utilizza Dynamic Workload Scheduler per i job che svolgono tutte le seguenti operazioni:
|
On demand
|
Batch utilizza on demand per tutti gli altri job. |
VM spot
|
Batch utilizza le VM spot per i job che impostano il campo |
Passaggio 2: installa i driver della GPU
Per installare i driver GPU richiesti, seleziona uno dei seguenti metodi:
Installa i driver GPU automaticamente (consigliato, se possibile): come mostrato negli esempi, per consentire a Batch di recuperare i driver GPU richiesti da una posizione di terze parti e installarli per tuo conto, imposta il campo
installGpuDrivers
per il job sutrue
. Questo metodo è consigliato se il tuo job non richiede l'installazione manuale dei driver.Se vuoi specificare la versione del driver GPU che deve essere installata da Batch, imposta anche il campo
driverVersion
.Installa i driver GPU manualmente:questo metodo è obbligatorio se una delle seguenti condizioni è vera:
- Un job utilizza sia script che eseguibili dei contenitori e non ha accesso a internet. Per saperne di più sull'accesso di un job, consulta Panoramica della rete di batch.
- Un job utilizza un'immagine VM personalizzata. Per scoprire di più sulle immagini del sistema operativo VM e su quali puoi utilizzare, consulta la Panoramica dell'ambiente del sistema operativo VM.
Per installare manualmente i driver GPU richiesti, è consigliato il seguente metodo:
Crea un'immagine VM personalizzata che includa i driver della GPU.
Per installare i driver GPU, esegui uno script di installazione in base al sistema operativo che vuoi utilizzare:
Se il tuo job contiene elementi eseguibili dei container e non utilizza Container-Optimized OS, devi installare anche NVIDIA Container Toolkit.
Quando crei e invii un job che utilizza le GPU, specifica l'immagine VM personalizzata che include i driver GPU e imposta il campo
installGpuDrivers
per il job sufalse
(valore predefinito).
Passaggio 3: definisci le risorse VM compatibili
Per informazioni sui requisiti e sulle opzioni per definire le risorse VM per un job, consulta Risorse dei job.
In sintesi, devi eseguire tutte le operazioni riportate di seguito quando definisci le risorse VM per un job che utilizza le GPU:
Assicurati che il tipo di macchina GPU sia disponibile nella posizione delle VM del tuo job.
Per scoprire dove sono disponibili i tipi di macchine GPU, consulta la sezione Disponibilità delle GPU per regioni e zone nella documentazione di Compute Engine.
Se specifichi il tipo di macchina del job, assicurati che disponga di vCPU e memoria sufficienti per i requisiti delle attività del job. È consigliabile specificare il tipo di macchina del job quando si utilizzano GPU per le VM ottimizzate per l'acceleratore ed è facoltativo quando si utilizzano GPU per le VM N1.
Assicurati di definire le risorse VM per un job utilizzando un metodo valido:
- Definisci le risorse VM direttamente utilizzando il campo
instances[].policy
(consigliato se possibile). Questo metodo è mostrato negli esempi. - Definisci le risorse VM tramite un modello utilizzando il campo
instances[].instanceTemplate
. Questo metodo è necessario per installare manualmente i driver GPU tramite un'immagine personalizzata. Per ulteriori informazioni, consulta Definire le risorse dei job utilizzando un modello di istanza VM.
- Definisci le risorse VM direttamente utilizzando il campo
Crea un job di esempio che utilizza le GPU
Le sezioni seguenti spiegano come creare un job di esempio per ogni tipo di macchina GPU utilizzando le opzioni consigliate. Nello specifico, i job di esempio installano tutti automaticamente i driver GPU, definiscono tutti direttamente le risorse VM e specificano il metodo di provisioning o utilizzano il metodo di provisioning predefinito.
- Utilizzare le GPU per le VM A3 tramite Dynamic Workload Scheduler (anteprima)
- Utilizzare le GPU per le VM ottimizzate per l'acceleratore
- Utilizzare le GPU per le VM N1
Utilizzare le GPU per le VM A3 tramite lo scheduler dei workload dinamici per Batch (anteprima)
Puoi creare un job che utilizza le GPU per le VM A3 tramite lo scheduler dei carichi di lavoro dinamico utilizzando gcloud CLI o l'API Batch.
gcloud
Crea un file JSON che installa i driver GPU, specifica un tipo di macchina della serie A3, blocca le prenotazioni ed esegue in una località con il tipo di macchina GPU.
Ad esempio, per creare un job di script di base che utilizza le GPU per le VM A3 tramite Dynamic Workload Scheduler, crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.MACHINE_TYPE
: un tipo di macchina della serie di macchine A3.ALLOWED_LOCATIONS
: se vuoi, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la località del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST
al
metodo jobs.create
che installa i driver GPU, specifica un tipo di macchina della serie A3, blocca le prenotazioni ed esegue in una posizione con il tipo di macchina GPU.
Ad esempio, per creare un job di script di base che utilizza le GPU per le VM A3 tramite la pianificazione dei workload dinamici, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.MACHINE_TYPE
: un tipo di macchina della serie di macchine A3.ALLOWED_LOCATIONS
: facoltativamente, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Utilizzare le GPU per le VM ottimizzate per l'acceleratore
Puoi creare un job che utilizza le GPU per le VM ottimizzate per gli acceleratori utilizzando gcloud CLI'API Batch, Java, Node.js o Python.
gcloud
Crea un file JSON che installa i driver GPU, specifica un tipo di macchina della famiglia di macchine ottimizzate per l'acceleratore ed esegui in una posizione che ha il tipo di macchina GPU.
Ad esempio, per creare un job di script di base che utilizzi le GPU per le VM ottimizzate per gli acceleratori, crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.MACHINE_TYPE
: un tipo di macchina della famiglia di macchine ottimizzate per l'acceleratore.ALLOWED_LOCATIONS
: se vuoi, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la località del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST
al
metodo jobs.create
che installa i driver GPU, specifica un tipo di macchina della
famiglia di macchine ottimizzate per l'acceleratore ed esegue in una posizione che ha il
tipo di macchina GPU.
Ad esempio, per creare un job di script di base che utilizza le GPU per le VM ottimizzate per gli acceleratori, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.MACHINE_TYPE
: un tipo di macchina della famiglia di macchine ottimizzate per l'acceleratore.ALLOWED_LOCATIONS
: se vuoi, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Java
Node.js
Python
Utilizzare le GPU per le VM N1
Puoi creare un job che utilizza le GPU per le VM N1 utilizzando l'interfaccia alla gcloud CLI'API Batch, Java, Node.js o Python.
gcloud
Crea un file JSON che installa i driver della GPU, definisce i sottocampi
type
ecount
del campoaccelerators[]
ed esegue in una posizione con il tipo di macchina GPU.Ad esempio, per creare un job di script di base che utilizzi le GPU per le VM N1 e consenta a Batch di selezionare il tipo di macchina N1 esatto, crea un file JSON con i seguenti contenuti:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.GPU_TYPE
: il tipo di GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Utilizza questo campo solo per le GPU per le VM N1.GPU_COUNT
: il numero di GPU del tipo specificato. Per saperne di più sulle opzioni valide, consulta i tipi di macchine GPU per la serie di macchine N1. Utilizza questo campo solo per le GPU per le VM N1.ALLOWED_LOCATIONS
: se vuoi, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la località del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST
al
metodo jobs.create
che installa i driver GPU, definisce i
subcampi type
e count
del campo accelerators[]
e utilizza una posizione con il
tipo di macchina GPU.
Ad esempio, per creare un job di script di base che utilizzi GPU per le VM N1 e consenta a Batch di selezionare il tipo di macchina N1 esatto, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Sostituisci quanto segue:
PROJECT_ID
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.INSTALL_GPU_DRIVERS
: se impostato sutrue
, Batch recupera i driver richiesti per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per tuo conto. Se imposti questo campo sufalse
(valore predefinito), devi installare manualmente i driver GPU per utilizzare le GPU per questo job.GPU_TYPE
: il tipo di GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Utilizza questo campo solo per le GPU per le VM N1.GPU_COUNT
: il numero di GPU del tipo specificato. Per saperne di più sulle opzioni valide, consulta Tipi di macchine GPU per le serie di macchine N1. Utilizza questo campo solo per le GPU per le VM N1.ALLOWED_LOCATIONS
: se vuoi, puoi utilizzare il campoallowedLocations[]
per specificare una regione o zone specifiche in una regione in cui è consentito eseguire le VM per il tuo job. Ad esempio,regions/us-central1
consente tutte le zone della regioneus-central1
. Assicurati di specificare le località che offrono il tipo di macchina GPU che vuoi per questo job. In caso contrario, se ometti questo campo, assicurati che la località del job offra il tipo di macchina GPU.
Java
Node.js
Python
Passaggi successivi
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.