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
- Wenn Sie Batch noch nie verwendet haben, lesen Sie die Informationen unter Erste Schritte mit Batch. Aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen eines Jobs benötigen:
-
Batch Job Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) im Dienstkonto des Jobs. Dies ist standardmäßig das Compute Engine-Standarddienstkonto.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie 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:
- 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.
- 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:
- Installieren Sie die erforderlichen GPU-Treiber je nach Anforderungen des Jobs entweder automatisch oder manuell.
- Wenn der Job andere Ressourcen für die VMs des Jobs angibt (direkt oder mithilfe einer VM-Instanzvorlage), muss der Job kompatible VM-Ressourcen definieren.
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:
Treiber automatisch installieren (wenn möglich): Wie in den Beispielen gezeigt, müssen Sie das Feld
installGpuDrivers
für den Job auftrue
setzen, damit Batch die erforderlichen GPU-Treiber von einem externen Standort abrufen und in Ihrem Namen installieren kann. Diese Methode wird empfohlen, wenn Sie für Ihren Job keine Treiber manuell installieren müssen.Treiber manuell installieren:Diese Methode ist erforderlich, wenn eine der folgenden Bedingungen zutrifft:
- Ein Job verwendet sowohl Runnables von Skripts als auch Container und hat keinen Internetzugriff. 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 dazu, welche VM-Betriebssystem-Images Sie verwenden können, finden Sie unter VM-Betriebssystem-Umgebung – Übersicht.
Zum manuellen Installieren der erforderlichen GPU-Treiber wird die folgende Methode empfohlen:
Erstellen Sie ein benutzerdefiniertes VM-Image, das die GPU-Treiber enthält.
Führen Sie zum Installieren von GPU-Treibern ein Installationsskript basierend auf dem Betriebssystem aus, das Sie verwenden möchten:
Wenn der Job Runnables von Containern enthält und kein Container-Optimized OS verwendet, müssen Sie auch das NVIDIA Container Toolkit installieren.
Erstellen und senden Sie einen Job mit dem benutzerdefinierten VM-Image. Verwenden Sie dazu eine Compute Engine-Instanzvorlage. Legen Sie das Feld
installGpuDrivers
für den Job auffalse
(Standardeinstellung) fest.
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
Erstellen Sie eine JSON-Datei, die die Konfigurationsdetails des Jobs, die Unterfelder
type
undcount
des Feldsaccelerators[]
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 auftrue
gesetzt ist, ruft Batch die für den GPU-Typ, den Sie im Feldpolicy
angeben, erforderlichen Treiber von einem Drittanbieterstandort ab und installiert sie in Batch in Ihrem Namen. Wenn Sie dieses Feld auffalse
(Standardeinstellung) setzen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.GPU_TYPE
: der GPU-Typ. Mit dem Befehlgcloud 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 Zoneus-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 FeldallowedLocations[]
.
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 auftrue
gesetzt ist, ruft Batch die für den GPU-Typ, den Sie im Feldpolicy
angeben, erforderlichen Treiber von einem Drittanbieterstandort ab und installiert sie in Batch in Ihrem Namen. Wenn Sie dieses Feld auffalse
(Standardeinstellung) setzen, müssen Sie GPU-Treiber manuell installieren, um GPUs für diesen Job zu verwenden.GPU_TYPE
: der GPU-Typ. Mit dem Befehlgcloud 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 Zoneus-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 FeldallowedLocations[]
.
Nächste Schritte
- Wenn Probleme beim Erstellen oder Ausführen eines Jobs auftreten, lesen Sie die Informationen unter Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Joberstellungsoptionen