Usar puntos finales privados dedicados basados en Private Service Connect para la inferencia online

La información de esta página se aplica a los modelos entrenados personalizados y a los modelos de AutoML. Para obtener información sobre la implementación de Model Garden, consulta Usar modelos en Model Garden.

Private Service Connect te permite implementar tu modelo de Vertex AI entrenado de forma personalizada y ofrecer inferencias online de forma segura a varios proyectos de consumidor y redes de VPC sin necesidad de direcciones IP públicas, acceso público a Internet ni un intervalo de direcciones IP internas emparejado de forma explícita.

Recomendamos Private Service Connect para los casos prácticos de inferencia online que cumplan los siguientes requisitos:

  • Requerir conexiones privadas y seguras
  • Requiere baja latencia
  • 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 unidireccionalmente al servicio de inferencia online de Vertex AI. La regla de reenvío se conecta a una vinculación 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 endpoints privados dedicados admiten los protocolos de comunicación HTTP y gRPC. En las solicitudes de gRPC, se debe incluir la cabecera x-vertex-ai-endpoint-id para identificar correctamente el endpoint. Se admiten las siguientes APIs:

  • Predicen
  • RawPredict
  • StreamRawPredict
  • Finalización de la conversación (solo en Model Garden)

Puedes enviar solicitudes de inferencia online a un endpoint privado específico mediante el SDK de Vertex AI para Python. Para obtener más información, consulta el artículo Obtener inferencias online.

Roles obligatorios

Para obtener el permiso que necesitas para crear un punto final de Private Service Connect, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Usuario de Vertex AI (roles/aiplatform.user) en tu proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso aiplatform.endpoints.create , que es necesario para crear un punto final de Private Service Connect.

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

Para obtener más información sobre los roles y permisos de Vertex AI, consulta los artículos Control de acceso a Vertex AI con IAM y Permisos de gestión de identidades y accesos de Vertex AI.

Crear el endpoint de inferencia online

Usa uno de los siguientes métodos para crear un endpoint de inferencia online con Private Service Connect habilitado.

El tiempo de espera predeterminado de las solicitudes de un endpoint de Private Service Connect es de 10 minutos. En el SDK de Vertex AI para Python, puedes especificar un tiempo de espera de solicitud diferente si asignas un nuevo valor a inference_timeout, como se muestra en el siguiente ejemplo. El valor de tiempo de espera máximo es de 3600 segundos (1 hora).

Consola

  1. En la Google Cloud consola, en Vertex AI, ve a la página Predicción online.

    Ir a Predicción online

  2. Haz clic en Crear.

  3. Proporcione un nombre visible para el endpoint.

  4. Selecciona Privado.

  5. Selecciona Private Service Connect.

  6. Haga clic en Seleccionar IDs de proyecto.

  7. Selecciona los proyectos que quieras añadir a la lista de permitidos del endpoint.

  8. Haz clic en Continuar.

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

  10. Haga clic en Crear para crear su endpoint e implementar su modelo en él.

  11. Anota el ID del endpoint en la respuesta.

API

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • VERTEX_AI_PROJECT_ID: el ID del Google Cloud proyecto en el que vas a crear el endpoint de predicción online.
  • REGION: la región en la que usas Vertex AI.
  • VERTEX_AI_ENDPOINT_NAME: el nombre visible del punto final de predicción online.
  • ALLOWED_PROJECTS: una lista de IDs de proyectos separados por comas Google Cloud , cada uno entre comillas. Por ejemplo, ["PROJECTID1", "PROJECTID2"]. Si un proyecto no está incluido en esta lista, no podrás enviar solicitudes de predicción al endpoint de Vertex AI desde él. Asegúrate de incluir VERTEX_AI_PROJECT_ID en esta lista para poder llamar al endpoint desde el mismo proyecto en el que se encuentra.
  • INFERENCE_TIMEOUT_SECS: (Opcional) Número de segundos del campo opcional inferenceTimeout.

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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
    }
  }
}
Anota el ENDPOINT_ID.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

