Usa extremos privados dedicados basados en Private Service Connect para la inferencia en línea

Private Service Connect te permite acceder a las inferencias en línea de Vertex AI de forma segura desde varios proyectos de consumidores y redes de VPC sin necesidad de direcciones IP públicas, acceso a Internet pública ni un rango de direcciones IP internas con intercambio de tráfico explícito.

Recomendamos Private Service Connect para los casos de uso de inferencia en línea que tienen los siguientes requisitos:

  • Cómo requerir conexiones privadas y seguras
  • Necesitas una latencia baja
  • No es necesario que sean de acceso público

Private Service Connect usa una regla de reenvío en tu red de VPC para enviar tráfico de forma unidireccional al servicio de inferencia en línea de Vertex AI. La regla de reenvío se conecta a un adjunto de servicio que expone el servicio de Vertex AI a tu red de VPC. Para obtener más información, consulta Información sobre el acceso a los servicios de Vertex AI a través de Private Service Connect. Para obtener más información sobre cómo configurar Private Service Connect, consulta la Descripción general de Private Service Connect en la documentación de la nube privada virtual (VPC).

Los extremos privados dedicados admiten los protocolos de comunicación HTTP y gRPC. En el caso de las solicitudes de gRPC, se debe incluir el encabezado x-vertex-ai-endpoint-id para identificar correctamente el extremo. Se admiten las siguientes APIs:

  • Predecir
  • RawPredict
  • StreamRawPredict
  • Chat Completion (solo en Model Garden)

Puedes enviar solicitudes de inferencia en línea a un extremo privado dedicado con el SDK de Vertex AI para Python. Para obtener más información, consulta Cómo obtener inferencias en línea.

Roles obligatorios

Para obtener el permiso que necesitas para crear un extremo de Private Service Connect, pídele a tu administrador que te otorgue el rol de IAM de Usuario de Vertex AI (roles/aiplatform.user) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso aiplatform.endpoints.create, que se requiere para crear un extremo de Private Service Connect.

También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.

Para obtener más información sobre los roles y permisos de Vertex AI, consulta Control de acceso de Vertex AI con IAM y Permisos de IAM de Vertex AI.

Crea el extremo de inferencia en línea

Usa uno de los siguientes métodos para crear un extremo de inferencia en línea con Private Service Connect habilitado.

El tiempo de espera predeterminado de la solicitud para un extremo de Private Service Connect es de 10 minutos. En el SDK de Vertex AI para Python, puedes especificar de forma opcional un tiempo de espera de solicitud diferente si especificas un nuevo valor de inference_timeout, como se muestra en el siguiente ejemplo. El valor de tiempo de espera máximo es de 3,600 segundos (1 hora).

Console

  1. En la consola de Google Cloud , en Vertex AI, ve a la página Predicción en línea.

    Ir a Predicción en línea

  2. Haz clic en Crear.

  3. Proporciona un nombre visible para el extremo.

  4. Selecciona Privado.

  5. Selecciona Private Service Connect.

  6. Haz clic en Seleccionar IDs de proyecto.

  7. Selecciona los proyectos que deseas agregar a la lista de entidades permitidas para el extremo.

  8. Haz clic en Continuar.

  9. Elige las especificaciones del modelo. Para obtener más información, consulta Implementa un modelo en un extremo.

  10. Haz clic en Crear para crear tu extremo e implementar tu modelo en él.

  11. Toma nota del ID de extremo en la respuesta.

API

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • VERTEX_AI_PROJECT_ID: Es el ID del proyecto de Google Cloud en el que creas el extremo de predicción en línea.
  • REGION: la región en la que usas Vertex AI.
  • VERTEX_AI_ENDPOINT_NAME: el nombre visible del extremo de predicción en línea.
  • ALLOWED_PROJECTS: Una lista separada por comas de los IDs de proyectos de Google Cloud , cada uno entre comillas, por ejemplo, ["PROJECTID1", "PROJECTID2"]. Si un proyecto no está contenido en esta lista, no podrás enviar solicitudes de predicción al extremo de Vertex AI desde él. Asegúrate de incluir VERTEX_AI_PROJECT_ID en esta lista para que puedas llamar al extremo desde el mismo proyecto en el que se encuentra.
  • INFERENCE_TIMEOUT_SECS: (Opcional) Cantidad de segundos en el campo inferenceTimeout opcional.

Método HTTP y URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

Cuerpo JSON de la solicitud:

{
  "displayName": "VERTEX_AI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"],
    "clientConnectionConfig": {
      "inferenceTimeout": {
        "seconds": INFERENCE_TIMEOUT_SECS
      }
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Toma nota del ENDPOINT_ID.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Reemplaza lo siguiente:

  • VERTEX_AI_PROJECT_ID: Es el ID del proyecto Google Cloud en el que crearás el extremo de inferencia en línea.
  • REGION: la región en la que usas Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: el nombre visible del extremo de inferencia en línea
  • ALLOWED_PROJECTS: Es una lista separada por comas de los IDs de los proyectos Google Cloud, cada uno entre comillas. Por ejemplo, ["PROJECTID1", "PROJECTID2"]. Si un proyecto no está contenido en esta lista, no podrás enviar solicitudes de inferencia al extremo de Vertex AI desde él. Asegúrate de incluir VERTEX_AI_PROJECT_ID en esta lista para que puedas llamar al extremo desde el mismo proyecto en el que se encuentra.
  • INFERENCE_TIMEOUT_SECS: (Opcional) Cantidad de segundos en el valor inference_timeout opcional.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
    project_allowlist=["ALLOWED_PROJECTS"],
    ),
inference_timeout=INFERENCE_TIMEOUT_SECS,
)

Toma nota del ENDPOINT_ID al final del URI de extremo que se muestra:

INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')

Crea el extremo de inferencia en línea con la automatización de PSC (versión preliminar)

La inferencia en línea se integra con la automatización de la conectividad de servicios, que te permite configurar extremos de inferencia con la automatización de PSC. Esto simplifica el proceso, ya que crea automáticamente extremos de PSC, y es especialmente beneficioso para los desarrolladores de AA que no tienen permisos para crear recursos de red, como reglas de reenvío, dentro de un proyecto.

Para comenzar, el administrador de red debe establecer una política de conexión de servicio. Esta política es una configuración única por proyecto y red que permite que Vertex AI (clase de servicio gcp-vertexai) genere extremos de PSC dentro de tus proyectos y redes.

A continuación, puedes crear extremos con la configuración de automatización de PSC y, luego, implementar tus modelos. Una vez que se complete la implementación, se podrá acceder a la información del extremo de PSC pertinente dentro de los extremos.

Limitaciones

  • No se admiten los Controles del servicio de VPC.
  • Se aplica un límite regional de 500 extremos a los parámetros de configuración de automatización de PSC.
  • Los resultados de la automatización de PSC se borran cuando no hay ningún modelo implementado o cuando se está implementando en el extremo. Después de la limpieza y la implementación posterior del modelo, los nuevos resultados de la automatización incluyen direcciones IP y reglas de reenvío distintas.

Crea una política de conexión de servicio

Debes ser administrador de red para crear la política de conexión de servicio. Se requiere una política de conexión de servicio para permitir que Vertex AI cree extremos de PSC en tus redes. Sin una política válida, la automatización falla con un error CONNECTION_POLICY_MISSING.

  1. Crea tu política de conexión de servicio.

    • POLICY_NAME: Es un nombre especificado por el usuario para la política.
    • PROJECT_ID: Es el ID del proyecto de servicio en el que creas recursos de Vertex AI.

    • VPC_PROJECT: Es el ID del proyecto en el que se encuentra tu VPC cliente. Para la configuración de una sola VPC, esto es lo mismo que $PROJECT. Para la configuración de la VPC compartida, este será el proyecto host de VPC.

    • NETWORK_NAME: Es el nombre de la red en la que se realizará la implementación.

    • REGION: Es la región de la red.

    • PSC_SUBNETS: Son las subredes de Private Service Connect que se usarán.

    gcloud network-connectivity service-connection-policies create POLICY_NAME \
        --project=VPC_PROJECT \
        --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
        --service-class=gcp-vertexai --region=REGION --subnets=PSC_SUBNETS
    
  2. Consulta tu política de conexión de servicio.

    gcloud network-connectivity service-connection-policies list \
        --project=VPC_PROJECT -region=REGION

    Para una configuración de VPC única, un ejemplo se ve de la siguiente manera:

        gcloud network-connectivity service-connection-policies create test-policy \
            --network=default \
            --project=YOUR_PROJECT_ID \
            --region=us-central1 \
            --service-class=gcp-vertexai \
            --subnets=default \
            --psc-connection-limit=500 \
            --description=test

Crea el extremo de inferencia en línea con la configuración de automatización de PSC

En PSCAutomationConfig, asegúrate de que projectId esté en la lista de entidades permitidas.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGION: Es la región en la que usas Vertex AI.
  • VERTEX_AI_PROJECT_ID: Es el ID del proyecto Google Cloud en el que creas el extremo de inferencia en línea.
  • VERTEX_AI_ENDPOINT_NAME: Es el nombre visible del extremo de predicción en línea.
  • NETWORK_NAME: Es el nombre completo del recurso, incluido el ID del proyecto, en lugar del número del proyecto.

