Crea ed esegui un job che utilizza GPU

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 GPU includono carichi di lavoro intensivi di elaborazione dati e machine learning (ML).

Prima di iniziare

Crea un job che utilizza GPU

Per creare un job che utilizza GPU:

  1. Consulta la sezione Requisiti per l'utilizzo di un job con GPU per determinare i metodi che puoi utilizzare per creare il job.
  2. Crea un job con i metodi che hai selezionato. 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 di GPU in un job

Per utilizzare le GPU, un job deve:

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 di GPU specificato. Per ulteriori informazioni sulla definizione del tipo di GPU, del numero di GPU e di una posizione valida per un job, vedi gli esempi.

Installa i driver per GPU

Per installare i driver GPU richiesti, seleziona uno dei seguenti metodi:

Definisci risorse VM compatibili

Se il job definisce risorse 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:

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 l'articolo sulle piattaforme GPU nella documentazione di Compute Engine.

Crea un job di esempio che utilizza GPU

Puoi creare un job che utilizza GPU utilizzando l'interfaccia a riga di comando gcloud o l'API Batch.

gcloud

  1. Crea un file JSON che specifichi i dettagli di configurazione del job, i sottocampi type e count del campo accelerators[] e una località 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 località 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 impostato su true, Batch recupera i driver richiesti per il tipo di GPU specificato nel campo policy da un percorso di terze parti e li installa per tuo conto. Se imposti questo campo su false (impostazione predefinita), 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 comando gcloud compute accelerator-types list.

    • GPU_COUNT: il numero di GPU del tipo specificato.

    • ALLOWED_LOCATIONS: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il tuo job, ad esempio regions/us-central1, zones/us-central1-a consente la zona us-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 campo allowedLocations[].

  2. 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 specifica i dettagli di configurazione del job, i sottocampi type e count del campo accelerators[] e una località 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 località 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 job.

  • INSTALL_GPU_DRIVERS: facoltativo. Se impostato su true, Batch recupera i driver richiesti per il tipo di GPU specificato nel campo policy da un percorso di terze parti e li installa per tuo conto. Se imposti questo campo su false (impostazione predefinita), 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 comando gcloud compute accelerator-types list.

  • GPU_COUNT: il numero di GPU del tipo specificato.

  • ALLOWED_LOCATIONS: facoltativo. Le località in cui è consentita l'esecuzione delle istanze VM per il tuo job, ad esempio regions/us-central1, zones/us-central1-a consente la zona us-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 campo allowedLocations[].

Passaggi successivi