Pipelineausführung auf einer nichtflüchtigen Ressource konfigurieren

Eine nichtflüchtige Vertex AI-Ressource ist ein langlebiger Cluster, mit dem Sie benutzerdefinierte Trainingsjobs und Pipelineausführungen ausführen können. Wenn Sie eine nichtflüchtige Ressource für einen Pipelinelauf verwenden, können Sie die Verfügbarkeit von Rechenressourcen sicherstellen und die Startzeit der Pipelineaufgabe reduzieren. Dauerhafte Ressourcen unterstützen alle VMs und GPUs, die von benutzerdefinierten Trainingsjobs unterstützt werden. Weitere Informationen zu nichtflüchtigen Ressourcen

Diese Seite enthält Anleitungen für Folgendes:

Hinweise

Bevor Sie einen Pipelinelauf mit einer persistenten Ressource erstellen können, müssen Sie die folgenden Voraussetzungen erfüllen.

Pipeline definieren und kompilieren

Definieren Sie Ihre Pipeline und kompilieren Sie die Pipelinedefinition in eine YAML-Datei. Weitere Informationen zum Definieren und Kompilieren einer Pipeline finden Sie unter Pipeline erstellen.

Erforderliche IAM-Rollen

Bitten Sie Ihren Administrator, Ihnen die Rolle Vertex AI Administrator (roles/aiplatform.admin) für Ihr Projekt zu gewähren, um die Berechtigung zu erhalten, die Sie zum Erstellen einer nichtflüchtigen Ressource benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigung aiplatform.persistentResources.create, die zum Erstellen einer nichtflüchtigen Ressource erforderlich ist.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Nichtflüchtige Ressource erstellen

Mit den folgenden Beispielen können Sie eine nichtflüchtige Ressource erstellen, die Sie mit einer Pipelineausführung verknüpfen können. Weitere Informationen zum Erstellen nichtflüchtiger Ressourcen finden Sie unter Nichtflüchtige Ressourcen erstellen.

gcloud

Verwenden Sie den Befehl gcloud ai persistent-resources create mit dem Flag --enable-custom-service-account, um eine persistente Ressource zu erstellen, die Sie einem Pipelinelauf zuordnen können.

Eine nichtflüchtige Ressource kann einen oder mehrere Ressourcenpools enthalten. Geben Sie mehrere --resource-pool-spec-Flags an, um mehrere Ressourcenpools in einer nichtflüchtigen Ressource zu erstellen.

Sie können alle Ressourcenpoolkonfigurationen als Teil der Befehlszeile angeben oder das --config-Flag verwenden, um den Pfad zu einer YAML-Datei anzugeben, die die Konfigurationen enthält.

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • PROJECT_ID: Die Projekt-ID des Google Cloud-Projekts, in dem Sie die nichtflüchtige Ressource erstellen möchten.
  • LOCATION: Die Region, in der Sie die nichtflüchtige Ressource erstellen möchten. Eine Liste der unterstützten Regionen finden Sie unter Featureverfügbarkeit.
  • PERSISTENT_RESOURCE_ID: die ID der nichtflüchtigen Ressource.
  • DISPLAY_NAME: Optional. Der Anzeigename der nichtflüchtigen Ressource.
  • MACHINE_TYPE: Der zu verwendende VM-Typ. Eine Liste der unterstützten VMs finden Sie unter Maschinentypen. Dieses Feld entspricht dem Feld machineSpec.machineType in der ResourcePool-API-Nachricht.
  • REPLICA_COUNT: Optional. Die Anzahl der Replikate, die für den Ressourcenpool erstellt werden sollen, wenn Sie kein Autoscaling verwenden möchten. Dieses Feld entspricht dem Feld replicaCount in der ResourcePool-API-Nachricht. Sie müssen die Anzahl der Replikate angeben, wenn Sie die Felder MIN_REPLICA_COUNT und MAX_REPLICA_COUNT nicht angeben.
  • MIN_REPLICA_COUNT: Optional. Die Mindestanzahl der Replikate, wenn Sie das Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um das Autoscaling zu verwenden.
  • MAX_REPLICA_COUNT: Optional. Die maximale Anzahl der Replikate, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um das Autoscaling zu verwenden.
  • CONFIG: Pfad zur YAML-Konfigurationsdatei für nichtflüchtige Ressourcen mit einer Liste von ResourcePool-Spezifikationen. Wenn sowohl in der Konfigurationsdatei als auch in den Befehlszeilenargumenten eine Option angegeben ist, überschreiben die Befehlszeilenargumente die Konfigurationsdatei. Schlüssel mit Unterstrichen sind ungültig.

    Beispiel für eine YAML-Konfigurationsdatei:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" \
    --enable-custom-service-account

Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" `
    --enable-custom-service-account