Método HTTP y URL:

POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints

Cuerpo JSON de la solicitud:

{
  {
    displayName: "VERTEX_AI_ENDPOINT_NAME",
    privateServiceConnectConfig: {
      enablePrivateServiceConnect: true,
      projectAllowlist: ["VERTEX_AI_PROJECT_ID"],
      pscAutomationConfigs: [
        { "project_id": "VERTEX_AI_PROJECT_ID", "network": "projects/VERTEX_AI_PROJECT_ID/global/networks/NETWORK_NAME" },
      ],
    },
  },

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Toma nota del ENDPOINT_ID.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

Reemplaza lo siguiente:

  • VERTEX_AI_PROJECT_ID: Es el ID del proyecto Google Cloud en el que crearás el extremo de inferencia en línea.
  • REGION: la región en la que usas Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: el nombre visible del extremo de inferencia en línea
  • NETWORK_NAME: Es el nombre completo del recurso, incluido el ID del proyecto, en lugar del número de proyecto.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

config =
aiplatform.compat.types.service_networking.PrivateServiceConnectConfig(
        enable_private_service_connect=True,
        project_allowlist="VERTEX_AI_PROJECT_ID"
        psc_automation_configs=[
            aiplatform.compat.types.service_networking.PSCAutomationConfig(
                project_id="VERTEX_AI_PROJECT_ID"
network=projects/"VERTEX_AI_PROJECT_ID"/global/networks/"NETWORK_NAME",
            )
        ]
    )
psc_endpoint = aiplatform.PrivateEndpoint.create(
     display_name="VERTEX_AI_ENDPOINT_NAME"
     private_service_connect_config=config,
)

Implementa el modelo

Después de crear el extremo de inferencia en línea con Private Service Connect habilitado, implementa tu modelo en él siguiendo los pasos descritos en Implementa un modelo en un extremo.

Crea el extremo de PSC de forma manual

Obtén el URI del adjunto de servicio

Cuando implementas tu modelo, se crea un adjunto de servicio para el extremo de inferencia en línea. Este adjunto de servicio representa el servicio de inferencia en línea de Vertex AI que se expone a tu red de VPC. Ejecuta el comando gcloud ai endpoints describe para obtener el URI del adjunto de servicio.

  1. Solo enumera el valor serviceAttachment de los detalles del extremo:

    gcloud ai endpoints describe ENDPOINT_ID \
    --project=VERTEX_AI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    Reemplaza lo siguiente:

    • ENDPOINT_ID: Es el ID de tu extremo de inferencia en línea.
    • VERTEX_AI_PROJECT_ID: Es el ID del proyecto Google Cloud en el que creaste el extremo de inferencia en línea.
    • REGION: la región para esta solicitud.

    El resultado es similar al siguiente:

    serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
    
  2. Anota toda la cadena en el campo serviceAttachment. Este es el URI del adjunto de servicio.

Cree una regla de reenvío.

Puedes reservar una dirección IP interna y crear una regla de reenvío con esa dirección. Para crear la regla de reenvío, necesitas el URI del adjunto de servicio del paso anterior.

  1. Si deseas reservar una dirección IP interna para la regla de reenvío, usa el comando gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION \
    --subnet=SUBNETWORK \
    --addresses=INTERNAL_IP_ADDRESS
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: Un nombre para la dirección IP interna
    • VPC_PROJECT_ID: Es el ID del proyecto Google Cloud que aloja tu red de VPC. Si el extremo de inferencia en línea y la regla de reenvío de Private Service Connect están alojados en el mismo proyecto, usa VERTEX_AI_PROJECT_ID para este parámetro.
    • REGION: La Google Cloud región en la que se creará la regla de reenvío de Private Service Connect
    • SUBNETWORK: el nombre de la subred de VPC que contiene la dirección IP
    • INTERNAL_IP_ADDRESS: la dirección IP interna que se reservará. Este parámetro es opcional.

      • Si se especifica este parámetro, la dirección IP debe estar dentro del rango de direcciones IP principal de la subred. La dirección IP puede ser una dirección RFC 1918 o una subred con rangos que no sean RFC.
      • Si se omite este parámetro, se asignará una dirección IP interna automáticamente.
      • Para obtener más información, consulta Reserva una nueva dirección IPv4 o IPv6 interna estática.
  2. Para verificar que la dirección IP esté reservada, usa el comando gcloud compute addresses list:

    gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \
    --project=VPC_PROJECT_ID
    

    En la respuesta, verifica que aparezca un estado RESERVED para la dirección IP.

  3. Para crear la regla de reenvío y apuntarla al adjunto del servicio de inferencia en línea, usa el comando gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \
        --address=ADDRESS_NAME \
        --project=VPC_PROJECT_ID \
        --region=REGION \
        --network=VPC_NETWORK_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT_URI
    

    Reemplaza lo siguiente:

    • PSC_FORWARDING_RULE_NAME: un nombre para la regla de reenvío
    • VPC_NETWORK_NAME: el nombre de la red de VPC en la que se creará el extremo.
    • SERVICE_ATTACHMENT_URI: el adjunto de servicio que anotaste antes
  4. Para verificar que el adjunto de servicio acepte el extremo, usa el comando gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
    --project=VPC_PROJECT_ID \
    --region=REGION
    

    En la respuesta, verifica que aparezca un estado ACCEPTED para el campo pscConnectionStatus.

Opcional: Obtén la dirección IP interna

Si no especificaste un valor para INTERNAL_IP_ADDRESS cuando creaste la regla de reenvío, puedes obtener la dirección que se asignó de forma automática mediante el comando gcloud compute forwarding-rules describe:

gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

Reemplaza lo siguiente:

  • VERTEX_AI_PROJECT_ID: El ID de tu proyecto
  • REGION: el nombre de la región para esta solicitud.

Opcional: Obtén el extremo de PSC del resultado de la automatización de PSC

Puedes obtener la dirección IP y la regla de reenvío generadas desde el extremo de inferencia. Por ejemplo:

"privateServiceConnectConfig": {
  "enablePrivateServiceConnect": true,
  "projectAllowlist": [
    "your-project-id",
  ],
  "pscAutomationConfigs": [
    {
      "projectId": "your-project-id",
      "network": "projects/your-project-id/global/networks/default",
      "ipAddress": "10.128.15.209",
      "forwardingRule": "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/us-central1/forwardingRules/sca-auto-fr-47b0d6a4-eaff-444b-95e6-e4dc1d10101e",
      "state": "PSC_AUTOMATION_STATE_SUCCESSFUL"
    },
  ]
}

A continuación, se incluyen algunos detalles sobre el manejo de errores.

  • La falla de automatización no afecta el resultado de la implementación del modelo.
  • El estado indica si la operación se realizó correctamente o no.
    • Si la operación se realiza correctamente, se mostrarán la dirección IP y la regla de reenvío.
    • Si no se realiza correctamente, se mostrará un mensaje de error.
  • Las configuraciones de automatización se quitan cuando no hay modelos implementados o en proceso de implementación en el extremo. Esto genera un cambio en la dirección IP y la regla de reenvío si se implementa un modelo más adelante.
  • La automatización fallida no se recuperará. En caso de falla, puedes crear el extremo de PSC de forma manual. Consulta Cómo crear un extremo de PSC de forma manual.

Obtén inferencias en línea

Obtener inferencias en línea desde un extremo con Private Service Connect es similar a obtener inferencias en línea desde extremos públicos, excepto por las siguientes consideraciones:

  • La solicitud debe enviarse desde un proyecto que se especificó en projectAllowlist cuando se creó el extremo de inferencia en línea.
  • Si el acceso global no está habilitado, la solicitud se debe enviar desde la misma región.
  • Hay dos puertos abiertos: el 443 con TLS que usa un certificado autofirmado y el 80 sin TLS. Ambos puertos admiten HTTP y GRPC. Todo el tráfico estará bajo la red privada y no pasará por la Internet pública.
  • Para obtener inferencias, se debe establecer una conexión con la dirección IP estática del extremo, a menos que se cree un registro DNS para la dirección IP interna. Por ejemplo, envía las solicitudes predict al siguiente extremo:

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

    Reemplaza INTERNAL_IP_ADDRESS por la dirección IP interna que reservaste antes.

  • Para las solicitudes de gRPC, es necesario incluir el encabezado x-vertex-ai-endpoint-id para garantizar la identificación correcta del extremo. Esto es necesario, ya que la información del extremo no se transmite dentro de la ruta de solicitud para la comunicación de gRPC.

  • Conexiones seguras (puerto 443): Cuando se establecen conexiones seguras con el puerto 443, el servidor usa un certificado autofirmado. Para continuar con la conexión, se recomienda uno de los siguientes enfoques:

    • Opción 1: Omite la validación del certificado: Configura el cliente para que ignore la validación del certificado y establezca la conexión con la dirección IP del servidor o con un método de resolución de DNS preferido.
    • Opción 2: Integración del almacén de confianza: Obtén el certificado autofirmado del servidor, agrégalo al almacén de confianza local del sistema cliente y usa el nombre de DNS en el formato *.prediction.p.vertexai.goog para establecer la conexión. Este método garantiza una comunicación segura a través de la validación de certificados.

En las siguientes secciones, se proporcionan ejemplos de cómo puedes enviar la solicitud de predicción con Python.

Primer ejemplo

psc_endpoint = aiplatform.PrivateEndpoint("projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID")
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS
    )