Haz los cambios siguientes:

  • VERTEX_AI_PROJECT_ID: el ID del Google Cloud proyecto en el que vas a crear el endpoint de inferencia online
  • REGION: la región en la que usas Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: nombre visible del punto final de inferencia online
  • ALLOWED_PROJECTS: lista separada por comas de IDs de proyectos, Google Cloud cada uno entre comillas. Por ejemplo, ["PROJECTID1", "PROJECTID2"]. Si un proyecto no está en esta lista, no podrás enviar solicitudes de inferencia al endpoint de Vertex AI desde él. Asegúrate de incluir VERTEX_AI_PROJECT_ID en esta lista para poder llamar al endpoint desde el mismo proyecto en el que se encuentra.
  • INFERENCE_TIMEOUT_SECS: (Opcional) Número de segundos del valor opcional inference_timeout.
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,
)

Anota el ENDPOINT_ID al final del URI del endpoint devuelto:

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')

Crear el endpoint de inferencia online con la automatización de PSC (vista previa)

La inferencia online se integra con la automatización de la conectividad de servicios, lo que te permite configurar endpoints de inferencia con la automatización de PSC. Esto simplifica el proceso, ya que crea automáticamente los endpoints de PSC, y es especialmente útil para los desarrolladores de aprendizaje automático que no tienen permisos para crear recursos de red, como reglas de reenvío, en un proyecto.

Para empezar, el administrador de tu 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 a Vertex AI (clase de servicio gcp-vertexai) generar endpoints de PSC en tus proyectos y redes.

A continuación, puedes crear endpoints con la configuración de automatización de PSC y, después, desplegar tus modelos. Una vez que se haya completado la implementación, se podrá acceder a la información pertinente del endpoint de PSC en los endpoints.

Limitaciones

  • No se admiten los Controles de Servicio de VPC.
  • Se aplica un límite regional de 500 endpoints a las configuraciones de automatización de PSC.
  • Los resultados de la automatización de PSC se eliminan cuando no hay ningún modelo desplegado o en proceso de desplegarse en el endpoint. Tras la limpieza y la implementación del modelo, los nuevos resultados de automatización incluyen direcciones IP y reglas de reenvío distintas.

Crear una política de conexión de servicio

Para crear la política de conexión de servicio, debes ser administrador de la red. Se necesita una política de conexión de servicio para que Vertex AI pueda crear endpoints de PSC en tus redes. Si no hay una política válida, la automatización falla y se produce un error CONNECTION_POLICY_MISSING.

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

    • POLICY_NAME: nombre que el usuario asigna a la política.
    • PROJECT_ID: el ID del proyecto de servicio en el que vas a crear recursos de Vertex AI.

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

    • NETWORK_NAME: nombre de la red en la que se va a implementar.

    • REGION: la región de la cadena.

    • PSC_SUBNETS: las subredes de Private Service Connect que se van a usar.

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

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

    En una configuración de una sola VPC, un ejemplo sería el siguiente:

        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

Crear el endpoint de inferencia online con la configuración de automatización de PSC

En PSCAutomationConfig, comprueba que projectId esté en la lista de aplicaciones permitidas.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGION: la región en la que usas Vertex AI.
  • VERTEX_AI_PROJECT_ID: ID del Google Cloud proyecto en el que vas a crear el punto final de inferencia online.
  • VERTEX_AI_ENDPOINT_NAME: nombre visible del endpoint de predicción online.
  • NETWORK_NAME: 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
    }
  }
}
Anota el ENDPOINT_ID.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

Haz los cambios siguientes:

  • VERTEX_AI_PROJECT_ID: el ID del Google Cloud proyecto en el que vas a crear el endpoint de inferencia online
  • REGION: la región en la que usas Vertex AI
  • VERTEX_AI_ENDPOINT_NAME: nombre visible del punto final de inferencia online
  • NETWORK_NAME: el nombre de recurso completo, incluido el ID del proyecto, en lugar del número del 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,
)

Desplegar el modelo

Una vez que hayas creado tu endpoint de inferencia online con Private Service Connect habilitado, despliega tu modelo en él siguiendo los pasos que se indican en Desplegar un modelo en un endpoint.

Crear un endpoint de PSC manualmente

Obtener el URI de la vinculación de servicio

