La información de esta página se aplica a los modelos entrenados de forma personalizada y a los modelos de AutoML. Para la implementación de Model Garden, consulta Usa modelos en Model Garden.
Private Service Connect te permite implementar tu modelo personalizado entrenado de Vertex AI y entregar inferencias en línea de forma segura a varios proyectos de consumidores y redes de VPC sin necesidad de direcciones IP públicas, acceso a Internet público 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:
- Requerir conexiones privadas y seguras
- Requiere 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 especificando 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
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 los proyectos que deseas agregar a la lista de entidades permitidas para el extremo.
Haz clic en Continuar.
Elige las especificaciones de tu 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 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
inferenceTimeoutopcional.
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"
}
}
}
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 creas el extremo de inferencia en línea.REGION: la región en la que usas Vertex AIVERTEX_AI_ENDPOINT_NAME: el nombre visible del extremo de inferencia en líneaALLOWED_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 valorinference_timeoutopcional.
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.
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, es igual a
$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_SUBNETSConsulta 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 el archivo PSCAutomationConfig, asegúrate de que el 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"
}
}
}
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 AIVERTEX_AI_ENDPOINT_NAME: el nombre visible del extremo de inferencia en líneaNETWORK_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 que se describen 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.
Solo enumera el valor
serviceAttachmentde los detalles del extremo:gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachmentReemplaza lo siguiente:
ENDPOINT_ID: Es el ID de tu extremo de inferencia en línea.VERTEX_AI_PROJECT_ID: Es el ID del proyecto de 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-c6e6a854a634dc99472bb802f503c1Anota 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.
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_ADDRESSReemplaza lo siguiente:
ADDRESS_NAME: Un nombre para la dirección IP internaVPC_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, usaVERTEX_AI_PROJECT_IDpara este parámetro.REGION: La región 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 asignará una dirección IP interna de forma automática.
- Para obtener más información, consulta Reserva una nueva dirección IPv4 o IPv6 interna estática.
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_IDEn la respuesta, verifica que aparezca un estado
RESERVEDpara la dirección IP.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_URIReemplaza 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=REGIONEn la respuesta, verifica que aparezca un estado
ACCEPTEDpara el campopscConnectionStatus.
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.
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 se debe enviar desde un proyecto que se especificó en
projectAllowlistcuando 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 permanece en tu red privada y no se desvía a la Internet pública.
- La práctica recomendada es usar HTTPS con el certificado autofirmado que se obtiene de la inferencia en línea de Vertex AI o implementar tu propio certificado autofirmado.
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
predictal siguiente extremo:http://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predictReemplaza
INTERNAL_IP_ADDRESSpor la dirección IP interna que reservaste antes.Para las solicitudes de gRPC, es necesario incluir el encabezado
x-vertex-ai-endpoint-idpara garantizar la identificación adecuada 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.
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.
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_IDReemplaza lo siguiente:
VERTEX_AI_PROJECT_NUMBER: El número de proyecto para tu proyectoVERTEX_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
predicta las siguientes ubicaciones: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 de la capa de transporte (TLS)
La inferencia en línea de Vertex AI está protegida con un certificado autofirmado. Como este certificado no está firmado por una AC (autoridad certificadora) de confianza, los clientes que intenten establecer una conexión HTTPS deben configurarse de forma explícita para confiar en él. El certificado autofirmado que se obtiene del extremo de inferencia en línea de Vertex AI es válido por 10 años. Dado que este certificado no es único para un extremo específico, se puede usar un solo certificado para todas las integraciones del almacén de confianza. A continuación, se indican los pasos de alto nivel necesarios para establecer una conexión HTTPS con la inferencia en línea de Vertex AI:
Configura el DNS: El certificado autofirmado incluye el nombre alternativo del sujeto (SAN)
*.prediction.p.vertexai.goog. Debes crear un registro DNS en tu red que coincida con este formato.Para obtener detalles de la implementación, consulta Crea un registro DNS para la dirección IP interna.
Establece la confianza del cliente: El cliente debe descargar el certificado autofirmado y agregarlo a su almacén de confianza local.
Establece una conexión HTTPS: Para establecer una conexión HTTPS con la inferencia en línea de Vertex AI, debes usar el nombre de dominio completamente calificado (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 en línea de Vertex AI y agregarlo al almacén de confianza local en sistemas Linux basados en Debian, como Debian 11 y Ubuntu.
Actualiza los paquetes del SO y, luego, instala OpenSSL:
sudo apt update && sudo apt install opensslEjecuta el siguiente comando desde tu directorio principal para descargar el certificado de inferencia en línea de Vertex AI y guardarlo en un archivo llamado
vertex_certificate.crten tu directorio actual. Realiza los siguientes reemplazos:- ENDPOINT_ID: ID del extremo del modelo implementado
- REGION: Es la región en la que reside el extremo.
- VERTEX_AI_PROJECT_NUMBER: Es el número de tu proyecto. Puedes encontrar este número de proyecto en la consola de Google Cloud . Para obtener más información, consulta Identifica 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.crtMueve el certificado al almacén de confianza del sistema:
sudo mv vertex_certificate.crt /usr/local/share/ca-certificatesActualiza la lista de AC de confianza del Administrador de certificados. Deberías ver un resultado que confirme que se agregó un certificado.
sudo update-ca-certificatesEnvía una solicitud
predicta la siguiente URL y realiza estos reemplazos:- INTERNAL_IP_ADDRESS: la dirección IP interna de tu extremo de inferencia en línea
- VERTEX_AI_PROJECT_ID: Es el ID del proyecto de tu 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
En el caso de las organizaciones que necesitan un control preciso sobre la administración y la rotación de certificados para los extremos de inferencia en línea de Vertex AI, puedes usar un certificado administrado por el cliente con un balanceador de cargas de aplicaciones (HTTPS) Google Cloudregional.
Esta arquitectura funciona con el certificado predeterminado de Vertex AI, lo que te brinda control directo.
A continuación, se indican los pasos de implementación de alto nivel:
Crea un certificado administrado por el cliente:
- Genera un certificado autofirmado (o usa tu CA) para un dominio personalizado.
- Este dominio debe usar el sufijo
.prediction.p.vertexai.googpara garantizar que coincida con el certificado comodín de Vertex AI, por ejemplo,my-endpoint.prediction.vertexai.goog.
Implementa un balanceador de cargas de aplicaciones regional (HTTPS):
- Configura el balanceador de cargas para que use tu certificado administrado por el cliente en su frontend HTTPS.
- Configura el servicio de backend en un grupo de extremos de red (NEG) de Private Service Connect (PSC). Este NEG apuntará al servicio publicado del adjunto de servicio de tu extremo del modelo de Vertex AI.
Configurar un DNS:
- Crea un registro A de DNS en tu zona DNS.
- Este registro debe asignar tu dominio personalizado completamente calificado (por ejemplo,
my-endpoint.prediction.p.vertexai.goog) a la dirección IP del balanceador de cargas de aplicaciones regional.
Actualiza el almacén de confianza local:
- Para que el cliente autentique el servidor, el certificado del balanceador de cargas de aplicaciones (o su CA emisora) debe importarse en el almacén de confianza local.
Ahora puedes enviar tus solicitudes de predicción al dominio personalizado completamente calificado:
https://MY_ENDPOINT.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Ejemplos para obtener inferencias en línea
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#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
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.
Prácticas recomendadas
Cuando se implementa un extremo nuevo, es posible que se actualice el adjunto de servicio. Siempre verifica el estado del adjunto de servicio y del extremo de PSC antes de realizar la llamada de inferencia. Estas son algunas prácticas recomendadas para hacerlo:
- Si un extremo no tiene implementaciones activas, es posible que Vertex AI borre la vinculación de servicio y la vuelva a crear. Asegúrate de que el extremo de PSC esté en un estado conectado (para ello, vuelve a crear la regla de reenvío) cuando se vuelva a crear el adjunto de servicio.
- Cuando un extremo tiene un modelo implementado activo, el adjunto de servicio no cambia. Para conservar la vinculación del servicio, crea una división del tráfico y migra el tráfico de forma gradual a la nueva versión del modelo antes de anular la implementación de la versión anterior.
- Vertex AI permite hasta 1,000 conexiones por adjunto de servicio.
- La regla de reenvío también tiene un límite de cuota. Para obtener más detalles, consulta Cuotas y límites de Cloud Load Balancing.
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
projectAllowlistde 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 no se implementa ningún modelo 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
projectAllowlistdiferentes en sus configuraciones de Private Service Connect.