print(response)

Reemplaza PATH_TO_INPUT_FILE por una ruta de acceso a un archivo JSON que contiene la entrada de la solicitud.

Segundo ejemplo

import json
import requests
import urllib3
import google.auth.transport.requests

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

REQUEST_FILE = "PATH_TO_INPUT_FILE"

# Programmatically get credentials and generate an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
access_token = creds.token
# Note: the credential lives for 1 hour by default
# After expiration, it must be refreshed
# See https://cloud.google.com/docs/authentication/token-types#at-lifetime

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    url = "https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict"
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {access_token}"  # Add access token to headers
    }
    payload = {
      "instances": data["instances"],
    }

response = requests.post(url, headers=headers, json=payload, verify=False)

print(response.json())

Opcional: Crea un registro DNS para la dirección IP interna

Te recomendamos que crees un registro DNS para que puedas obtener inferencias en línea desde tu extremo sin necesidad de especificar la dirección IP interna.

Para obtener más información, consulta Otras formas de configurar DNS.

  1. Crea una zona del DNS privada con el comando gcloud dns managed-zones create. Esta zona está asociada con la red de VPC en la que se creó la regla de reenvío.

    DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  # DNS names have "." at the end.
    gcloud dns managed-zones create ZONE_NAME \
    --project=VPC_PROJECT_ID \
    --dns-name=$DNS_NAME_SUFFIX \
    --networks=VPC_NETWORK_NAME \
    --visibility=private \
    --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
    
    

    Reemplaza lo siguiente:

    • ZONE_NAME: el nombre de la zona del DNS
  2. Para crear un registro DNS en la zona, usa el comando gcloud dns record-sets create:

    DNS_NAME=ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX
    gcloud dns record-sets create $DNS_NAME \
    --rrdatas=INTERNAL_IP_ADDRESS \
    --zone=ZONE_NAME \
    --type=A \
    --ttl=60 \
    --project=VPC_PROJECT_ID
    

    Reemplaza lo siguiente:

    • VERTEX_AI_PROJECT_NUMBER: El número de proyecto para tu proyecto VERTEX_AI_PROJECT_ID. Puedes encontrar este número de proyecto en la consola de Google Cloud . Para obtener más información, consulta Identifica proyectos.
    • INTERNAL_IP_ADDRESS: la dirección IP interna de tu extremo de inferencia en línea

    Ahora puedes enviar tus solicitudes predict a las siguientes ubicaciones:

    https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

