Private Service Connect-Schnittstelle für eine Pipeline konfigurieren

Sie können eine private Verbindung für Ihren Pipelinelauf mit einer Private Service Connect-Schnittstelle konfigurieren. Google empfiehlt, für die private Konnektivität Vertex AI Private Service Connect zu verwenden, da dadurch die Wahrscheinlichkeit einer IP-Ausschöpfung verringert und transitives Peering unterstützt wird.

Vertex AI Pipelines verwendet die zugrunde liegende Private Service Connect-Schnittstelleninfrastruktur für das Training, um die Verbindungsdetails an den benutzerdefinierten Trainingsjob weiterzuleiten. Weitere Informationen zu den Einschränkungen und Preisen für die Verwendung von Private Service Connect-Schnittstellen mit benutzerdefiniertem Training finden Sie unter Private Service Connect-Schnittstelle für Vertex AI-Training verwenden.

Beschränkungen

Private Service Connect-Schnittstellen unterstützen externe IP-Adressen nicht.

Preise

Die Preise für Private Service Connect-Schnittstellen werden auf der Seite Alle Netzwerkpreise beschrieben.

Hinweis

Wenn Sie eine Private Service Connect-Schnittstelle mit Vertex AI-Pipelines verwenden möchten, müssen Sie zuerst eine Private Service Connect-Schnittstelle für Vertex AI-Ressourcen einrichten.

Pipelinelauf mit Private Service Connect-Schnittstellen erstellen

Um einen Pipeline-Job zu erstellen, müssen Sie zuerst eine Pipeline-Spezifikation erstellen. Eine Pipeline-Spezifikation ist ein In-Memory-Objekt, das Sie durch Konvertieren einer kompilierten Pipelinedefinition erstellen.

Pipelinespezifikation erstellen

So erstellen Sie eine In-Memory-Pipelinespezifikation, mit der Sie die Pipelineausführung erstellen können:

  1. 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.

  2. Mit dem folgenden Codebeispiel können Sie die kompilierte YAML-Datei der Pipeline in eine In-Memory-Pipelinespezifikation 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 zur kompilierten Pipeline-YAML-Datei.

Pipelineausführung erstellen

Verwenden Sie die folgenden Beispiele, um eine Pipelineausführung mit Private Service Connect-Schnittstellen zu erstellen:

Python

Wenn Sie eine Pipelineausführung mit Private Service Connect-Schnittstellen mit dem Vertex AI SDK für Python erstellen möchten, konfigurieren Sie die Ausführung mit der aiplatform_v1beta1/services/pipeline_service-Definition.

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1

# 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 request
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1beta1.PipelineJob(
    display_name="DISPLAY_NAME",
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=aiplatform_v1beta1.PipelineJob.RuntimeConfig(
        gcs_output_directory="OUTPUT_DIRECTORY",
    ),
    psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
        network_attachment="NETWORK_ATTACHMENT_NAME"
    ),
)

# Make the API call
response = client.create_pipeline_job(request=request)

# Print the response
print(response)

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die Projekt-ID des Projekts, in dem Sie die Pipelineausführung erstellen möchten.
  • LOCATION: Die Region, in der Sie die Pipelineausführung erstellen möchten.
  • DISPLAY_NAME: Der Name des Pipelinejobs. Der Anzeigename darf maximal 128 UTF-8-Zeichen lang sein.
  • PIPELINE_SPEC: Die Pipeline-Spezifikation, die Sie unter Pipeline-Spezifikation erstellen erstellt haben.
  • OUTPUT_DIRECTORY: Der URI des Cloud Storage-Buckets zum Speichern von Ausgabeartefakten. Dieser Pfad ist das Stammausgabeverzeichnis der Pipeline und wird zum Generieren der Pfade der Ausgabeartefakte verwendet.
  • NETWORK_ATTACHMENT_NAME: Der Name der Compute Engine-Netzwerkverbindung, die an die PipelineJob-Ressource angehängt werden soll. Damit Sie die Netzwerkanhänge abrufen können, müssen Sie die Schritte im Abschnitt Vorbereitung ausgeführt haben. Weitere Informationen zum Netzwerkanschluss finden Sie unter VPC-Netzwerk, Subnetz und Netzwerkanschluss einrichten.

REST

Senden Sie zum Erstellen einer Pipelineausführung eine POST-Anfrage mit der Methode pipelineJobs.create.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Die Projekt-ID des Projekts, in dem Sie die Pipelineausführung erstellen möchten.
  • LOCATION: Die Region, in der Sie die Pipelineausführung erstellen möchten.
  • DISPLAY_NAME: Der Name des Pipelinejobs. Die maximale Länge eines Anzeigenamens beträgt 128 UTF-8-Zeichen.
  • PIPELINE_SPEC: Die Pipeline-Spezifikation, die Sie unter Pipeline-Spezifikation erstellen erstellt haben.
  • OUTPUT_DIRECTORY: Der URI des Cloud Storage-Buckets zum Speichern von Ausgabeartefakten. Dieser Pfad ist das Stammausgabeverzeichnis der Pipeline und wird zum Generieren der Pfade der Ausgabeartefakte verwendet.
  • NETWORK_ATTACHMENT_NAME: Der Name der Compute Engine-Netzwerkverbindung, die an die PipelineJob-Ressource angehängt werden soll. Damit Sie die Netzwerkanhänge abrufen können, müssen Sie die Schritte im Abschnitt Vorbereitung ausgeführt haben. Weitere Informationen zum Netzwerkanschluss finden Sie unter VPC-Netzwerk, Subnetz und Netzwerkanschluss einrichten.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs

JSON-Text der Anfrage:

{
  "display_name": "DISPLAY_NAME",
  "pipeline_spec": "PIPELINE_SPEC",
  "runtime_config": {
       "gcs_output_directory": "OUTPUT_DIRECTORY",
   },
   "psc_interface_config": {
       "network_attachment": "NETWORK_ATTACHMENT_NAME"
   }
}

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/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs"

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/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs" | Select-Object -Expand Content

Die Ausgabe sieht in etwa so aus: PIPELINE_JOB_ID steht für die ID der Pipelineausführung und SERVICE_ACCOUNT_NAME für das Dienstkonto, mit dem die Pipeline ausgeführt wurde.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/pipelineJobs/PIPELINE_JOB_ID",
  "displayName": "DISPLAY_NAME",
  "createTime": "20xx-01-01T00:00:00.000000Z",
  "updateTime": "20xx-01-01T00:00:00.000000Z",
  "pipelineSpec": PIPELINE_SPEC,
  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "VERTEX_AI_PIPELINES_RUN_BILLING_ID"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "OUTPUT_DIRECTORY"
  },
  "serviceAccount": "SERVICE_ACCOUNT_NAME"
  "pscInterfaceConfig": {
    "networkAttachment": "NETWORK_ATTACHMENT_NAME"
  }
}