Puedes configurar la conectividad privada para la ejecución de tu canalización con una interfaz de Private Service Connect. Google recomienda usar Private Service Connect de Gemini Enterprise Agent Platform para la conectividad privada, ya que reduce las posibilidades de agotamiento de IP y admite el intercambio de tráfico transitivo.
Las canalizaciones de Gemini Enterprise Agent Platform usan la infraestructura subyacente de la interfaz de Private Service Connect para el entrenamiento y para pasar los detalles de la conexión al trabajo de entrenamiento personalizado. Para obtener más información sobre las limitaciones y los precios del uso de interfaces de Private Service Connect con el entrenamiento personalizado, consulta Usa la interfaz de Private Service Connect para el entrenamiento de Gemini Enterprise Agent Platform.
Limitaciones
Las interfaces de Private Service Connect no admiten direcciones IP externas.
Precios
Los precios de las interfaces de Private Service Connect se describen en la página Precios de todos los servicios de redes.
Antes de comenzar
Para usar una interfaz de Private Service Connect con las canalizaciones de Agent Platform, primero debes configurar una interfaz de Private Service Connect para los recursos de Gemini Enterprise Agent Platform.
Crea una ejecución de canalización con interfaces de Private Service Connect
Para crear una ejecución de canalización, primero debes crear una especificación de canalización. Una especificación de canalización es un objeto en la memoria que se crea mediante la conversión de una definición de canalización compilada.
Crea una especificación de canalización
Sigue estas instrucciones para crear una especificación de canalización en la memoria que puedas usar para crear la ejecución de canalización:
Define una canalización y compílala en un archivo YAML. Para obtener más información sobre cómo definir y compilar una canalización, consulta Crea una canalización.
Usa la siguiente muestra de código para convertir el archivo YAML de canalización compilada en una especificación de canalización en la memoria.
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)Reemplaza COMPILED_PIPELINE_PATH por la ruta de acceso local a tu archivo YAML de canalización compilada.
Crea la ejecución de canalización
Usa los siguientes ejemplos para crear una ejecución de canalización con interfaces de Private Service Connect:
Python
Para crear una ejecución de canalización con interfaces de Private Service Connect mediante el SDK de Agent Platform para Python, configura la ejecución con la definición 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)
Reemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto en el que deseas crear la ejecución de canalización.
- LOCATION: Es la región en la que deseas crear la ejecución de canalización.
- DISPLAY_NAME: Es el nombre del trabajo de canalización. La longitud máxima de un nombre visible es de 128 caracteres UTF-8.
- PIPELINE_SPEC: Es la especificación de canalización que creaste en Crea una especificación de canalización.
- OUTPUT_DIRECTORY: Es el URI del bucket de Cloud Storage para almacenar artefactos de salida. Esta ruta de acceso es el directorio raíz de salida de la canalización y se usa para generar las rutas de acceso de los artefactos de salida.
- NETWORK_ATTACHMENT_NAME: Es el nombre de la conexión de red de Compute Engine
que se adjuntará al recurso
PipelineJob. Para obtener la conexión de red, debes haber completado los pasos de la sección Antes de comenzar. Para obtener más información sobre la conexión de red, consulta Configura una red de VPC, una subred y una conexión de red. - DNS_DOMAIN: Es el nombre de DNS de la zona de DNS de la nube privada que creaste cuando configuraste el intercambio de tráfico de DNS privado.
- TARGET_PROJECT: Es el proyecto que aloja la red de VPC.
- TARGET_NETWORK: Es el nombre de la red de VPC.
REST
Para crear una ejecución de canalización, envía una solicitud POST con el
pipelineJobs.create.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: Es el ID del proyecto en el que deseas crear la ejecución de canalización.
- LOCATION: Es la región en la que deseas crear la ejecución de canalización.
- DISPLAY_NAME: Es el nombre del trabajo de canalización. La longitud máxima de un nombre visible es de 128 caracteres UTF-8.
- PIPELINE_SPEC: Es la especificación de canalización que creaste en Crea una especificación de canalización.
- OUTPUT_DIRECTORY: Es el URI del bucket de Cloud Storage para almacenar artefactos de salida. Esta ruta de acceso es el directorio raíz de salida de la canalización y se usa para generar las rutas de acceso de los artefactos de salida.
- NETWORK_ATTACHMENT_NAME: Es el nombre de la conexión de red de Compute Engine
que se adjuntará al recurso
PipelineJob. Para obtener la conexión de red, debes haber completado los pasos de la sección Antes de comenzar. Para obtener más información sobre la conexión de red, consulta Configura una red de VPC, una subred y una conexión de red. - DNS_DOMAIN: Es el nombre de DNS de la zona de DNS de la nube privada que creaste cuando configuraste el intercambio de tráfico de DNS privado.
- TARGET_PROJECT: Es el proyecto que aloja la red de VPC.
- TARGET_NETWORK: Es el nombre de la red de VPC.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs
Cuerpo JSON de la solicitud:
{
"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"
}
]
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$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
Deberías ver un resultado similar al siguiente. PIPELINE_JOB_ID representa el ID de la ejecución de canalización y SERVICE_ACCOUNT_NAME representa la cuenta de servicio que se usó para ejecutar la canalización.
{
"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"
}
]
}
}