Windows (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,machine-type=MACHINE_TYPE,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT" ^
    --enable-custom-service-account

Sie sollten eine Antwort ähnlich der folgenden erhalten:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/PROJECT_NUMBER/locations/us-central1/persistentResources/mypersistentresource/operations/OPERATION_ID] is submitted successfully.

You can view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/OPERATION_ID

Beispiel eines gcloud-Befehls:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"
    --enable-custom-service-account

Erweiterte gcloud-Konfigurationen

Wenn Sie Konfigurationsoptionen angeben möchten, die in den vorhergehenden Beispielen nicht verfügbar sind, können Sie mit dem Flag --config den Pfad zu einer config.yaml-Datei in Ihrer lokalen Umgebung angeben, die die Felder von persistentResourcesenthält. Beispiele:

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG
    --enable-custom-service-account

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Wenn Sie eine persistente Ressource erstellen möchten, die Sie für einen Pipelinelauf verwenden können, legen Sie beim Erstellen der persistenten Ressource im ResourceRuntimeSpec-Objekt den Parameter enable_custom_service_account auf True fest.

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=PERSISTENT_RESOURCE_ID,
    display_name=DISPLAY_NAME,
    resource_pools=[
        resource_pool.ResourcePool(
            machine_spec=machine_spec.MachineSpec(
                machine_type=MACHINE_TYPE,
            ),
            replica_count=REPLICA_COUNT,
        )
    ],
    resource_runtime_spec=resource_runtime_spec.ResourceRuntimeSpec(
        enable_custom_service_account=True,
    ),
)

Ersetzen Sie Folgendes:

  • PERSISTENT_RESOURCE_ID: Die ID der nichtflüchtigen Ressource.
  • DISPLAY_NAME: Optional. Der Anzeigename der persistenten Ressource.
  • MACHINE_TYPE: Der zu verwendende VM-Typ (virtuelle Maschine). Eine Liste der unterstützten VMs finden Sie unter Maschinentypen. Dieses Feld entspricht dem Feld machineSpec.machineType in der ResourcePool-API-Nachricht.
  • REPLICA_COUNT: Die Anzahl der Replikate, die beim Erstellen dieses Ressourcenpools erzeugt werden sollen.

REST

Wenn Sie eine PersistentResource-Ressource erstellen möchten, die Sie einer Pipelineausführung zuordnen können, senden Sie eine POST-Anfrage mit der Methode persistentResources/create. Der Parameter enable_custom_service_account muss im Anfragetext auf true festgelegt sein.