Cuando despliegas tu modelo, se crea un adjunto de servicio para el endpoint de inferencia online. Esta vinculación de servicio representa el servicio de inferencia online de Vertex AI que se expone a tu red de VPC. Ejecuta el comando gcloud ai endpoints describe para obtener el URI de la vinculación de servicio.

  1. Muestra solo el valor serviceAttachment de los detalles del endpoint:

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

    Haz los cambios siguientes:

    • ENDPOINT_ID: el ID de tu endpoint de inferencia online
    • VERTEX_AI_PROJECT_ID: el ID del Google Cloud proyecto en el que has creado tu endpoint de inferencia online
    • REGION: la región de esta solicitud

    El resultado debería ser similar al siguiente:

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

Crear 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 de adjunto de servicio del paso anterior.

  1. Para reservar una dirección IP interna para la regla de reenvío, usa el gcloud compute addresses createcomando:

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

    Haz los cambios siguientes:

    • ADDRESS_NAME: un nombre para la dirección IP interna
    • VPC_PROJECT_ID: el ID del Google Cloud proyecto que aloja tu red de VPC. Si tu endpoint de inferencia online y tu 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 va a 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 va a reservar. Este parámetro es opcional.

      • Si se especifica este parámetro, la dirección IP debe estar dentro del intervalo de direcciones IP principal de la subred. La dirección IP puede ser una dirección RFC 1918 o una subred con intervalos que no sean RFC.
      • Si se omite este parámetro, se asignará automáticamente una dirección IP interna.
      • Para obtener más información, consulta el artículo sobre cómo reservar una dirección IPv4 o IPv6 interna estática nueva.
  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, comprueba que la dirección IP tenga el estado RESERVED.

  3. Para crear la regla de reenvío y dirigirla a la vinculación de servicio de inferencia online, 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
    

    Haz los cambios siguientes:

    • 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 va a crear el endpoint.
    • SERVICE_ATTACHMENT_URI: el archivo adjunto de servicio del que has tomado nota antes
  4. Para verificar que el adjunto de servicio acepta el endpoint, 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, comprueba que aparezca el estado ACCEPTED en el campo pscConnectionStatus.

Obtener la dirección IP interna

Si no especificaste ningún valor para INTERNAL_IP_ADDRESS cuando creaste la regla de reenvío, puedes obtener la dirección que se asignó automáticamente 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

Haz los cambios siguientes:

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

Opcional: Obtener el endpoint 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 endpoint de inferencia. Veamos un 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 indican algunos detalles sobre la gestión de errores.

  • Si se produce un error en la automatización, no afectará al resultado del despliegue del modelo.
  • El estado indica si la operación se ha realizado correctamente o no.
    • Si la acción se realiza correctamente, se mostrarán la dirección IP y la regla de reenvío.
    • Si no se completa correctamente, se mostrará un mensaje de error.
  • Las configuraciones de automatización se eliminan cuando no hay modelos desplegados o en proceso de desplegarse en el endpoint. Si se implementa un modelo más adelante, se cambiarán la dirección IP y la regla de reenvío.
  • La automatización fallida no se recuperará. Si se produce un error, puedes crear el endpoint de PSC manualmente. Consulta Crear un endpoint de PSC manualmente.

Obtener inferencias online

Obtener inferencias online de un endpoint con Private Service Connect es similar a obtener inferencias online de endpoints públicos, excepto por las siguientes consideraciones:

  • La solicitud debe enviarse desde un proyecto que se haya especificado en projectAllowlist al crear el endpoint de inferencia online.
  • Si el acceso global no está habilitado, la solicitud debe enviarse desde la misma región.
  • Hay dos puertos abiertos: el 443 con TLS mediante un certificado autofirmado y el 80 sin TLS. Ambos puertos admiten HTTP y gRPC. Todo el tráfico permanece en tu red privada y no atraviesa la red pública de Internet.
  • Te recomendamos que uses HTTPS con el certificado autofirmado obtenido de la inferencia online de Vertex AI o que implementes tu propio certificado autofirmado.
  • Para obtener inferencias, se debe establecer una conexión mediante la dirección IP estática del endpoint, a menos que se cree un registro DNS para la dirección IP interna. Por ejemplo, envía las solicitudes predict al siguiente endpoint:

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

    Sustituye INTERNAL_IP_ADDRESS por la dirección IP interna que reservaste anteriormente.

  • En el caso de las solicitudes gRPC, para asegurarse de que se identifica correctamente el punto de conexión, es necesario incluir el encabezado x-vertex-ai-endpoint-id. Esto es necesario porque la información del endpoint no se transmite en la ruta de la solicitud de comunicación gRPC.

