In diesem Dokument wird erläutert, wie Sie einen Job erstellen und ausführen, der einen Grafikprozessor (GPU) Weitere Informationen zu den Funktionen und Einschränkungen für GPUs finden Sie unter Informationen zu GPUs in der Compute Engine-Dokumentation
Wenn Sie einen Batchjob erstellen, können Sie optional GPUs verwenden, um bestimmte Arbeitslasten zu beschleunigen. Gängige Anwendungsfälle für Jobs mit GPUs sind intensive Datenverarbeitung und Arbeitslasten für künstliche Intelligenz (KI) wie maschinelles Lernen (ML).
Hinweise
- Wenn Sie Batch zum ersten Mal verwenden, lesen Sie Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie den Voraussetzungen für Projekte und Nutzer.
-
Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Batch-Job-Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Batch-Job-Editor (
Job erstellen, der GPUs verwendet
So erstellen Sie einen Job, der GPUs verwendet:
- Anforderungen für einen Job planen, der GPUs verwendet
- Erstellen Sie einen Job mit den von Ihnen ermittelten Anforderungen und Methoden. Beispiele zum Erstellen eines Jobs mit den empfohlenen Methoden finden Sie in diesem Dokument unter Beispieljob mit GPUs erstellen.
Anforderungen für einen Job mit GPUs planen
Bevor Sie einen Job erstellen, der GPUs verwendet, planen Sie die Anforderungen des Jobs wie beschrieben finden Sie in den folgenden Abschnitten:
Schritt 1: GPU-Maschinentyp auswählen
Die verfügbaren GPU-Maschinentypen (die gültigen Kombinationen von GPU-Typ, Anzahl der GPUs, dem Maschinentyp (vCPUs und Arbeitsspeicher)) sowie deren Anwendungsfälle sind auf der Seite GPU-Maschinentypen in der Compute Engine Dokumentation.
Die für einen Job erforderlichen Felder zur Angabe eines GPU-Maschinentyps variieren je nach Kategorie in der folgenden Tabelle:
GPU-Maschinentypen und Jobanforderungen | |
---|---|
GPUs für beschleunigungsoptimierte VMs: VMs mit einem Maschinentyp aus der beschleunigungsoptimierten Maschinenfamilie sind automatisch mit einem bestimmten Typ und einer bestimmten Anzahl dieser GPUs verbunden. |
Zur Verwendung von GPUs für beschleunigeroptimierte VMs empfehlen wir, dass Sie geben Sie den Maschinentyp an. Jeder beschleunigeroptimierte Maschinentyp unterstützt nur einen bestimmten GPU-Typ und eine bestimmte Anzahl von GPUs, unabhängig davon, ob Sie diese Werte zusätzlich zum beschleunigeroptimierten Maschinentyp. Insbesondere unterstützt Batch auch die Angabe des Attributs Typ und Anzahl der GPUs für beschleunigeroptimierte VMs, aber die daraus resultierenden vCPU- und Arbeitsspeicheroptionen sind oft sehr begrenzt. Daher empfehlen wir Ihnen, dass die verfügbaren vCPU- und Arbeitsspeicheroptionen kompatibel sind, mit den Aufgabenanforderungen des Jobs. |
GPUs für N1-VMs: Bei diesen GPUs müssen Sie den Typ und die Anzahl angeben, die an jede VM angehängt werden soll. Sie müssen an VMs mit einem Maschinentyp aus der N1-Maschinenreihe angehängt werden. |
Zur Verwendung von GPUs für N1-VMs empfehlen wir, mindestens die und die Anzahl der GPUs. Stellen Sie sicher, dass die Kombination stimmt mit einem der gültigen GPU-Optionen für N1-Maschinentypen Die vCPU- und Arbeitsspeicheroptionen für N1-VMs, die einen bestimmten Typ und ist sehr flexibel. Wenn es bevorzugt wird, kann Batch also eine Maschinentyp, der die Aufgabenanforderungen des Jobs erfüllt. |
Schritt 2: GPU-Treiber installieren
Wählen Sie eine der folgenden Methoden aus, um die erforderlichen GPU-Treiber zu installieren:
Treiber automatisch installieren (nach Möglichkeit empfohlen): Wie in den Beispielen gezeigt, können Sie das Feld
installGpuDrivers
für den Job auftrue
festlegen, damit Batch die erforderlichen GPU-Treiber von einem Drittanbieter-Speicherort abholt und in Ihrem Namen installiert. Diese Methode wird empfohlen, wenn Sie bei Ihrer Arbeit keine Treiber manuell installieren müssen.Optional: Wenn Sie angeben möchten, welche Version des GPU-Treibers mit dem Batch installiert werden soll, legen Sie auch das Feld
driverVersion
fest.Treiber manuell installieren: Diese Methode ist erforderlich, wenn eine der folgenden Bedingungen zutrifft:
- Ein Job verwendet sowohl Script- als auch Container-Ausführbare und hat keinen Internetzugang. Weitere Informationen zu den Zugriffsberechtigungen eines Jobs finden Sie unter Batch-Netzwerkübersicht.
- Ein Job verwendet ein benutzerdefiniertes VM-Image. Weitere Informationen zu VM-Betriebssystem-Images und zu den verfügbaren VM-Betriebssystem-Images finden Sie unter VM-Betriebssystemumgebung – Übersicht.
Für die manuelle Installation der erforderlichen GPU-Treiber wird die folgende Methode empfohlen:
Erstellen Sie ein benutzerdefiniertes VM-Image, das die GPU-Treiber enthält.
Um GPU-Treiber zu installieren, führen Sie ein Installationsskript basierend auf dem Betriebssystem aus die Sie verwenden möchten:
Wenn Ihr Job Container Runnables hat und keine Container-Optimized OS müssen Sie auch den NVIDIA Container Toolkit
Erstellen und senden Sie einen Job mit dem benutzerdefinierten VM-Image, indem Sie Mit einer Compute Engine-Instanzvorlage Legen Sie für den Job das Feld
installGpuDrivers
auffalse
(Standard) fest.
Schritt 3: Kompatible VM-Ressourcen definieren
Weitere Informationen zu den Anforderungen und Optionen zum Definieren der VM-Ressourcen für eine Job finden Sie unter Jobressourcen
Zusammenfassend müssen Sie beim Definieren der VM-Ressourcen für einen Job, der GPUs verwendet, Folgendes tun:
Achten Sie darauf, dass der GPU-Maschinentyp am Standort Ihres die VMs des Jobs.
Informationen dazu, wo GPU-Maschinentypen verfügbar sind, finden Sie in der Compute Engine-Dokumentation unter GPU-Verfügbarkeit nach Regionen und Zonen.
Wenn Sie den Maschinentyp des Jobs angeben, achten Sie darauf, dass dieser über genügend vCPUs und Arbeitsspeicher für die Aufgabenanforderungen des Jobs. Computer des Jobs angeben -Typ ist erforderlich, wenn GPUs für beschleunigeroptimierte VMs verwendet werden, und optional wenn Sie GPUs für N1-VMs verwenden.
Definieren Sie die VM-Ressourcen für einen Job mit einer gültigen Methode:
- Definieren Sie VM-Ressourcen direkt mithilfe des Felds
instances[].policy
(nach Möglichkeit empfohlen). Diese Methode wird in den Beispielen gezeigt. - Definieren Sie VM-Ressourcen über eine Vorlage mit dem Feld
instances[].instanceTemplate
. Diese Methode ist erforderlich, um GPU-Treiber manuell über ein benutzerdefiniertes Image zu installieren. Weitere Informationen finden Sie unter Jobressourcen mit einer VM-Instanzvorlage definieren.
- Definieren Sie VM-Ressourcen direkt mithilfe des Felds
Beispieljob erstellen, der GPUs verwendet
In den folgenden Abschnitten wird erläutert, wie Sie einen Beispieljob für verschiedene GPU-Maschinentypen erstellen. In den Beispieljobs werden GPU-Treiber automatisch installiert und VM-Ressourcen direkt definieren.
GPUs für beschleunigeroptimierte VMs verwenden
Sie können einen Job erstellen, der GPUs für beschleunigeroptimierte VMs verwendet, indem Sie die gcloud CLI, Batch API, Java oder Python verwenden.
gcloud
Erstellen Sie eine JSON-Datei, die GPU-Treiber installiert, das Feld
machineType
mit dem Maschinentyp aus der beschleunigungsoptimierten Maschinenfamilie definiert und einen Speicherort mit den angegebenen GPUs verwendet.Wenn Sie beispielsweise einen einfachen Script-Job erstellen möchten, der GPUs für accelerator-optimierte VMs verwendet, erstellen Sie eine JSON-Datei mit dem folgenden 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": { "machineType": "MACHINE_TYPE" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } } }
Ersetzen Sie Folgendes:
INSTALL_GPU_DRIVERS
: Wenn diese Option auftrue
festgelegt ist, ruft Batch die für den GPU-Typ erforderlichen Treiber ab, den Sie im Feldpolicy
angeben, von einem Drittanbieter ab und installiert sie in Ihrem Namen. Wenn Sie dieses Feld auffalse
(Standardeinstellung) festlegen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.MACHINE_TYPE
: ein Maschinentyp aus der beschleunigeroptimierte Maschinenfamilie.ALLOWED_LOCATIONS
: Das FeldallowedLocations[]
definiert eine Region und optional eine oder mehrere Zonen, in denen die VM-Instanzen für Ihren Job ausgeführt werden dürfen. Mitregions/us-central1, zones/us-central1-a
ist beispielsweise die Zoneus-central1-a
zulässig. Achten Sie darauf, Standorte, an denen der GPU-Maschinentyp angeboten wird die Sie für diesen Job benötigen. Andernfalls stellen Sie beim Auslassen dieses Feldes sicher, Prüfen Sie, ob am Standort des Jobs der GPU-Maschinentyp angeboten wird.
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 zu einer JSON-Datei mit den Konfigurationsdetails des Jobs.
API
Stellen Sie eine POST
-Anfrage an die jobs.create
-Methode, die GPU-Treiber installiert, das Feld machineType
mit dem Maschinentyp aus der beschleunigungsoptimierten Maschinenfamilie definiert und einen Speicherort mit den angegebenen GPUs verwendet.
Um beispielsweise einen einfachen Skriptjob zu erstellen, stellen Sie die folgende Anfrage:
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": {
"machineType": "MACHINE_TYPE"
}
}
],
"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
: Wenn festgelegt auftrue
, ruft Batch die Treiber ab, die für die GPU-Typ, den Sie im Feldpolicy
angeben von einem Drittanbieter aus und installiert sie per Batch . Wenn Sie dieses Feld auffalse
(Standardeinstellung) festlegen, müssen Sie um GPU-Treiber manuell zu installieren, um GPUs für diesen Job zu verwenden.MACHINE_TYPE
: ein Maschinentyp aus der beschleunigeroptimierte Maschinenfamilie.ALLOWED_LOCATIONS
: Im FeldallowedLocations[]
wird eine Region und optional eine oder mehrere Zonen definiert, in denen die VM-Instanzen für Ihren Job ausgeführt werden dürfen. Mitregions/us-central1, zones/us-central1-a
ist beispielsweise die Zoneus-central1-a
zulässig. Geben Sie Standorte an, an denen der für diesen Job erforderliche GPU-Maschinentyp verfügbar ist. Andernfalls stellen Sie beim Auslassen dieses Feldes sicher, Prüfen Sie, ob am Standort des Jobs der GPU-Maschinentyp angeboten wird.
Java
Python
GPUs für N1-VMs verwenden
Sie können einen Job erstellen, der GPUs für N1-VMs verwendet, mit der gcloud CLI, der Batch API, Java, Node.js oder Python.
gcloud
Erstellen Sie eine JSON-Datei, die GPU-Treiber installiert, die Unterfelder
type
undcount
des Feldsaccelerators[]
definiert und einen Speicherort mit den angegebenen GPUs verwendet.Wenn Sie beispielsweise einen einfachen Script-Job erstellen möchten, der GPUs für N1-VMs verwendet und Batch den genauen N1-Maschinentyp auswählen lässt, 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
: Wenn festgelegt auftrue
, ruft Batch die Treiber ab, die für die GPU-Typ, den Sie im Feldpolicy
angeben von einem Drittanbieter aus und installiert sie per Batch . Wenn Sie dieses Feld auffalse
(Standardeinstellung) festlegen, müssen Sie um GPU-Treiber manuell zu installieren, um GPUs für diesen Job zu verwenden.GPU_TYPE
: die GPU Typ. Sie können eine Liste der verfügbaren GPU-Typen aufrufen, indem Sie die Methodegcloud compute accelerator-types list
-Befehl Verwenden Sie dieses Feld nur für GPUs für N1-VMs.GPU_COUNT
: die Anzahl der GPUs des angegebenen Typs. Weitere Informationen zu den gültigen Optionen finden Sie in der GPU-Maschinentypen für die N1-Maschinenserie Verwenden Sie dieses Feld nur für GPUs für N1-VMs.ALLOWED_LOCATIONS
: Das FeldallowedLocations[]
definiert eine Region und optional eine oder mehrere Zonen, in denen die VM-Instanzen für Ihren Job ausgeführt werden dürfen. Mitregions/us-central1, zones/us-central1-a
ist beispielsweise die Zoneus-central1-a
zulässig. Achten Sie darauf, Standorte, an denen der GPU-Maschinentyp angeboten wird die Sie für diesen Job benötigen. Andernfalls stellen Sie beim Auslassen dieses Feldes sicher, Prüfen Sie, ob am Standort des Jobs der GPU-Maschinentyp angeboten wird.
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 zu einer JSON-Datei mit den Konfigurationsdetails des Jobs.
API
Stellen Sie eine POST
-Anfrage an den
Methode jobs.create
das GPU-Treiber installiert, die
Unterfelder type
und count
des Felds accelerators[]
und verwendet einen Standort, der die angegebenen
GPU-Typ.
Wenn Sie beispielsweise einen einfachen Scriptjob erstellen möchten, der GPUs für N1-VMs verwendet und Batch den genauen N1-Maschinentyp auswählen lässt, führen Sie folgende Anfrage aus:
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
: Wenn festgelegt auftrue
, ruft Batch die Treiber ab, die für die GPU-Typ, den Sie im Feldpolicy
angeben von einem Drittanbieter aus und installiert sie per Batch . Wenn Sie dieses Feld auffalse
(Standardeinstellung) festlegen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.GPU_TYPE
: GPU-Typ Sie können eine Liste der verfügbaren GPU-Typen aufrufen, indem Sie die Methodegcloud compute accelerator-types list
-Befehl Verwenden Sie dieses Feld nur für GPUs für N1-VMs.GPU_COUNT
: die Anzahl der GPUs des angegebenen Typs. Weitere Informationen zu den zulässigen Optionen finden Sie unter GPU-Maschinentypen für die N1-Maschinenserie. Verwenden Sie dieses Feld nur für GPUs für N1-VMs.ALLOWED_LOCATIONS
: Die FeldallowedLocations[]
definiert eine Region und optional eine oder mehrere Zonen, in denen die VM für Ihren Job ausgeführt werden dürfen – Beispiel:regions/us-central1, zones/us-central1-a
lässt die Zone zu,us-central1-a
Geben Sie Standorte an, an denen der für diesen Job erforderliche GPU-Maschinentyp verfügbar ist. Wenn Sie dieses Feld weglassen, achten Sie darauf, dass der GPU-Maschinentyp am Standort des Jobs verfügbar ist.
Java
Node.js
Wählen Sie eine der folgenden Optionen aus, um einen Job mit GPUs unter Verwendung von Node.js zu erstellen. auf Basis des Maschinentyps für Ihr GPU-Modell:
- Job erstellen, der GPUs mit beschleunigeroptimierten VMs verwendet
- Job erstellen, der GPUs mit N1-VMs verwendet
Job erstellen, der GPUs mit beschleunigeroptimierten VMs verwendet
Wenn Sie GPUs mit beschleunigeroptimierten VMs verwenden möchten, geben Sie einfach den Maschinentyp an den Sie für die VMs des Jobs benötigen:
Job erstellen, der GPUs mit N1-VMs verwendet
Wenn Sie GPUs mit N1-VMs verwenden möchten, müssen Sie die Anzahl und den Typ der GPUs für jede VM des Jobs angeben:
Python
Nächste Schritte
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Hilfeartikel Fehlerbehebung.
- Aufgaben und Jobs ansehen
- Weitere Informationen zu Optionen für die Joberstellung