Job mit GPUs erstellen und ausführen

In diesem Dokument wird erläutert, wie Sie einen Job erstellen und ausführen, der eine Grafikprozessor (GPU) verwendet.

Wenn Sie einen Batch-Job erstellen, können Sie den VMs, auf denen er ausgeführt wird, optional eine oder mehrere GPUs hinzufügen. Zu den häufigsten Anwendungsfällen für Jobs mit GPUs zählen intensive Datenverarbeitungs- und ML-Arbeitslasten.

Hinweise

Job erstellen, der GPUs verwendet

So erstellen Sie einen Job, der GPUs verwendet:

  1. Im Abschnitt Voraussetzungen für die Verwendung von GPUs für einen Job erfahren Sie, welche Methoden Sie zum Erstellen Ihres Jobs verwenden können.
  2. Erstellen Sie einen Job mit den ausgewählten Methoden. Beispiele zum Erstellen eines Jobs mit den empfohlenen Methoden finden Sie im Abschnitt Beispieljob mit GPUs erstellen.

Anforderungen an einen Job zur Verwendung von GPUs

Zur Verwendung von GPUs muss ein Job folgende Schritte ausführen:

Nachdem Sie festgelegt haben, wie diese Anforderungen für Ihren Job erfüllt werden sollen, müssen Sie auch die GPUs und den Standort des Jobs definieren. Die VMs eines Jobs können jeweils eine oder mehrere GPUs des von Ihnen angegebenen Typs verwenden. Die zulässigen Standorte für die VMs des Jobs (oder, wenn nicht definiert, der Standort des Jobs) müssen den angegebenen GPU-Typ haben. Weitere Informationen zum Definieren des GPU-Typs, der GPU-Nummer und eines gültigen Standorts für einen Job finden Sie in den Beispielen.

GPU-Treiber installieren

Wählen Sie eine der folgenden Methoden aus, um die erforderlichen GPU-Treiber zu installieren:

Kompatible VM-Ressourcen definieren

Wenn in Ihrem Job andere VM-Ressourcen (beliebige instances[]-Unterfelder) als GPUs definiert sind, müssen Sie diese VM-Ressourcen auf kompatible Weise definieren.

Die Ressourcen für die VMs eines Jobs, einschließlich GPUs, können nur mit den folgenden Methoden definiert werden:

  • Ressourcen direkt definieren (empfohlen): Wie in den Beispielen gezeigt, verwenden Sie das Feld policy, um die Ressourcen für die VMs eines Jobs direkt zu definieren.
  • Ressourcen in einer Vorlage definieren:Definieren Sie die Ressourcen für die VMs eines Jobs, indem Sie eine Compute Engine-Instanzvorlage angeben.

Darüber hinaus müssen alle von Ihnen definierten Ressourcen mit dem Typ und der Anzahl der GPUs für den Job kompatibel sein. Weitere Informationen zu den VM-Ressourcen, die Sie mit GPUs verwenden können, finden Sie in der Compute Engine-Dokumentation unter GPU-Plattformen.

Beispieljob mit GPUs erstellen

Sie können einen Job, der GPUs verwendet, über die gcloud CLI oder die Batch API erstellen.

gcloud

  1. Erstellen Sie eine JSON-Datei, die die Konfigurationsdetails des Jobs, die Unterfelder type und count des Felds accelerators[] sowie einen Speicherort mit diesen GPU-Typen angibt.

    Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, der GPUs verwendet, die erforderlichen GPU-Treiber automatisch installiert und die zulässigen Speicherorte für die VMs des Jobs angeben möchten, erstellen Sie eine JSON-Datei mit folgendem Inhalt:

    {
        "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"
                ]
            }
        }
    }
    

    Ersetzen Sie Folgendes:

    • INSTALL_GPU_DRIVERS: Optional. Wenn dieser Wert auf true gesetzt ist, ruft Batch die für den GPU-Typ, den Sie im Feld policy angeben, erforderlichen Treiber von einem Drittanbieterstandort ab und installiert sie in Batch in Ihrem Namen. Wenn Sie dieses Feld auf false (Standardeinstellung) setzen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.

    • GPU_TYPE: der GPU-Typ. Mit dem Befehl gcloud compute accelerator-types list können Sie eine Liste der verfügbaren GPU-Typen aufrufen.

    • GPU_COUNT: die Anzahl der GPUs des angegebenen Typs.

    • ALLOWED_LOCATIONS: Optional. Die Standorte, an denen die VM-Instanzen für Ihren Job ausgeführt werden dürfen (z. B. regions/us-central1, zones/us-central1-a erlaubt die Zone us-central1-a). Wenn Sie einen zulässigen Standort angeben, müssen Sie die Region und optional eine oder mehrere Zonen auswählen. Die ausgewählten Standorte müssen die gewünschten GPU-Typen für diesen Job haben. Wenn Sie dieses Feld weglassen, muss der Standort des Jobs die GPU-Typen enthalten. Weitere Informationen finden Sie im Feld allowedLocations[].

  2. Verwenden Sie den Befehl gcloud batch jobs submit, um den Job zu erstellen und auszuführen:

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    Ersetzen Sie Folgendes:

    • JOB_NAME: der Name des Jobs.

    • LOCATION: der Standort des Jobs.

    • JSON_CONFIGURATION_FILE: der Pfad für eine JSON-Datei mit den Konfigurationsdetails des Jobs.

API

Stellen Sie eine POST-Anfrage an die Methode jobs.create, die die Konfigurationsdetails des Jobs, die Unterfelder type und count des Felds accelerators[] sowie einen Standort mit diesen GPU-Typen angibt.

Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, der GPUs verwendet, die erforderlichen GPU-Treiber automatisch installiert und die zulässigen Speicherorte für die VMs des Jobs angeben möchten, erstellen Sie eine JSON-Datei mit folgendem Inhalt:

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"
            ]
        }
    }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Projekt-ID Ihres Projekts.

  • LOCATION: der Standort des Jobs.

  • JOB_NAME: der Name des Jobs.

  • INSTALL_GPU_DRIVERS: Optional. Wenn dieser Wert auf true gesetzt ist, ruft Batch die für den GPU-Typ, den Sie im Feld policy angeben, erforderlichen Treiber von einem Drittanbieterstandort ab und installiert sie in Batch in Ihrem Namen. Wenn Sie dieses Feld auf false (Standardeinstellung) setzen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.

  • GPU_TYPE: der GPU-Typ. Mit dem Befehl gcloud compute accelerator-types list können Sie eine Liste der verfügbaren GPU-Typen aufrufen.

  • GPU_COUNT: die Anzahl der GPUs des angegebenen Typs.

  • ALLOWED_LOCATIONS: Optional. Die Standorte, an denen die VM-Instanzen für Ihren Job ausgeführt werden dürfen (z. B. regions/us-central1, zones/us-central1-a erlaubt die Zone us-central1-a). Wenn Sie einen zulässigen Standort angeben, müssen Sie die Region und optional eine oder mehrere Zonen auswählen. Die ausgewählten Standorte müssen die gewünschten GPU-Typen für diesen Job haben. Wenn Sie dieses Feld weglassen, muss der Standort des Jobs die GPU-Typen enthalten. Weitere Informationen finden Sie im Feld allowedLocations[].

Nächste Schritte