Crear un registro DNS para la dirección IP interna

Te recomendamos que crees un registro DNS para obtener inferencias online desde tu endpoint sin tener que especificar la dirección IP interna.

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

  1. Crea una zona DNS privada con el comando gcloud dns managed-zones create. Esta zona está asociada a 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."
    
    

    Haz los cambios siguientes:

    • ZONE_NAME: el nombre de la zona 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
    

    Haz los cambios siguientes:

    • VERTEX_AI_PROJECT_NUMBER: el número de proyecto de tu proyecto de VERTEX_AI_PROJECT_ID. Puedes encontrar este número de proyecto en la Google Cloud consola. Para obtener más información, consulta el artículo sobre cómo identificar proyectos.
    • INTERNAL_IP_ADDRESS: la dirección IP interna de tu endpoint de inferencia online

    Ahora puedes enviar tus solicitudes de predict a:

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

Compatibilidad con certificados de Seguridad en la capa de transporte (TLS)

La inferencia online de Vertex AI se protege con un certificado autofirmado. Como este certificado no está firmado por una AC (autoridad de certificación) de confianza, los clientes que intenten establecer una conexión HTTPS deben configurarse explícitamente para que confíen en él. El certificado autofirmado obtenido del endpoint de inferencia online de Vertex AI tiene una validez de 10 años. Como este certificado no es único para un endpoint específico, se puede usar un solo certificado para todas las integraciones de almacén de confianza. A continuación, se indican los pasos generales necesarios para establecer una conexión HTTPS con la inferencia online de Vertex AI:

  1. Configurar DNS: el certificado autofirmado incluye el nombre alternativo del asunto (SAN) *.prediction.p.vertexai.goog. Debe crear un registro DNS en su red que coincida con este formato.

    Para obtener información sobre la implementación, consulta el artículo Crear un registro DNS para la dirección IP interna.

  2. Generar confianza en el cliente: el cliente debe descargar el certificado autofirmado y añadirlo a su almacén de confianza local.

  3. Establecer una conexión HTTPS: para establecer una conexión HTTPS con la inferencia online de Vertex AI, es necesario usar el nombre de dominio completo (FQDN). Esto es necesario porque el servicio usa un certificado SSL comodín válido para el dominio *.prediction.p.vertexai.goog.

En los siguientes pasos se muestra cómo descargar el certificado de inferencia online de Vertex AI y añadirlo al almacén de confianza local en sistemas Linux basados en Debian, como Debian 11 y Ubuntu.

  1. Actualiza los paquetes del SO e instala OpenSSL:

    sudo apt update && sudo apt install openssl
    
  2. Ejecuta el siguiente comando desde tu directorio principal para descargar el certificado de inferencia online de Vertex AI y guárdalo en un archivo llamado vertex_certificate.crt en tu directorio actual. Haz los siguientes cambios:

    • ENDPOINT_ID: ID del endpoint del modelo desplegado
    • REGION: la región en la que reside tu endpoint
    • VERTEX_AI_PROJECT_NUMBER: el número de proyecto de tu proyecto. Puedes encontrar este número de proyecto en la Google Cloud consola. Para obtener más información, consulta el artículo sobre cómo identificar proyectos.
    openssl s_client -showcerts -connect \
    ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog:443 </dev/null | \
    openssl x509 -outform pem -out vertex_certificate.crt
    
    
  3. Mueve el certificado al almacén de confianza del sistema:

    sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
    
  4. Actualiza la lista de ACs de confianza del Gestor de certificados. Deberías ver un resultado que confirme que se ha añadido un certificado.

    sudo update-ca-certificates
    
  5. Envía una solicitud predict a la siguiente URL y haz estos cambios:

    • INTERNAL_IP_ADDRESS: la dirección IP interna de tu endpoint de inferencia online
    • VERTEX_AI_PROJECT_ID: el ID del proyecto
    https://ENDPOINT_ID-REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
    

