Eine nichtflüchtige Vertex AI-Ressource ist ein Cluster mit langer Laufzeit, den Sie zum Ausführen benutzerdefinierter Trainingsjobs und Pipeline-Ausführungen verwenden können. Wenn Sie eine nichtflüchtige Ressource für eine Pipeline-Ausführung verwenden, können Sie die Verfügbarkeit von Rechenressourcen sicherstellen und die Startzeit von Pipeline-Aufgaben verkürzen. Nichtflüchtige Ressourcen unterstützen alle VMs und GPUs, die von benutzerdefinierten Trainingsjobs unterstützt werden. Weitere Informationen zu nichtflüchtigen Ressourcen finden Sie unter Übersicht über nichtflüchtige Ressourcen.
Diese Seite enthält Anleitungen für Folgendes:
Hinweis
Bevor Sie eine Pipeline-Ausführung mit einer nichtflüchtigen Ressource erstellen können, müssen Sie die folgenden Voraussetzungen erfüllen.
Pipeline definieren und kompilieren
Definieren Sie Ihre Pipeline und kompilieren Sie dann die Pipeline-Definition 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 zum Erstellen einer nichtflüchtigen Ressource zu erhalten.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die
aiplatform.persistentResources.create
Berechtigung,
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
Verwenden Sie die folgenden Beispiele, um eine nichtflüchtige Ressource zu erstellen, die Sie mit einer Pipeline-Ausführung verknüpfen können. Weitere Informationen zum Erstellen nichtflüchtiger Ressourcen, siehe Nichtflüchtige Ressource erstellen.
gcloud
Verwenden Sie
den gcloud ai persistent-resources create Befehl
zusammen mit dem --enable-custom-service-account Flag, um eine nichtflüchtige Ressource zu erstellen, die Sie mit einer Pipeline-Ausführung verknüpfen 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 Flag --config 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: Eine eindeutige, vom Nutzer definierte ID für die nichtflüchtige Ressource. Sie muss mit einem Buchstaben beginnen, mit einem Buchstaben oder einer Zahl enden und darf nur Kleinbuchstaben, Ziffern und Bindestriche (-) enthalten.
- DISPLAY_NAME: Optional. Der Anzeigename der nichtflüchtigen Ressource.
- MACHINE_TYPE: Der zu verwendende Typ der virtuellen Maschine (VM)
. Eine Liste der unterstützten VMs finden Sie unter
Maschinentypen.
Dieses Feld entspricht dem
machineSpec.machineTypeFeld in derResourcePoolAPI-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
replicaCountFeld in derResourcePoolAPI-Nachricht. Sie müssen die Anzahl der Replikate angeben, wenn Sie die MIN_REPLICA_COUNT und MAX_REPLICA_COUNT Felder nicht angeben. - MIN_REPLICA_COUNT: Optional. Die Mindestanzahl an Replikaten, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um Autoscaling zu verwenden.
- MAX_REPLICA_COUNT: Optional. Die maximale Anzahl an Replikaten, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um Autoscaling zu verwenden.
- CONFIG: Pfad zur YAML-Konfigurationsdatei für nichtflüchtige Ressourcen, die eine Liste von
ResourcePoolSpezifikationen enthält. Wenn sowohl in der Konfigurationsdatei als auch in den Befehlszeilenargumenten eine Option angegeben ist, überschreiben die Befehlszeilenargumente die Konfigurationsdatei. Beachten Sie, dass Schlüssel mit Unterstrichen als ungültig betrachtet werden.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 nichtflüchtige Ressource erstellen möchten, die Sie mit einer Pipeline-Ausführung verwenden können, legen Sie denenable_custom_service_account
Parameter auf True im Objekt ResourceRuntimeSpec fest, während Sie die
nichtflüchtige Ressource erstellen.
from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec
my_example_resource = persistent_resource.PersistentResource.create(
persistent_resource_id='PERSISTENT_RESOURCE_ID',
display_name='DISPLAY_NAME',
resource_pools=[
ResourcePool(
machine_spec=MachineSpec(
machine_type='MACHINE_TYPE'
),
replica_count=REPLICA_COUNT
)
],
enable_custom_service_account=True,
)
Ersetzen Sie Folgendes:
- PERSISTENT_RESOURCE_ID: Eine eindeutige, vom Nutzer definierte ID für die
nichtflüchtige Ressource. Die ID darf nur Kleinbuchstaben, Ziffern und Bindestriche (
-) enthalten. Das erste Zeichen muss ein Kleinbuchstabe und das letzte Zeichen muss entweder ein Kleinbuchstabe oder eine Ziffer sein. - DISPLAY_NAME: Optional. Der Anzeigename der nichtflüchtigen Ressource.
- MACHINE_TYPE: Der zu verwendende Typ der virtuellen Maschine (VM)
. Eine Liste der unterstützten VMs finden Sie unter
Maschinentypen.
Dieses Feld entspricht dem Feld
machineSpec.machineTypein der API-NachrichtResourcePool. - REPLICA_COUNT: Die Anzahl der Replikate, die beim Erstellen dieses Ressourcenpools erzeugt werden sollen.
REST
Senden Sie zum Erstellen einer PersistentResource-Ressource, die Sie mit einer Pipeline-Ausführung verknüpfen können, eine POST-Anfrage mit der
persistentResources/create
-Methode. Legen Sie dabei den enable_custom_service_account-Parameter im Anfragetext auf
true fest.
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: Eine eindeutige, vom Nutzer definierte ID für die nichtflüchtige Ressource. Sie muss mit einem Buchstaben beginnen, mit einem Buchstaben oder einer Zahl enden und darf nur Kleinbuchstaben, Ziffern und Bindestriche (-) enthalten.
- DISPLAY_NAME: Optional. Der Anzeigename der nichtflüchtigen Ressource.
- MACHINE_TYPE: Der zu verwendende Typ der virtuellen Maschine (VM)
. Eine Liste der unterstützten VMs finden Sie unter
Maschinentypen.
Dieses Feld entspricht dem
machineSpec.machineTypeFeld in derResourcePoolAPI-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
replicaCountFeld in derResourcePoolAPI-Nachricht. Sie müssen die Anzahl der Replikate angeben, wenn Sie die MIN_REPLICA_COUNT und MAX_REPLICA_COUNT Felder nicht angeben. - MIN_REPLICA_COUNT: Optional. Die Mindestanzahl an Replikaten, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um Autoscaling zu verwenden.
- MAX_REPLICA_COUNT: Optional. Die maximale Anzahl an Replikaten, wenn Sie Autoscaling für den Ressourcenpool verwenden. Sie müssen sowohl MIN_REPLICA_COUNT als auch MAX_REPLICA_COUNT angeben, um 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": {
"service_account_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"
}
}
}
Pipeline-Ausführung mit der nichtflüchtigen Ressource erstellen
Zum Erstellen eines Pipelinejobs müssen Sie zuerst eine Pipeline-Spezifikation erstellen. Eine Pipeline-Spezifikation ist ein In-Memory-Objekt, das Sie durch Konvertieren einer kompilierten Pipeline-Definition erstellen.
Pipeline-Spezifikation erstellen
Folgen Sie dieser Anleitung, um eine In-Memory-Pipeline-Spezifikation zu erstellen, mit der Sie die Pipeline-Ausführung erstellen können:
Definieren Sie eine Pipeline und kompilieren Sie sie in eine YAML-Datei. Weitere Informationen zum Definieren und Kompilieren einer Pipeline finden Sie unter Pipeline erstellen.
Verwenden Sie das folgende Codebeispiel, um die kompilierte Pipeline-YAML-Datei in eine In-Memory-Pipeline-Spezifikation zu konvertieren.
import yaml with open("COMPILED_PIPELINE_PATH", "r") as stream: try: pipeline_spec = yaml.safe_load(stream) print(pipeline_spec) except yaml.YAMLError as exc: print(exc)Ersetzen Sie COMPILED_PIPELINE_PATH durch den lokalen Pfad zu Ihrer kompilierten Pipeline YAML-Datei.
Pipeline-Ausführung erstellen
Verwenden Sie das folgende Python-Codebeispiel, um eine Pipeline-Ausführung zu erstellen, die die nichtflüchtige Ressource verwendet:
# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1
from google.cloud.aiplatform_v1beta1.types import pipeline_job as pipeline_job_types
# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project='PROJECT_ID', location='LOCATION')
# Create the API Endpoint
client_options = {
"api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}
# Initialize the PipeLineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)
# Construct the runtime detail
pr_runtime_detail = pipeline_job_types.PipelineJob.RuntimeConfig.PersistentResourceRuntimeDetail(
persistent_resource_name=(
f"projects/PROJECT_NUMBER/"
f"locations/LOCATION/"
f"persistentResources/PERSISTENT_RESOURCE_ID"
),
task_resource_unavailable_wait_time_ms=WAIT_TIME,
task_resource_unavailable_timeout_behavior='TIMEOUT_BEHAVIOR',
)
# Construct the default runtime configuration block
default_runtime = pipeline_job_types.PipelineJob.RuntimeConfig.DefaultRuntime(
persistent_resource_runtime_detail=pr_runtime_detail
)
# Construct the main runtime configuration
runtime_config = pipeline_job_types.PipelineJob.RuntimeConfig(
gcs_output_directory='PIPELINE_ROOT',
parameter_values={
'project_id': 'PROJECT_ID'
},
default_runtime=default_runtime
)
# Construct the pipeline job object
pipeline_job = pipeline_job_types.PipelineJob(
display_name='PIPELINE_DISPLAY_NAME',
pipeline_spec=PIPELINE_SPEC,
runtime_config=runtime_config,
)
# Construct the request
parent_path = f"projects/PROJECT_ID/locations/LOCATION"
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=parent_path,
pipeline_job=pipeline_job,
)
# Make the API Call to create the pipeline job
response = client.create_pipeline_job(request=request)
# Construct the Google Cloud console link
job_id = response.name.split('/')[-1]
console_link = (
f"https://console.cloud.google.com/vertex-ai/locations/LOCATION"
f"/pipelines/runs/{job_id}"
f"?project=PROJECT_ID"
)
# Print the Google Cloud console link to the pipeline run
print(f"View Pipeline Run in Google Cloud console: {console_link}")
Ersetzen Sie Folgendes:
PROJECT_ID: Das Google Cloud Projekt, in dem die Pipeline ausgeführt wird.
LOCATION: Die Region, in der die Pipeline-Ausführung 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.initfestgelegten Standardstandort.PERSISTENT_RESOURCE_ID: Die ID der nichtflüchtigen Ressource, die Sie erstellt haben.
PROJECT_NUMBER: Die Projektnummer für Ihr Google Cloud Projekt. Diese unterscheidet sich von der Projekt-ID. Sie finden die Projekt nummer in der Console auf der Seite Projekteinstellungen Google Cloud .
COMPILED_PIPELINE_PATH: Der Pfad zu Ihrer kompilierten Pipeline-YAML Datei. Dies kann ein lokaler Pfad oder ein Google Cloud Storage-URI sein.
WAIT_TIME: Die Wartezeit in Millisekunden, wenn die nichtflüchtige Ressource nicht verfügbar ist.
TIMEOUT_BEHAVIOR: Das Fallback-Verhalten der Pipeline-Aufgabe wenn die WAIT_TIME überschritten wird. Mögliche Werte:
FAIL: Die Pipeline-Aufgabe schlägt fehl, nachdem die Wartezeit überschritten wurde.FALL_BACK_TO_ON_DEMAND: Die Pipeline-Aufgabe wird mit den standardmäßigen Vertex AI-Trainingsressourcen fortgesetzt, ohne die nichtflüchtige Ressource zu verwenden.
PIPELINE_ROOT: Der Pfad zu einem Cloud Storage-URI zum Speichern der Artefakte Ihrer Pipeline-Ausführung.
PIPELINE_DISPLAY_NAME: Der Name der Pipeline-Ausführung. Die maximale Länge für einen Anzeigenamen beträgt 128 UTF-8-Zeichen.
PIPELINE_SPEC: Die Pipeline-Spezifikation, die Sie unter Pipeline-Spezifikation erstellen erstellt haben.