Eine nichtflüchtige Ressource kann einen oder mehrere Ressourcenpools enthalten. Sie können jeden Ressourcenpool so konfigurieren, dass entweder eine feste Anzahl von Replikaten oder Autoscaling verwendet wird.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Die Projekt-ID des Google Cloud-Projekts, in dem Sie die nichtflüchtige Ressource erstellen möchten.
  • LOCATION: Die Region, in der Sie die nichtflüchtige Ressource erstellen möchten. Eine Liste der unterstützten Regionen finden Sie unter Featureverfügbarkeit.
  • PERSISTENT_RESOURCE_ID: die ID der nichtflüchtigen Ressource.
  • DISPLAY_NAME: Optional. Der Anzeigename der nichtflüchtigen Ressource.
  • MACHINE_TYPE: Der zu verwendende VM-Typ. Eine Liste der unterstützten VMs finden Sie unter Maschinentypen. Dieses Feld entspricht dem Feld machineSpec.machineType in der ResourcePool-API-Nachricht.
  • REPLICA_COUNT: Optional. Die Anzahl der Replikate, die für den Ressourcenpool erstellt werden sollen, wenn Sie kein Autoscaling verwenden möchten. Dieses Feld entspricht dem Feld replicaCount in der ResourcePool-API-Nachricht. Sie müssen die Anzahl der Replikate angeben, wenn Sie die Felder MIN_REPLICA_COUNT und MAX_REPLICA_COUNT nicht angeben.
  • MIN_REPLICA_COUNT: Optional. Die Mindestanzahl der Replikate, wenn Sie das Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um das Autoscaling zu verwenden.
  • MAX_REPLICA_COUNT: Optional. Die maximale Anzahl der Replikate, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um das Autoscaling zu verwenden.

HTTP-Methode und URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

JSON-Text anfordern:

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE"
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      }
    }
  ],
  "resource_runtime_spec": {
    "enable_custom_service_account: true
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/persistentResources/mypersistentresource/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

Pipelineausführung mit der nichtflüchtigen Ressource erstellen

Im folgenden Codebeispiel wird eine Pipelineausführung erstellt, die die persistente Ressource verwendet:

  job = aiplatform.PipelineJob(display_name = 'DISPLAY_NAME',
  template_path = 'COMPILED_PIPELINE_PATH',
  pipeline_root = 'PIPELINE_ROOT',
  project = 'PROJECT_ID',
  location = 'LOCATION',
  default_runtime = {
    "persistentResourceRuntimeDetail": {
    "persistentResourceName": "PERSISTENT_RESOURCE_ID",
    "taskResourceUnavailableWaitTimeMs": WAIT_TIME,
    "taskResourceUnavailableTimeoutBehavior": TIMEOUT_BEHAVIOR,
    }
  }

Ersetzen Sie Folgendes:

  • DISPLAY_NAME: Der Name der Pipeline. Dieser wird in der Google Cloud Console angezeigt.

  • COMPILED_PIPELINE_PATH: Der Pfad zur kompilierten Pipeline-YAML-Datei. Dies kann ein lokaler Pfad oder ein Google Cloud Storage-URI sein.

  • PIPELINE_ROOT: Geben Sie einen Cloud Storage-URI an, um die Artefakte des Pipelinelaufs zu speichern.

  • PROJECT_ID: Das Google Cloud Projekt, in dem diese Pipeline ausgeführt wird.

  • LOCATION: Die Region, in der die Pipeline ausgeführt wird. Weitere Informationen zu den Regionen, in denen Vertex AI Pipelines verfügbar ist, finden Sie in der Anleitung zu Vertex AI-Standorten. Wenn Sie diesen Parameter nicht festlegen, verwendet Vertex AI Pipelines den in aiplatform.init festgelegten Standardstandort.

  • PERSISTENT_RESOURCE_ID: Die ID der von Ihnen erstellten nichtflüchtigen Ressource.

  • WAIT_TIME: Die Zeit in Millisekunden, die gewartet wird, wenn die persistente Ressource nicht verfügbar ist.

  • TIMEOUT_BEHAVIOR: Gibt das Fallback-Verhalten der Pipelineaufgabe an, falls WAIT_TIME überschritten wird. Mögliche Werte:

    • FAIL Die Pipeline-Aufgabe schlägt fehl, nachdem die Wartezeit überschritten wurde.

    • FALL_BACK_TO_ON_DEMAND Der Pipeline-Task wird weiterhin mit den standardmäßigen Vertex AI-Trainingsressourcen ausgeführt, ohne die persistente Ressource zu verwenden.

Nächste Schritte