Sie können private Verbindungen für Ihren Pipeline-Lauf mit einer Private Service Connect-Schnittstelle konfigurieren. Google empfiehlt die Verwendung von Vertex AI Private Service Connect für private Verbindungen, da dadurch die Wahrscheinlichkeit einer IP-Erschö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 zu übergeben. 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.
Hinweise
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.
Pipelineausführung mit Private Service Connect-Schnittstellen erstellen
Um einen Pipeline-Lauf zu erstellen, 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 Pipelineausfü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 YAML-Datei der Pipeline in eine Pipeline-Spezifikation im Arbeitsspeicher 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 YAML-Datei für die Pipeline.
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 Definition aiplatform_v1/services/pipeline_service
.
# Import aiplatform and the appropriate API version v1
from google.cloud import aiplatform, aiplatform_v1
# 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_v1.PipelineServiceClient(client_options=client_options)
PSCI_INTERFACE_CONFIG = {
"network_attachment": "NETWORK_ATTACHMENT_NAME",
"dns_peering_configs": [
{
"domain": "DNS_DOMAIN",
"target_project": "TARGET_PROJECT",
"target_network": "TARGET_NETWORK"
}
]
}
# Construct the request
request = aiplatform_v1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1.PipelineJob(
display_name="DISPLAY_NAME",
pipeline_spec=PIPELINE_SPEC,
runtime_config=aiplatform_v1.PipelineJob.RuntimeConfig(
gcs_output_directory="OUTPUT_DIRECTORY",
),
psc_interface_config=aiplatform_v1.PscInterfaceConfig(
PSCI_INTERFACE_CONFIG
),
)
# 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 den Pipeline-Lauf erstellen möchten.
- LOCATION: Die Region, in der Sie den Pipelineausführung erstellen möchten.
- DISPLAY_NAME: Der Name des Pipelinejobs. 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.
- OUTPUT_DIRECTORY: Der URI des Cloud Storage-Bucket zum Speichern von Ausgabeartefakten. Dieser Pfad ist das Stammverzeichnis für die Pipelineausgabe und wird zum Generieren der Pfade von Ausgabeartefakten verwendet.
- NETWORK_ATTACHMENT_NAME: Der Name der Compute Engine-Netzwerkverbindung, die an die
PipelineJob
-Ressource angehängt werden soll. Um die Netzwerkverbindung zu erhalten, müssen Sie die Schritte im Abschnitt Vorbereitung ausgeführt haben. Weitere Informationen zum Netzwerkanhang finden Sie unter VPC-Netzwerk, Subnetz und Netzwerkanhang einrichten. - DNS_DOMAIN: Der DNS-Name der privaten Cloud DNS-Zone, die Sie beim Einrichten des privaten DNS-Peerings erstellt haben.
- TARGET_PROJECT: Das Projekt, in dem das VPC-Netzwerk gehostet wird.
- TARGET_NETWORK: der Name des VPC-Netzwerks.
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 den Pipeline-Lauf erstellen möchten.
- LOCATION: Die Region, in der Sie den Pipelineausführung erstellen möchten.
- DISPLAY_NAME: Der Name des Pipelinejobs. 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.
- OUTPUT_DIRECTORY: Der URI des Cloud Storage-Bucket zum Speichern von Ausgabeartefakten. Dieser Pfad ist das Stammverzeichnis für die Pipelineausgabe und wird zum Generieren der Pfade von Ausgabeartefakten verwendet.
- NETWORK_ATTACHMENT_NAME: Der Name der Compute Engine-Netzwerkverbindung, die an die
PipelineJob
-Ressource angehängt werden soll. Um die Netzwerkverbindung zu erhalten, müssen Sie die Schritte im Abschnitt Vorbereitung ausgeführt haben. Weitere Informationen zum Netzwerkanhang finden Sie unter VPC-Netzwerk, Subnetz und Netzwerkanhang einrichten. - DNS_DOMAIN: Der DNS-Name der privaten Cloud DNS-Zone, die Sie beim Einrichten des privaten DNS-Peerings erstellt haben.
- TARGET_PROJECT: Das Projekt, in dem das VPC-Netzwerk gehostet wird.
- TARGET_NETWORK: der Name des VPC-Netzwerks.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/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", "dns_peering_configs": [ { "domain": "DNS_DOMAIN", "target_project": "TARGET_PROJECT", "target_network": "TARGET_NETWORK" } ] } }
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/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/v1/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 des Pipeline-Laufs und SERVICE_ACCOUNT_NAME für das Dienstkonto, das zum Ausführen der Pipeline verwendet wird.
{ "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", "dnsPeeringConfigs": [ { "domain": "DNS_DOMAIN", "targetProject": "TARGET_PROJECT", "targetNetwork": "TARGET_NETWORK" } ] } }