El siguiente es un ejemplo de cómo puedes enviar la solicitud de predicción a la zona DNS mediante Python:

REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open(REQUEST_FILE) as json_file:
    data = json.load(json_file)
    response = psc_endpoint.predict(
        instances=data["instances"], endpoint_override=DNS_NAME
    )
print(response)

Reemplaza DNS_NAME por el nombre de DNS que especificaste en el comando gcloud dns record-sets create.

Limitaciones

Los extremos de Vertex AI con Private Service Connect están sujetos a las siguientes limitaciones:

  • No se admite la Deployment de modelos de Gemini ajustados.
  • No se admite la salida privada desde el extremo del extremo. Debido a que las reglas de reenvío de Private Service Connect son unidireccionales, no se puede acceder a otras cargas de trabajo privadas deGoogle Cloud dentro del contenedor.
  • No se puede cambiar el valor de projectAllowlist de un extremo.
  • No se admite Vertex Explainable AI.
  • Antes de borrar un extremo, debes anular la implementación de tu modelo desde ese extremo.
  • Si todos los modelos no se implementan durante más de 10 minutos, es posible que se borre el adjunto de servicio. Verifica el estado de la conexión de Private Service Connect. Si es CLOSED, vuelve a crear la regla de reenvío.
  • Después de borrar tu extremo, no podrás volver a usar su nombre durante un máximo de 7 días.
  • Un proyecto puede tener hasta 10 valores de projectAllowlist diferentes en sus configuraciones de Private Service Connect.

¿Qué sigue?