El uso de extremos privados para entregar predicciones en línea con Vertex AI proporciona una conexión segura de latencia baja con el servicio de predicción en línea de Vertex AI. En esta guía, se muestra cómo configurar extremos privados en Vertex AI mediante el intercambio de tráfico entre redes de VPC para intercambiar tráfico entre tu red con el servicio de predicción en línea de Vertex AI.
Descripción general
Antes de entregar predicciones en línea con extremos privados, debes configurar el acceso privado a servicios para crear conexiones de intercambio de tráfico entre tu red y Vertex AI. Si ya lo configuraste, puedes usar tus conexiones de intercambio de tráfico existentes.
En esta guía, se abarcan las siguientes tareas:
- Verificar el estado de las conexiones de intercambio de tráfico existentes.
- Verifica que las API necesarias estén habilitadas.
- Crear un extremo privado.
- Implementar un modelo en un extremo privado.
- Solo se admite un modelo por extremo privado. Esto es diferente de un extremo público de Vertex AI en el que puedes dividir el tráfico en varios modelos implementados en un extremo.
- El extremo privado es compatible con los modelos tabulares y entrenados personalizados de AutoML.
- Enviar una predicción a un extremo privado.
- Limpia los recursos
Verifica el estado de las conexiones de intercambio de tráfico existentes
Si tienes conexiones de intercambio de tráfico existentes que usas con Vertex AI, puedes enumerarlas para verificar el estado:
gcloud compute networks peerings list --network NETWORK_NAME
Deberías ver que el estado de las conexiones de intercambio de tráfico es ACTIVE
.
Obtén más información sobre las conexiones de intercambio de tráfico activas.
Habilita las API necesarias
gcloud services enable aiplatform.googleapis.com
gcloud services enable dns.googleapis.com
Crea un extremo privado
Para crear un extremo privado, agrega la marca --network
cuando crees un extremo con la CLI de Google Cloud:
gcloud beta ai endpoints create \
--display-name=ENDPOINT_DISPLAY_NAME \
--network=FULLY_QUALIFIED_NETWORK_NAME \
--region=REGION
Reemplaza NETWORK_NAME por el nombre de red completamente calificado:
projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
Si creas el extremo sin especificar una red, debes crear un extremo público.
Limitaciones de los extremos privados
Ten en cuenta las siguientes limitaciones para los extremos privados:
- En este momento, los extremos privados no admiten la división del tráfico. Como solución alternativa, puedes crear una división de tráfico de forma manual si implementas el modelo en varios extremos privados y divides el tráfico entre las URL de predicción resultantes para cada extremo privado.
- Los extremos privados no son compatibles con SSL/TLS.
- Para habilitar el registro de acceso en un extremo privado, comunícate con vertex-ai-feedback@google.com.
- Solo puedes usar una red para todos los extremos privados de un proyecto de Google Cloud. Si deseas cambiar a otra red, comunícate con vertex-ai-feedback@google.com.
- Se recomienda volver a intentar el cliente en errores recuperables. Pueden incluir los siguientes errores:
- Respuesta vacía (código de error HTTP
0
), posiblemente debido a una conexión transitoria de interrupción. - Los códigos de error HTTP
5xx
que indican que el servicio podría no estar disponible temporalmente.
- Respuesta vacía (código de error HTTP
- Para el código de error HTTP
429
que indica que el sistema está sobrecargado, considera ralentizar el tráfico para mitigar este problema en lugar de volver a intentarlo. - No se admiten las solicitudes de predicción de
PredictionServiceClient
en la biblioteca cliente de Python de Vertex AI.
Supervisa extremos privados
Puedes usar el panel de métricas para inspeccionar la disponibilidad y la latencia del tráfico que se envía a un extremo privado.
Para personalizar la supervisión, consulta las siguientes dos métricas en Cloud Monitoring:
aiplatform.googleapis.com/prediction/online/private/response_count
La cantidad de respuestas de predicción. Puedes filtrar esta métrica por
deployed_model_id
o código de respuesta HTTP.aiplatform.googleapis.com/prediction/online/private/prediction_latencies
La latencia de la solicitud de predicción en milisegundos. Puedes filtrar esta métrica por
deployed_model_id
, solo para solicitudes correctas.
Obtén más información sobre cómo seleccionar, consultar y mostrar estas métricas en el Explorador de métricas.
Implementa un modelo
Puedes importar un modelo nuevo o implementar uno existente que ya hayas subido. Para subir un modelo nuevo, usa gcloud ai models upload
.
Para obtener más información, consulta Importa modelos a Vertex AI.
Para implementar un modelo en un extremo privado, consulta la guía sobre cómo implementar modelos. Además de la división del tráfico y la habilitación manual del registro de acceso, puedes usar cualquiera de las otras opciones disponibles para implementar modelos con entrenamiento personalizado. Consulta las limitaciones de los extremos privados para obtener más información sobre cómo se diferencian de los extremos públicos.
Después de implementar el extremo, puedes obtener el URI de predicción de los metadatos de tu extremo privado.
Si tienes el nombre visible de tu extremo privado, ejecuta este comando para obtener el ID del extremo:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=REGION \ --filter=displayName:ENDPOINT_DISPLAY_NAME \ --format="value(ENDPOINT_ID.scope())")
De lo contrario, para ver el ID del extremo y el nombre visible de todos tus extremos, ejecuta el siguiente comando:
gcloud ai endpoints list --region=REGION
Por último, para obtener el URI de predicción, ejecuta el siguiente comando:
gcloud beta ai endpoints describe ENDPOINT_ID \ --region=REGION \ --format="value(deployedModels.privateEndpoints.predictHttpUri)"
Formato del URI de predicción privada
El URI de predicción se ve diferente para los extremos privados en comparación con los extremos públicos de Vertex AI:
http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
Si eliges anular la implementación del modelo actual y volver a implementarlo con uno nuevo, el nombre de dominio se vuelve a usar, pero la ruta incluye un ID diferente del modelo implementado.
Envía una predicción a un extremo privado
Crea una instancia de Compute Engine en tu red de VPC. Asegúrate de crear la instancia en la misma red de VPC que intercambiaste con Vertex AI.
Establece una conexión SSH en tu instancia de Compute Engine y, luego, instala el cliente de predicción, si corresponde. De lo contrario, puedes usar cURL.
Cuando realices predicciones, usa la URL de predicción que se obtuvo de la implementación del modelo. En este ejemplo, envías la solicitud desde tu cliente de predicción en tu instancia de Compute Engine en la misma red de VPC:
curl -X POST -d@PATH_TO_JSON_FILE http://ENDPOINT_ID.aiplatform.googleapis.com/v1/models/DEPLOYED_MODEL_ID:predict
En esta solicitud de ejemplo, PATH_TO_JSON_FILE es la ruta de tu solicitud de predicción, que se guardó como un archivo JSON. Por ejemplo,
example-request.json
Limpia los recursos
Puedes anular la implementación de modelos y borrar extremos privados de la misma manera que con modelos y extremos públicos. Solo puedes crear extremos privados en una red por proyecto de Google Cloud, incluso si borras estos recursos por tu cuenta. Si necesitas cambiar a una red diferente, comunícate con vertex-ai-feedback@google.com.
Ejemplo: Prueba extremos privados en una VPC compartida
En este ejemplo, se usan dos proyectos de Google Cloud con una red de VPC compartida:
- El proyecto host aloja la red de VPC compartida.
- El proyecto cliente aloja una instancia de Compute Engine en la que ejecutas un cliente de predicción, como cURL, o tu propio cliente REST en la instancia de Compute Engine para enviar solicitudes de predicción.
Cuando creas la instancia de Compute Engine en el proyecto de cliente, debe estar dentro de la subred personalizada en la red de VPC compartida del proyecto host y en la misma región en la que se implementa el modelo.
Crea las conexiones de intercambio de tráfico para el acceso privado a servicios en el proyecto host. Ejecuta
gcloud services vpc-peerings connect
:gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=HOST_SHARED_VPC_NAME \ --ranges=PREDICTION_RESERVED_RANGE_NAME \ --project=HOST_PROJECT_ID
Crea el extremo en el proyecto de cliente mediante el nombre de red del proyecto host. Ejecuta
gcloud beta ai endpoints create
:gcloud beta ai endpoints create \ --display-name=ENDPOINT_DISPLAY_NAME \ --network=HOST_SHARED_VPC_NAME \ --region=REGION \ --project=CLIENT_PROJECT_ID
Envía solicitudes de predicción mediante el cliente de predicción dentro del proyecto de cliente.
Ejemplo: Extremos privados con subredes que no son RFC 1918
En este ejemplo, se usan direcciones que no son RFC 1918 para crear extremos privados.
Reserva rangos IP para nodos, pods y servicios. Los rangos IP de los nodos deben ser del rango RFC 1918.
Crea la conexión de intercambio de tráfico para el acceso privado a servicios mediante los rangos reservados.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=VPC_NAME \ --ranges=NODES_RANGE_NAME,PODS_RANGE_NAME,SERVICES_RANGE_NAME \ --project=PROJECT_ID
Crea el extremo y especifica los rangos reservados para los nodos, los pods y los servicios. RequestIpRangeConfig solo se puede especificar desde la API de REST.
# Sample json request for endpoint creation. { displayName: "my_endpoint", network: "projects/<project_num>/global/networks/<network>", requestedIpRangeConfig: { nodesIpRange: { ipAddress: "xxx.xx.x.x", ipPrefixLength: 22 }, podsIpRange: { ipAddress: "yyy.yy.y.y", ipPrefixLength: 17 }, servicesIpRange: { ipAddress: "zzz.zz.z.z", ipPrefixLength: 22 } } }
Envía solicitudes de predicción mediante el cliente de predicción dentro del proyecto de cliente.