Compatibilidad con certificados personalizados para TLS

Las organizaciones que necesiten un control preciso sobre la gestión y la rotación de certificados para los endpoints de inferencia online de Vertex AI pueden usar un certificado gestionado por el cliente con un balanceador de carga de aplicaciones (HTTPS) regional. Google Cloud

Esta arquitectura funciona con el certificado predeterminado de Vertex AI, lo que te permite tener un control directo.

Estos son los pasos generales de la implementación:

  1. Crea un certificado gestionado por el cliente:

    • Genera un certificado autofirmado (o usa tu AC) para un dominio personalizado.
    • Este dominio debe usar el sufijo .prediction.p.vertexai.goog para asegurarse de que coincida con el certificado comodín de Vertex AI. Por ejemplo, my-endpoint.prediction.vertexai.goog.
  2. Implementa un balanceador de carga de aplicación regional (HTTPS):

  3. Configura el DNS:

    • Crea un registro A de DNS en tu zona DNS.
    • Este registro debe asignar tu dominio personalizado completo (por ejemplo, my-endpoint.prediction.p.vertexai.goog) a la dirección IP del balanceador de carga de aplicaciones regional.
  4. Actualiza el almacén de confianza local:

    • Para que el cliente autentique el servidor, el certificado del balanceador de carga de aplicaciones (o la AC que lo emitió) debe importarse en el almacén de confianza local.

Ahora puede enviar sus solicitudes de predicción al dominio personalizado completo:

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

Ejemplos de cómo obtener inferencias online

En las siguientes secciones se ofrecen ejemplos de cómo enviar la solicitud predict 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)

Sustituye PATH_TO_INPUT_FILE por la ruta a un archivo JSON que contenga 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#access-tokens
# for token lifetimes.

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())

Tercer ejemplo

A continuación, se muestra un ejemplo de cómo puedes enviar la solicitud predict 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)

Sustituye DNS_NAME por el nombre DNS que has especificado en el comando gcloud dns record-sets create.

Prácticas recomendadas

Cuando se implementa un nuevo punto final, es posible que se actualice el adjunto de servicio. Comprueba siempre el estado del adjunto de servicio y del endpoint de PSC antes de hacer la llamada de inferencia. Estas son las prácticas recomendadas para hacerlo:

  • Si un endpoint no tiene implementaciones activas, Vertex AI puede eliminar el adjunto de servicio y volver a crearlo. Asegúrate de que el endpoint de PSC esté en estado conectado (para ello, vuelve a crear la regla de reenvío) cuando se vuelva a crear el adjunto de servicio.
  • Cuando un endpoint tiene un modelo implementado activo, el adjunto de servicio no cambia. Para conservar el acoplamiento de servicio, crea una división del tráfico y migra gradualmente el tráfico a la nueva versión del modelo antes de retirar la versión anterior.
  • Vertex AI permite hasta 1000 conexiones por adjunto de servicio.
  • La regla de reenvío también tiene un límite de cuota. Para obtener más información, consulta las cuotas y los límites de Cloud Load Balancing.

Limitaciones

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

  • No se admite la implementación de modelos de Gemini ajustados.
  • No se admite el tráfico de salida privado desde el endpoint. Como las reglas de reenvío de Private Service Connect son unidireccionales, no se puede acceder a otras cargas de trabajo privadas desde el interior del contenedor.Google Cloud
  • El valor projectAllowlist de un endpoint no se puede cambiar.
  • Vertex Explainable AI no es compatible.
  • Antes de eliminar un endpoint, debes anular el despliegue del modelo en ese endpoint.
  • Si todos los modelos no se implementan durante más de 10 minutos, es posible que se elimine el adjunto de servicio. Comprueba el estado de la conexión de Private Service Connect. Si es CLOSED, vuelve a crear la regla de reenvío.
  • Una vez que hayas eliminado tu endpoint, no podrás volver a usar ese nombre de endpoint 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.

Siguientes pasos