Questo documento spiega come creare ed eseguire un job che utilizza un'unità di elaborazione grafica (GPU).
Facoltativamente, puoi creare un job batch che aggiunge una o più GPU alle VM in esecuzione nel job. I casi d'uso comuni per i job che utilizzano GPU includono i carichi di lavoro di elaborazione dati intensiva e machine learning (ML).
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la sezione Iniziare a utilizzare il 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 seguenti ruoli IAM:
-
Editor job batch (
roles/batch.jobsEditor
) sul progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'account di servizio job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
Creare un job che utilizza una GPU
Facoltativamente, puoi creare un job che aggiunga una o più unità di elaborazione grafica (GPU) a ciascuna delle VM che eseguono il job. Per creare un job che utilizzi le GPU, segui questi passaggi:
- Consulta la sezione Requisiti per un job per utilizzare le GPU 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 Creazione di un job che utilizza una GPU.
Requisiti per l'utilizzo delle GPU in un job
Per utilizzare una GPU, un job deve:
Installa driver GPU
Per installare i driver GPU richiesti, seleziona uno dei seguenti metodi:
Installa i driver automaticamente (opzione consigliata): come mostrato negli esempi, per consentire al batch di recuperare i driver GPU richiesti da una località di terze parti e installarli per tuo conto, imposta il campo
installGpuDrivers
per il job sutrue
.Installa i driver manualmente:questo metodo è obbligatorio se si verifica una delle seguenti condizioni:
- Un job utilizza script eseguibili e container e non ha accesso a Internet. Per ulteriori informazioni sull'accesso di un job, consulta Panoramica delle reti batch.
- Un job utilizza un'immagine VM personalizzata.
Per installare manualmente i driver GPU richiesti, è consigliato il seguente metodo:
Crea un'immagine VM personalizzata che includa i driver GPU.
Per installare i driver GPU, esegui uno script di installazione in base al sistema operativo che vuoi utilizzare:
Se il job ha un container eseguibile e non utilizza Container-Optimized OS, devi anche installare NVIDIA Container Toolkit
Crea e invia un job con l'immagine VM personalizzata utilizzando un modello di istanza Compute Engine. Imposta il campo
installGpuDrivers
per il job sufalse
(predefinito).
Definisci le risorse VM
Per utilizzare le GPU, un job deve specificare il tipo e il numero di GPU e un tipo di macchina compatibile per le VM del job. Per definire le risorse per le VM di un job, seleziona uno dei seguenti metodi:
- Definisci direttamente le risorse (consigliato): come mostrato negli esempi, per definire direttamente le risorse delle VM di un job, utilizza il campo
policy
policy
. - Definisci le risorse in un modello: definisci le risorse delle VM di un job specificando un modello di istanza Compute Engine. Se includi un modello di istanza nella definizione del job, devi utilizzare questo metodo.
Monta le GPU in qualsiasi container
Se un job include delle esecuzioni eseguibili dei container che vuoi utilizzare, devi anche montare le GPU su ogni container eseguibile in base all'immagine VM del job:
- Se un job utilizza l'immagine VM predefinita e ha solo eseguibili container
o utilizza un'immagine personalizzata di Container-Optimized OS, procedi come segue:
- Per il campo
options
, specifica il flag--privileged
. - Per il campo
volumes
, specifica i percorsi/var/lib/nvidia/lib64:/usr/local/nvidia/lib64
e/var/lib/n
vidia/bin:/usr/local/nvidia/bin
.
- Per il campo
- In caso contrario, se un job utilizza l'immagine VM predefinita e ha container e eseguibili o se un job utilizza un'immagine VM personalizzata diversa da Container-Optimized OS, segui questi passaggi:
- Per il campo
options
, specifica il flag--gpus all
.
- Per il campo
Creazione di un job che utilizza una GPU
Questa sezione fornisce esempi su come creare un job che utilizza una GPU utilizzando i metodi consigliati: il job installa automaticamente i driver necessari e definisce le risorse che utilizza direttamente. I job di esempio con container eseguibili montano anche le GPU nei container. Puoi creare un job che utilizzi una GPU utilizzando l'interfaccia a riga di comando gcloud o l'API batch.
gcloud
Per aggiungere una GPU a un job, consulta uno dei seguenti esempi in base ai tipi di eseguibili che vuoi utilizzare:
- Aggiungi una GPU a un job container.
- Aggiungere una GPU a un job di script.
- Aggiungere una GPU a un job di container e script
Aggiungere una GPU a un job container
Per creare un job di container con una GPU che utilizza l'immagine predefinita utilizzando l'interfaccia a riga di comando gcloud, usa il comando gcloud batch jobs submit
.
Ad esempio, per creare un job container con una GPU:
Crea un file JSON nella directory attuale denominato
hello-world-container-job-gpu.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1", "volumes": [ "/var/lib/nvidia/lib64:/usr/local/nvidia/lib64", "/var/lib/nvidia/bin:/usr/local/nvidia/bin" ], "options": "--privileged" } } ], }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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 il tipo di GPU che preferisci per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Esegui questo comando:
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-container-job-gpu.json
Aggiungere una GPU a un job di script
Per creare un job di script con una GPU che utilizza l'immagine predefinita utilizzando l'interfaccia a riga di comando gcloud, utilizza il comando gcloud batch jobs submit
.
Ad esempio, per creare un job di script con una GPU:
Crea un file JSON nella directory attuale denominato
hello-world-script-job-gpu.json
con il seguente contenuto:{ "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", "accelerators": { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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 il tipo di GPU che preferisci per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Esegui questo comando:
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-script-job-gpu.json
Aggiungere una GPU a un job di container e script
Per creare un job di container e script con una GPU che utilizza l'immagine predefinita, utilizzando l'interfaccia a riga di comando gcloud, utilizza il comando gcloud batch jobs submit
.
Ad esempio, per creare un job di container e script con una GPU:
Crea un file JSON nella directory attuale denominato
hello-world-container-script-job-gpu.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1", "options": "--gpus all" } }, { "script": { "text": "echo Hello world from script task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "machineType": "MACHINE_TYPE", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Sostituisci quanto segue:
INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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 il tipo di GPU che preferisci per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Esegui questo comando:
gcloud batch jobs submit example-job-gpu \ --location us-central1 \ --config hello-world-container-script-job-gpu.json
API
Per aggiungere una GPU a un job, consulta uno dei seguenti esempi in base ai tipi di eseguibili che vuoi utilizzare:
- Aggiungi una GPU a un job container.
- Aggiungere una GPU a un job di script.
- Aggiungere una GPU a un job di container e script
Aggiungere una GPU a un job container
Per creare un job container con una GPU che utilizza l'immagine predefinita utilizzando l'API Batch, usa il metodo jobs.create
.
Ad esempio, per creare un job container con una GPU, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1",
"volumes": [
"/var/lib/nvidia/lib64:/usr/local/nvidia/lib64",
"/var/lib/nvidia/bin:/usr/local/nvidia/bin"
],
"options": "--privileged"
}
}
],
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto del tuo progetto.INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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à scelte devono avere il tipo di GPU desiderato per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Aggiungere una GPU a un job di script
Per creare un job di script con una GPU che utilizza l'immagine predefinita utilizzando l'API Batch, usa il metodo jobs.create
.
Ad esempio, per creare un job di script con una GPU, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"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",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto del tuo progetto.INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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à scelte devono avere il tipo di GPU desiderato per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Aggiungere una GPU a un job di container e script
Per creare un container e un job di script con una GPU che utilizza l'immagine predefinita utilizzando l'API Batch, usa il metodo jobs.create
.
Ad esempio, per creare un job di container e script con una GPU, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-job-gpu
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google_containers/cuda-vector-add:v0.1",
"options": "--gpus all"
}
},
{
"script": {
"text": "echo Hello world from script task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"machineType": "MACHINE_TYPE",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto del tuo progetto.INSTALL_GPU_DRIVERS
: facoltativo. Se questo criterio viene impostato sutrue
, Batch recupera i driver necessari per il tipo di GPU specificato nel campopolicy
da una posizione di terze parti e li installa per conto tuo. Se imposti questo campo sufalse
(impostazione predefinita), devi installare i driver GPU manualmente per utilizzare qualsiasi GPU per questo job.MACHINE_TYPE
: il tipo di macchina, che può essere predefinita o personalizzata, per le VM del tuo job. Il tipo di macchina limita il tipo di GPU che puoi utilizzare. Per creare un job con una GPU, questo campo è obbligatorio.GPU_TYPE
: il tipo GPU. Puoi visualizzare un elenco dei tipi di GPU disponibili utilizzando il comandogcloud compute accelerator-types list
. Per creare un job con una GPU, questo campo è obbligatorio.GPU_COUNT
: il numero di GPU del tipo specificato nel campotype
. Per creare un job con una GPU, questo campo è obbligatorio.ALLOWED_LOCATIONS
: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il job (ad esempio,regions/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à scelte devono avere il tipo di GPU desiderato per questo job. Per ulteriori informazioni, consulta il campo di arrayallowedLocations
.
Passaggi successivi
- Se hai problemi a creare o eseguire un job, vedi Risoluzione dei problemi.
- Visualizzare lavori e attività.
- Scopri di più sulle opzioni per la creazione di offerte di lavoro.