Private Service Connect te permite acceder a las predicciones en línea de Vertex AI de forma segura desde varios proyectos de consumidores y redes de VPC sin necesitar 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 predicción en línea que tienen 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 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 de predicción en línea
Usa uno de los siguientes métodos para crear un extremo de predicción en línea con Private Service Connect habilitado:
Console
En la consola de Google Cloud, en Vertex AI, ve a la página Predicción en línea.
Haz clic en Crear.
Proporciona un nombre visible para el extremo.
Selecciona
Privado.Selecciona
Private Service Connect.Haz clic en Seleccionar IDs de proyecto.
Selecciona proyectos para agregar a la lista de proyectos permitidos del extremo.
Haz clic en Continuar.
Elige las especificaciones del modelo. Para obtener más información, consulta Implementa un modelo en un extremo.
Haz clic en Crear para crear tu extremo e implementar tu modelo en él.
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 ID de proyectos de Google Cloud, cada uno de ellos 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.
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"] } }
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" } } }
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.
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)
# 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"],
),
)
Reemplaza lo siguiente:
VERTEX_AI_PROJECT_ID
: Es el ID del proyecto de Google Cloud en el que creas el extremo de predicción en líneaREGION
: la región en la que usas Vertex AIVERTEX_AI_ENDPOINT_NAME
: el nombre visible del extremo de predicción en líneaALLOWED_PROJECTS
: una lista separada por comas de los IDs de los proyectos de Google Cloud, cada uno de ellos 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.
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')
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 mediante los pasos descritos en Implementa un modelo en un extremo.
Obtén el URI del adjunto de servicio
Cuando implementas tu modelo, se crea un adjunto de servicio para el extremo de predicción en línea. Este adjunto de servicio representa el servicio de predicción 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.
Enumera solo 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 del extremo de predicción en líneaVERTEX_AI_PROJECT_ID
: el ID del proyecto de Google Cloud en el que creaste el extremo de predicción en líneaREGION
: la región para esta solicitud.
El resultado es similar al siguiente:
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
Toma nota de la string completa 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.
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 internaVPC_PROJECT_ID
: el ID del proyecto de Google Cloud que aloja tu red de VPC. Si el extremo de predicción en línea y la regla de reenvío de Private Service Connect están alojados en el mismo proyecto, usaVERTEX_AI_PROJECT_ID
para este parámetro.REGION
: La región de Google Cloud en la que se creará la regla de reenvío de Private Service ConnectSUBNETWORK
: el nombre de la subred de VPC que contiene la dirección IPINTERNAL_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.
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.Para crear la regla de reenvío y apuntarla al adjunto del servicio de predicción 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íoVPC_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
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 campopscConnectionStatus
.
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 proyectoREGION
: 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/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Reemplaza
INTERNAL_IP_ADDRESS
por la dirección IP interna que reservaste antes.El siguiente es un ejemplo de cómo puedes enviar la solicitud de predicción con 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=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.
Opcional: Crea un registro DNS para la dirección IP interna
Te recomendamos que crees un registro DNS para que puedas obtener predicciones en línea de tu extremo sin necesidad de especificar la dirección IP interna.
Para obtener más información, consulta Otras formas de configurar DNS.
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
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 proyectoVERTEX_AI_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 de predicción 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 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 de Google Cloud dentro del contenedor.
- No se puede cambiar la configuración de
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 la regla de reenvío, incluso si el nombre del adjunto de servicio es el mismo.
- Todos los extremos deben tener la misma configuración de
projectAllowlist
.