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 le 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 le GPU:

  1. Consulta la sezione Requisiti per l'utilizzo delle GPU per un job per determinare i metodi che puoi utilizzare per creare il job.
  2. 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:

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:

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

  1. Crea un file JSON che specifichi i dettagli di configurazione del job, i sottocampi type e count del campo accelerators[] 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 su true, Batch recupera i driver necessari per il tipo di GPU specificato nel campo policy da una posizione 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 qualsiasi 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 sono consentite le istanze VM per il 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 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 su true, Batch recupera i driver necessari per il tipo di GPU specificato nel campo policy da una posizione 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 qualsiasi 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 sono consentite le istanze VM per il 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