Usa Private Service Connect para la predicción en línea

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

Recomendamos Private Service Connect para casos de uso de predicción en línea que tengan los siguientes requisitos:

  • Requiere conexiones privadas y seguras
  • Exige una latencia baja
  • No necesitan ser 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 predicción 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 extremos 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).

Crea el extremo

Usa uno de los siguientes métodos para crear un extremo de predicción en línea con Private Service Connect habilitado:

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 proyectos para agregar a la lista de proyectos permitidos del 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. Lo necesitarás para el valor VERTEXAI_ENDPOINT_ID cuando crees el extremo de Private Service Connect en un paso posterior.

API

REST

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

  • VERTEXAI_PROJECT_ID: el ID del proyecto de Google Cloud en el que se creará el extremo de predicción en línea.
  • REGION: la región en la que usas Vertex AI.
  • VERTEXAI_ENDPOINT_NAME: Es 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 aparece en esta lista, no podrás enviar solicitudes de predicción al extremo de Vertex AI desde él. Asegúrate de incluir VERTEXAI_PROJECT_ID en esta lista para que puedas llamar al extremo desde el mismo proyecto en el que se encuentra.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "displayName": "VERTEXAI_ENDPOINT_NAME",
  "privateServiceConnectConfig": {
    "enablePrivateServiceConnect": true,
    "projectAllowlist": ["ALLOWED_PROJECTS"]
  }
}

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/VERTEXAI_PROJECT_NUMBER/locations/REGION/endpoints/VERTEXAI_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 VERTEXAI_ENDPOINT_ID. Lo necesitarás para implementar el modelo en un paso posterior.

Implementar el modelo

Después de crear el extremo de predicción en línea con Private Service Connect habilitado, implementa tu modelo en él y sigue los pasos descritos en Implementa un modelo en un extremo.

Obtén el adjunto del servicio

Cuando implementas el modelo, se crea un adjunto de servicio para el extremo de predicción en línea. Ejecuta el comando gcloud ai endpoints describe para obtener el URI del adjunto de servicio.

  1. Enumera solo el valor serviceAttachment de los detalles del extremo:

    gcloud ai endpoints describe VERTEXAI_ENDPOINT_ID \
    --project=VERTEXAI_PROJECT_ID \
    --region=REGION \
    | grep -i serviceAttachment
    

    Reemplaza lo siguiente:

    • VERTEXAI_ENDPOINT_ID: el ID del extremo de predicción en línea que acabas de crear.
    • VERTEXAI_PROJECT_ID: el ID del proyecto de Google Cloud en el que creaste el extremo de predicción 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. Toma nota de la string completa en el campo serviceAttachment. Este es el URI del adjunto de servicio.

Crear un extremo de Private Service Connect

Puedes reservar una dirección IP interna para el extremo de Private Service Connect y crear un extremo de Private Service Connect con esa dirección. Para crear el extremo, necesitas el URI del adjunto de servicio.

  1. Si deseas reservar una dirección IP interna para el extremo de Private Service Connect, 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: el ID del proyecto de Google Cloud que aloja tu red de VPC. Si tu extremo de predicción en línea y tu extremo de Private Service Connect están alojados en el mismo proyecto, usa VERTEXAI_PROJECT_ID para este parámetro.
    • REGION: la región de Google Cloud en la que se creará el extremo 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 asigna una dirección IP interna de forma automática.
      • Para obtener más información, consulta Reserva 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, verifica que aparezca un estado RESERVED para la dirección IP.

  3. Para crear el extremo de Private Service Connect y apuntarlo al adjunto del servicio de predicción en línea, usa el comando gcloud compute forwarding-rules create:

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

    Reemplaza lo siguiente:

    • PSC_ENDPOINT_NAME: un nombre para el extremo de Private Service Connect
    • 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_ENDPOINT_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 el extremo de Private Service Connect, 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_ENDPOINT_NAME \
--project=VERTEXAI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress

Reemplaza lo siguiente:

  • PSC_ENDPOINT_NAME: el nombre de tu extremo de Private Service Connect
  • VERTEXAI_PROJECT_ID: El ID de tu proyecto
  • REGION: el nombre de la región para esta solicitud.

Obtén predicciones en línea

Obtener predicciones en línea desde un extremo con Private Service Connect es similar a obtener predicciones en línea de 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 predicción en línea.
  • Si el acceso global no está habilitado, la solicitud debe enviarse desde la misma región.
  • Si quieres obtener predicciones con REST, debes conectarte mediante la dirección IP estática del extremo, a menos que crees un registro DNS para la dirección IP interna. Por ejemplo, debes enviar tus solicitudes predict al siguiente extremo:

    https://INTERNAL_IP_ADDRESS/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

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

Crea un registro DNS para la dirección IP interna (opcional)

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

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

  1. Crea una zona de DNS privado mediante el comando gcloud dns managed-zones create. Esta zona está asociada con la red de VPC en la que se creó el extremo de Private Service Connect.

    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=VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_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:

    • VERTEXAI_PROJECT_NUMBER: El número de proyecto para tu proyecto VERTEXAI_PROJECT_ID. Puedes ubicar este número de proyecto en la consola de Google Cloud. Para obtener más información, consulta Identificación de proyectos.
    • INTERNAL_IP_ADDRESS: la dirección IP interna de tu extremo habilitado para Private Service Connect

    Ahora puedes enviar tus solicitudes de predict a:

    https://VERTEXAI_ENDPOINT_ID.REGION-VERTEXAI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEXAI_PROJECT_ID/locations/REGION/endpoints/VERTEXAI_ENDPOINT_ID:predict
    

Limitaciones

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

  • No se admite la salida privada desde el extremo. Debido a que el extremo de Private Service Connect es unidireccional, no se puede acceder a otras cargas de trabajo privadas de Google Cloud dentro de tu contenedor.
  • No se puede cambiar la configuración projectAllowlist de un extremo.
  • No se admite el registro de acceso.
  • No se admite el registro de solicitudes y respuestas.
  • Vertex Explainable AI no es compatible.

Limitaciones de la vista previa

En la vista previa, se aplican las siguientes limitaciones adicionales:

  • Si anulas la implementación de todos los modelos de Private Service Connect y los vuelves a implementar, debes volver a crear el extremo de Private Service Connect, incluso si el nombre del adjunto de servicio es el mismo.
  • Todos los extremos deben tener la misma configuración projectAllowlist.

¿Qué sigue?