Questo documento spiega come creare ed eseguire un job che utilizza un'unità di elaborazione grafica (GPU).
Quando crei un job batch, puoi facoltativamente aggiungere una o più GPU alle VM che lo eseguono. I casi d'uso comuni per i job che utilizzano le GPU includono carichi di lavoro intensivi di elaborazione dati e machine learning (ML).
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i ruoli IAM seguenti:
-
Editor job batch (
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.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
Crea un job che utilizza GPU
Per creare un job che utilizza le GPU:
- Consulta la sezione Requisiti per l'utilizzo delle GPU per un job per determinare i metodi che puoi utilizzare per creare il job.
- Crea un job con i metodi selezionati. Per esempi su come creare un job utilizzando i metodi consigliati, consulta la sezione Creare un job di esempio che utilizza GPU.
Requisiti per l'utilizzo delle GPU in un job
Per utilizzare le GPU, un job deve eseguire tutte le seguenti operazioni:
- Installa i driver GPU richiesti automaticamente o manualmente, a seconda dei requisiti del job.
- Se il job specifica qualsiasi altra risorsa per le sue VM (direttamente o utilizzando un modello di istanza VM), il job deve definire le risorse VM compatibili.
Dopo aver determinato come soddisfare questi requisiti per il tuo job, devi anche definire la località e le GPU del job. Ciascuna delle VM di un job può utilizzare una o più GPU del tipo specificato. Le località consentite per le VM del job (o, se non definita, la località del job) devono avere il tipo specificato di GPU. Per saperne di più sulla definizione del tipo di GPU, del numero di GPU e di una posizione valida per un job, consulta gli esempi.
Installa i driver GPU
Per installare i driver GPU richiesti, seleziona uno dei seguenti metodi:
Installa i driver automaticamente (opzione consigliata, se possibile): come mostrato negli esempi, per consentire a Batch di recuperare i driver GPU richiesti da un percorso di terze parti e di installarli per tuo conto, imposta il campo
installGpuDrivers
per il job sutrue
. Questo metodo è consigliato se il job non richiede l'installazione manuale dei driver.Installa i driver manualmente:questo metodo è necessario se si verifica una delle seguenti condizioni:
- Un job utilizza gli elementi eseguibili sia di script che di container e non ha accesso a internet. Per ulteriori informazioni sull'accesso di un job, consulta Panoramica del networking in batch.
- Un job utilizza un'immagine VM personalizzata. Per scoprire di più sulle immagini sistema operativo VM e sulle immagini che puoi utilizzare, consulta Panoramica dell'ambiente del sistema operativo VM.
Per installare manualmente i driver GPU richiesti, ti consigliamo di utilizzare il seguente metodo:
Crea un'immagine VM personalizzata che includa i driver GPU.
Per installare i driver GPU, esegui uno script di installazione basato sul sistema operativo che vuoi utilizzare:
Se il job include elementi eseguibili di container e non utilizza Container-Optimized OS, devi installare anche NVIDIA Container Toolkit
Crea e invia un job con l'immagine VM personalizzata utilizzando un modello di istanza di Compute Engine. Imposta il campo
installGpuDrivers
per il job sufalse
(impostazione predefinita).
Definisci risorse VM compatibili
Se il job definisce una qualsiasi risorsa VM (uno dei sottocampi di instances[]
) diverse dalle GPU, devi definire queste risorse VM in modo compatibile.
Per definire le risorse per le VM di un job, incluse le GPU, puoi utilizzare solo i seguenti metodi:
- Definisci le risorse direttamente (opzione consigliata): come mostrato negli esempi, per definire le risorse direttamente per le VM di un job, utilizza il campo
policy
. - Definisci le risorse in un modello: definisci le risorse per le VM di un job specificando un modello di istanza di Compute Engine.
Inoltre, tutte le risorse che definisci devono essere compatibili con il tipo e il numero di GPU per il job. Per ulteriori informazioni sulle risorse VM che puoi utilizzare con le GPU, consulta Piattaforme GPU nella documentazione di Compute Engine.
Crea un job di esempio che utilizza le GPU
Puoi creare un job che utilizza GPU utilizzando gcloud CLI o l'API Batch.
gcloud
Crea un file JSON che specifichi i dettagli di configurazione del job, i sottocampi
type
ecount
del campoaccelerators[]
e una posizione contenente questi tipi di GPU.Ad esempio, per creare un job di script di base che utilizza GPU, installa automaticamente i driver GPU richiesti e specifica le posizioni consentite per le VM del job, 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" ] } } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: facoltativo. Se questa impostazione è impostata sutrue
, Batch recupera i driver necessari 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
(impostazione predefinita), devi installare manualmente i driver GPU per utilizzare qualsiasi 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
.GPU_COUNT
: il numero di GPU del tipo specificato.ALLOWED_LOCATIONS
: facoltativo. Le località in cui sono consentite le istanze VM per il job, ad esempioregions/us-central1, zones/us-central1-a
consente la zonaus-central1-a
. Se specifichi una località consentita, devi selezionare la regione e, facoltativamente, una o più zone. Le località che scegli devono avere i tipi di GPU desiderati per questo job. Altrimenti, se ometti questo campo, la posizione del job deve avere i tipi di GPU. Per ulteriori informazioni, consulta il campoallowedLocations[]
.
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 lavoro.LOCATION
: la località del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Esegui una richiesta POST
al
metodo jobs.create
che specifichi i dettagli di configurazione del job, i
sottocampi type
e count
del campo accelerators[]
e una posizione che contiene questi
tipi di GPU.
Ad esempio, per creare un job di script di base che utilizza GPU, installa automaticamente i driver GPU richiesti e specifica le posizioni consentite per le VM del job, crea un file JSON con i seguenti contenuti:
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"
]
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del lavoro.INSTALL_GPU_DRIVERS
: facoltativo. Se questa impostazione è impostata sutrue
, Batch recupera i driver necessari 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
(impostazione predefinita), devi installare manualmente i driver GPU per utilizzare qualsiasi 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
.GPU_COUNT
: il numero di GPU del tipo specificato.ALLOWED_LOCATIONS
: facoltativo. Le località in cui sono consentite le istanze VM per il job, ad esempioregions/us-central1, zones/us-central1-a
consente la zonaus-central1-a
. Se specifichi una località consentita, devi selezionare la regione e, facoltativamente, una o più zone. Le località che scegli devono avere i tipi di GPU desiderati per questo job. Altrimenti, se ometti questo campo, la posizione del job deve avere i tipi di GPU. Per ulteriori informazioni, consulta il campoallowedLocations[]
.
Passaggi successivi
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni per la creazione di job.