Reservierungen mit Training verwenden

In diesem Dokument wird erläutert, wie Sie Compute Engine-Reservierungen verwenden, um sicherzustellen, dass für Ihre serverlosen Trainingsjobs die erforderlichen virtuellen Maschinenressourcen (VM) verfügbar sind.

Reservierungen sind eine Funktion von Compute Engine. Sie sorgen dafür, dass die Ressourcen jederzeit verfügbar sind, die Sie zum Erstellen von VMs mit derselben Hardware (Arbeitsspeicher und vCPUs) und optionalen Ressourcen (CPUs, GPUs, TPUs und lokalen SSD-Laufwerken) benötigen.

Wenn Sie eine Reservierung erstellen, prüft Compute Engine, ob die angeforderte Kapazität in der angegebenen Zone verfügbar ist. Wenn dies der Fall ist, reserviert Compute Engine die Ressourcen, erstellt die Reservierung und Folgendes geschieht:

  • Sie können die reservierten Ressourcen sofort nutzen und sie bleiben verfügbar, bis Sie die Reservierung löschen.
  • Ihnen werden die reservierten Ressourcen zum gleichen On-Demand-Tarif wie für laufende VMs in Rechnung gestellt, einschließlich aller anwendbaren Rabatte, bis die Reservierung gelöscht wird. Für eine VM, die eine Reservierung nutzt, fallen keine separaten Gebühren an. Ihnen werden nur die Ressourcen außerhalb der Reservierung in Rechnung gestellt, z. B. Laufwerke oder IP-Adressen. Weitere Informationen finden Sie unter Preise für Reservierungen.

Beschränkungen und Anforderungen

Beachten Sie die folgenden Einschränkungen und Anforderungen, wenn Sie Compute Engine-Reservierungen mit der Agent Platform verwenden:

  • Die Agent Platform kann nur Reservierungen für CPUs, GPU-VMs, oder TPUs (Vorschau) verwenden.
  • Die Agent Platform kann keine Reservierungen von VMs nutzen, denen lokale SSD-Laufwerke manuell zugeordnet sind.
  • Die Verwendung von Compute Engine-Reservierungen mit der Agent Platform wird nur für serverloses Training, Inferenz und die Gemini Enterprise Agent Platform Workbench (Vorschau) unterstützt.
  • Die VM-Attribute einer Reservierung müssen genau mit Ihrer Agent Platform-Arbeitslast übereinstimmen damit die Reservierung genutzt werden kann. Wenn beispielsweise in einer Reservierung der Maschinentyp a2-ultragpu-8g angegeben ist, kann die Agent Platform-Arbeitslast die Reservierung nur nutzen, wenn sie ebenfalls den Maschinentyp a2-ultragpu-8g verwendet. Weitere Informationen finden Sie unter Anforderungen.
  • Wenn Sie eine freigegebene Reservierung von GPU-VMs oder TPUs nutzen möchten, müssen Sie sie über das Inhaber projekt oder ein Nutzerprojekt nutzen, für das die Reservierung freigegeben ist. Weitere Informationen finden Sie unter Funktionsweise freigegebener Reservierungen.
  • Um regelmäßige Updates Ihrer Agent Platform-Bereitstellungen zu ermöglichen, empfehlen wir, die Anzahl der VMs für jede gleichzeitige Bereitstellung um mindestens eine VM zu erhöhen.
  • Flex Start für Dynamic Workload Scheduler und das Ausführen von Trainingsjobs auf einer nichtflüchtigen Ressource werden beide unterstützt, außer wenn Sie Compute Engine Reservierungen mit dem Agent Platform-Training verwenden.

Abrechnung

Wenn Sie Compute Engine-Reservierungen verwenden, werden Ihnen Folgendes in Rechnung gestellt:

  • Compute Engine-Preise für die Compute Engine-Ressourcen, einschließlich aller anwendbaren Rabatte für zugesicherte Nutzung (Committed Use Discount, CUD). Siehe Compute Engine-Preise.
  • Zusätzlich zur Nutzung der Infrastruktur fallen Gebühren für die Verwaltung des serverlosen Trainings der Agent Platform an. Weitere Informationen finden Sie unter Preise für benutzerdefinierte Modelle.

Hinweis

Verbrauch einer Reservierung zulassen

Bevor Sie eine Reservierung von CPUs, GPU-VMs oder TPUs nutzen, müssen Sie die Freigaberichtlinie festlegen, damit die Agent Platform die Reservierung nutzen kann. Verwenden Sie dazu eine der folgenden Methoden:

Nutzung beim Erstellen einer Reservierung zulassen

Wenn Sie eine Reservierung für ein einzelnes Projekt oder eine freigegebene Reservierung von GPU-VMs erstellen, können Sie der Agent Platform erlauben, die Reservierung wie folgt zu nutzen:

  • Wenn Sie die Google Cloud Console verwenden, wählen Sie im Bereich Google Cloud-Dienste die Option Reservierung teilen aus.
  • Wenn Sie die Google Cloud CLI verwenden, fügen Sie das --reservation-sharing-policy Flag mit dem Wert ALLOW_ALL hinzu.
  • Wenn Sie die REST API verwenden, fügen Sie im Anfragetext das serviceShareType Feld mit dem Wert ALLOW_ALL ein.

Nutzung einer bestehenden Reservierung zulassen

Sie können eine automatisch erstellte Reservierung von GPU-VMs oder TPUs für eine zukünftige Reservierung erst nach der Startzeit der Reservierung ändern.

Wenn Sie der Agent Platform erlauben möchten, eine bestehende Reservierung zu nutzen, verwenden Sie eine der folgenden Methoden:

Prüfen, ob eine Reservierung genutzt wird

Informationen zum Prüfen, ob die Reservierung genutzt wird, finden Sie in der Compute Engine-Dokumentation unter Nutzung von Reservierungen prüfen.

Serverlosen Trainingsjob mit einer Reservierung erstellen

Verwenden Sie die REST API, um einen serverlosen Trainingsjob für die Gemini Enterprise Agent Platform zu erstellen, der eine Compute Engine-Reservierung von GPU-VMs nutzt.

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der der Container oder das Python-Paket ausgeführt wird.
  • PROJECT_ID: Das Projekt, in dem die Reservierung erstellt wurde. Wenn Sie eine freigegebene Reservierung aus einem anderen Projekt nutzen möchten, müssen Sie die Reservierung für dieses Projekt freigeben. Weitere Informationen finden Sie unter Nutzerprojekte in einer freigegebenen Reservierung ändern.
  • JOB_NAME: erforderlich. Ein Anzeigename für den CustomJob.
  • MACHINE_TYPE: Der Maschinentyp, der für den Job verwendet werden soll. Die Standardeinstellung ist n1-standard-2. Weitere Informationen zu den unterstützten Maschinentypen finden Sie unter Rechenressourcen für benutzerdefiniertes Training konfigurieren.
  • ACCELERATOR_TYPE: Der Typ des Beschleunigers, der an die Maschine angehängt werden soll. Weitere Informationen zum GPU-Typ, der von den einzelnen Maschinentypen unterstützt wird, finden Sie unter GPUs für Rechenarbeitslasten.
  • ACCELERATOR_COUNT: Die Anzahl der Beschleuniger, die an die Maschine angehängt werden sollen.
  • Definieren Sie den benutzerdefinierten Trainingsjob:
    • RESERVATION_AFFINITY_TYPE: Muss ANY_RESERVATION, SPECIFIC_RESERVATION oder NO_RESERVATION sein.

      • ANY_RESERVATION bedeutet, dass die VMs Ihres customJob automatisch jede Reservierung mit übereinstimmenden Attributen nutzen können.
      • SPECIFIC_RESERVATION bedeutet, dass die VMs Ihres customJob nur eine Reservierung nutzen können, auf die die VMs ausdrücklich namentlich ausgerichtet sind.
      • NO_RESERVATION bedeutet, dass die VMs Ihres customJob keine Reservierungen nutzen können. Wenn Sie NO_RESERVATION angeben, hat das denselben Effekt wie das Weglassen einer Reservierungsaffinitätsspezifikation.
    • ZONE: Die Zone, in der die Reservierung erstellt wurde.
    • RESERVATION_NAME: Der Name Ihrer Reservierung.
    • DISK_TYPE: Optional. Der Typ des Bootlaufwerks, das für den Job verwendet werden soll, entweder pd-standard (Standardeinstellung) oder pd-ssd. Weitere Informationen zu Laufwerkstypen
    • DISK_SIZE: Optional. Die Größe des Bootlaufwerks in GB, das für den Job verwendet werden soll. Der Standardwert ist 100.
    • REPLICA_COUNT: Die Anzahl der zu verwendenden Worker-Replikate. In den meisten Fällen ist dies auf 1 für den ersten Worker-Pool festgelegt.
    • Wenn Ihre Trainingsanwendung in einem benutzerdefinierten Container ausgeführt wird, geben Sie Folgendes an:
      • CUSTOM_CONTAINER_IMAGE_URI: Der URI eines Container-Images in Artifact Registry oder Docker Hub, der auf jedem Worker-Replikat ausgeführt werden soll.
      • CUSTOM_CONTAINER_COMMAND: Optional. Der Befehl, der beim Start des Containers aufgerufen werden soll. Mit diesem Befehl wird der Standardeinstiegspunkt des Containers überschrieben.
      • CUSTOM_CONTAINER_ARGS: Optional. Die Argumente, die beim Starten des Containers übergeben werden.
    • Wenn Ihre Trainingsanwendung ein Python-Paket ist, das in einem vordefinierten Container ausgeführt wird, geben Sie Folgendes an:
      • EXECUTOR_IMAGE_URI: Der URI des Container-Images, in dem der bereitgestellte Code ausgeführt wird. Siehe Verfügbare vordefinierte Container für das Training.
      • PYTHON_PACKAGE_URIS: Durch Kommas getrennte Liste der Cloud Storage-URIs, die die Python-Paketdateien angeben, wobei es sich um das Trainingsprogramm und die abhängigen Pakete handelt. Die maximale Anzahl der Paket-URIs beträgt 100.
      • PYTHON_MODULE: Der Name des Python-Moduls, der nach der Installation der Pakete ausgeführt werden soll.
      • PYTHON_PACKAGE_ARGS: Optional. Befehlszeilenargumente, die an das Python-Modul übergeben werden sollen.
    • TIMEOUT: Optional. Die maximale Ausführungszeit für den Job.
  • Geben Sie LABEL_NAME und LABEL_VALUE für alle Labels an, die Sie auf diesen benutzerdefinierten Job anwenden möchten.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

JSON-Text der Anfrage:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "acceleratorType": "ACCELERATOR_TYPE",
          "acceleratorCount": ACCELERATOR_COUNT,
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            // Use the following key and values only if
            // the reservationAffinityType is SPECIFIC_RESERVATION.
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
            ]
          },
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Die Antwort enthält Informationen zu Spezifikationen sowie die TRAININGPIPELINE_ID.

Nächste Schritte