Debes implementar un modelo en un extremo antes de que se pueda usar para entregar predicciones en línea. La implementación de un modelo asocia recursos físicos con el modelo para que pueda entregar predicciones en línea con baja latencia.
Para que se pueda implementar, el modelo debe ser visible en Vertex AI Model Registry. Para obtener información acerca de Model Registry, incluido cómo importar artefactos del modelo o crearlos directamente en Model Registry, consulta Introducción a Vertex AI Model Registry.
Puedes implementar varios modelos en un extremo o puedes implementar el mismo modelo en varios extremos. Si deseas obtener más información acerca de las opciones y los casos de uso para implementar modelos, consulta Motivos para implementar más de un modelo en el mismo extremo.
Implementar un modelo en un extremo
Usa uno de los siguientes métodos para implementar un modelo:
Consola de Google Cloud
En la sección Vertex AI de la consola de Google Cloud, ve a la página Modelos.
Haz clic en el nombre y el ID de la versión del modelo que deseas implementar para abrir su página de detalles.
Selecciona la pestaña Implementar y probar.
Si tu modelo ya está implementado en un extremo, se enumeran en la sección Implementa tu modelo.
Haz clic en Implementar en el extremo.
Para implementar el modelo en un extremo nuevo, elige
Crear extremo nuevo y proporciona un nombre para el extremo nuevo. Para implementar tu modelo en un extremo existente, elige Agregar a extremo existente y elige el extremo de la lista desplegable.Puedes implementar varios modelos en un extremo o puedes implementar el mismo modelo en varios extremos.
Si implementas tu modelo en un extremo existente que tiene uno o más modelos implementados, debes actualizar el porcentaje de división del tráfico del modelo que estás implementando y el que ya se implementó, para que todos los porcentajes sumen 100%.
Si implementas tu modelo en un extremo nuevo, acepta 100 para la división del tráfico. De lo contrario, ajusta los valores de división del tráfico para todos los modelos en el extremo para sumar hasta 100.
Ingresa la cantidad mínima de nodos de procesamiento que deseas proporcionar para el modelo.
Esta es la cantidad de nodos que deben estar disponibles para el modelo en todo momento.
Se te cobrará por los nodos que se usaron, ya sea para controlar la carga de la predicción o para los nodos en espera (mínimo), incluso sin tráfico de predicción. Consulta la página de precios.
La cantidad de nodos de procesamiento puede aumentar si es necesario para manejar el tráfico de predicción, pero nunca superará la cantidad máxima de nodos.
Para usar el ajuste de escala automático, escribe la cantidad máxima de nodos de procesamiento que quieres que Vertex AI escale de forma vertical.
Selecciona el Tipo de máquina.
Los recursos de máquina más grandes aumentarán el rendimiento de tu predicción y los costos. Compara los tipos de máquina disponibles.
Selecciona un Tipo de acelerador y un Recuento de acelerador.
Si habilitaste el uso del acelerador cuando importaste o creaste el modelo, se muestra esta opción.
Para conocer la cantidad de aceleradores, consulta la tabla de GPU a fin de verificar la cantidad válida de GPU que puedes usar con cada tipo de máquina de CPU. El recuento de aceleradores se refiere a la cantidad de aceleradores por nodo, no a la cantidad total de aceleradores en tu implementación.
Si deseas usar una cuenta de servicio personalizada para la implementación, elige una en el cuadro desplegable Cuenta de servicio.
Obtén más información para cambiar la configuración predeterminada para el registro de predicción.
Haz clic en Listo para tu modelo y, cuando todos los porcentajes de división del tráfico sean correctos, haz clic en Continuar.
Se muestra la región en la que se implementa tu modelo. Esta debe ser la región en la que creaste tu modelo.
Haz clic en Implementar para implementar el modelo en el extremo.
API
Cuando implementas un modelo con la API de Vertex AI, haz los siguientes pasos:
Crear un extremo
Si implementas un modelo en un extremo existente, puedes omitir este paso e ir a Obtén el ID del extremo. Para probar la vista previa del extremo dedicado, ve a Crea un extremo dedicado.
gcloud
En el siguiente ejemplo, se usa el comando gcloud ai endpoints create
:
gcloud ai endpoints create \
--region=LOCATION_ID \
--display-name=ENDPOINT_NAME
Reemplaza lo siguiente:
- LOCATION_ID: la región en la que usas Vertex AI.
- ENDPOINT_NAME: el nombre visible para el extremo.
La herramienta de la CLI de Google Cloud puede tardar unos segundos en crear el extremo.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: Tu región.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_NAME: el nombre visible para el extremo.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Cuerpo JSON de la solicitud:
{ "display_name": "ENDPOINT_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/PROJECT_NUMBER/locations/LOCATION_ID/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" } } }
"done":
true
.
Terraform
En el siguiente ejemplo, se usa el recurso google_vertex_ai_endpoint
de Terraform para crear un extremo.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java 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 Java.
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.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Crea un extremo dedicado
Si implementas un modelo en un extremo existente, puedes omitir este paso.
Un extremo dedicado es un extremo más rápido y estable que admite tamaños de carga útil más grandes y tiempos de espera de solicitudes más largos.
Para usar un extremo dedicado durante la versión preliminar, debes habilitarlo de forma explícita.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"display_name": "ENDPOINT_NAME", "dedicatedEndpointEnabled": true}' \
https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
Reemplaza lo siguiente:
- ENDPOINT_NAME: el nombre visible para el extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID de tu proyecto Google Cloud.
Python
endpoint = aiplatform.Endpoint.create(
display_name="ENDPOINT_NAME",
dedicated_endpoint_enabled=True,
)
Reemplaza lo siguiente:
- ENDPOINT_NAME: el nombre visible para el extremo.
Obtén el ID de extremo
Necesitas el ID de extremo para implementar el modelo.
gcloud
En el siguiente ejemplo, se usa el comando gcloud ai endpoints list
:
gcloud ai endpoints list \
--region=LOCATION_ID \
--filter=display_name=ENDPOINT_NAME
Reemplaza lo siguiente:
- LOCATION_ID: la región en la que usas Vertex AI.
- ENDPOINT_NAME: el nombre visible para el extremo.
Toma nota del número que aparece en la columna ENDPOINT_ID
. Usa este ID en el paso siguiente.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_NAME: el nombre visible para el extremo.
Método HTTP y URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_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:
{ "endpoints": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID", "displayName": "ENDPOINT_NAME", "etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx", "createTime": "2020-04-17T18:31:11.585169Z", "updateTime": "2020-04-17T18:35:08.568959Z" } ] }
Implementa el modelo
Selecciona la pestaña correspondiente a tu idioma o entorno:
gcloud
En los siguientes ejemplos se usa el comando gcloud ai endpoints deploy-model
.
En el siguiente ejemplo, se implementa un Model
en un Endpoint
sin usar GPU para acelerar la entrega de predicciones y sin dividir el tráfico entre varios recursos DeployedModel
:
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- ENDPOINT_ID: Es el ID del extremo.
- LOCATION_ID: la región en la que usas Vertex AI.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. - MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad.
-
MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación.
El recuento de nodos se puede aumentar o disminuir, según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
Si omites la marca
--max-replica-count
, la cantidad máxima de nodos se establece en el valor de--min-replica-count
.
Ejecuta el comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
Divide el tráfico
La marca --traffic-split=0=100
en los ejemplos anteriores envía el 100% del tráfico de predicción que Endpoint
recibe al nuevo DeployedModel
, que se representa mediante el ID temporal 0
. Si tu Endpoint
ya tiene otros recursos DeployedModel
, puedes dividir el tráfico entre el DeployedModel
nuevo y los anteriores.
Por ejemplo, para enviar el 20% del tráfico al DeployedModel
nuevo y el 80% a uno anterior, ejecuta el siguiente comando.
Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:
- OLD_DEPLOYED_MODEL_ID: Es el ID del
DeployedModel
existente.
Ejecuta el comando gcloud ai endpoints deploy-model:
Linux, macOS o Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
Implementar el modelo
Antes de usar cualquiera de los datos de solicitud a continuación, haz los siguientes reemplazos:
- LOCATION_ID: la región en la que usas Vertex AI.
- PROJECT_ID: El ID del proyecto.
- ENDPOINT_ID: Es el ID del extremo.
- MODEL_ID: El ID del modelo que se implementará.
-
DEPLOYED_MODEL_NAME: Un nombre para
DeployedModel
También puedes usar el nombre comercial deModel
paraDeployedModel
. -
MACHINE_TYPE: Opcional Los recursos de máquina que se usan para cada nodo de esta implementación. Su configuración predeterminada es
n1-standard-2
. Obtén más información sobre los tipos de máquinas. - ACCELERATOR_TYPE: El tipo de acelerador que se adjuntará a la máquina. Es opcional si no se especifica ACCELERATOR_COUNT o es cero. No recomendado para modelos de AutoML ni modelos personalizados con capacitación personalizado que usan imágenes que no son de GPU. Obtén más información.
- ACCELERATOR_COUNT: La cantidad de aceleradores que usa cada réplica. Opcional. Debe ser cero o no especificado para los modelos de AutoML o los modelos de capacitación personalizados que usan imágenes que no son de GPU.
- MIN_REPLICA_COUNT: La cantidad mínima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir según lo requiera la carga de predicción, hasta la cantidad máxima de nodos y nunca menos que esta cantidad. Este valor debe ser mayor o igual que 1%
- MAX_REPLICA_COUNT: La cantidad máxima de nodos para esta implementación. El recuento de nodos se puede aumentar o disminuir, según lo requiera la carga de predicción, hasta esta cantidad de nodos y nunca menos que la cantidad mínima de nodos.
- TRAFFIC_SPLIT_THIS_MODEL: El porcentaje del tráfico de predicción a este extremo para enrutar al modelo que se implementa con esta operación. La configuración predeterminada es 100. Todos los porcentajes de tráfico deben sumar hasta 100. Obtén más información sobre las divisiones del tráfico.
- DEPLOYED_MODEL_ID_N: Opcional Si se implementan otros modelos en este extremo, debes actualizar sus porcentajes de división del tráfico para que todos los porcentajes sumen hasta 100.
- TRAFFIC_SPLIT_MODEL_N: El valor de porcentaje de división del tráfico para la clave del ID del modelo implementado
- PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
Cuerpo JSON de la solicitud:
{ "deployedModel": { "model": "projects/PROJECT/locations/us-central1/models/MODEL_ID", "displayName": "DEPLOYED_MODEL_NAME", "dedicatedResources": { "machineSpec": { "machineType": "MACHINE_TYPE", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": "ACCELERATOR_COUNT" }, "minReplicaCount": MIN_REPLICA_COUNT, "maxReplicaCount": MAX_REPLICA_COUNT }, }, "trafficSplit": { "0": TRAFFIC_SPLIT_THIS_MODEL, "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1, "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2 }, }
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/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-19T17:53:16.502088Z", "updateTime": "2020-10-19T17:53:16.502088Z" } } }
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java 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 Java.
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.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
Obtén más información a fin de cambiar la configuración predeterminada para el registro de predicción.
Obtén el estado de la operación
Algunas solicitudes inician operaciones de larga duración que requieren tiempo para completarse. Estas solicitudes devuelven un nombre de operación que puedes usar para ver el estado de la operación o cancelarla. Vertex AI proporciona métodos auxiliares para hacer llamadas en operaciones de larga duración. Para obtener más información, consulta Trabaja con operaciones de larga duración.
Limitaciones
- Si tienes habilitados los Controles del servicio de VPC, el contenedor de tu modelo implementado no tendrá acceso a Internet.
Configura la implementación del modelo
Durante la implementación del modelo, toma las siguientes decisiones importantes sobre cómo ejecutar la predicción en línea:
Recurso creado | Configuración especificada durante la creación del recurso |
---|---|
Extremo | Ubicación en la que se ejecutan las predicciones |
Modelo | Contenedor que se usará (ModelContainerSpec ) |
DeployedModel | Máquinas que se usan para la predicción en línea |
No puedes actualizar esta configuración que se muestra después de la creación inicial del modelo o extremo, y no puedes anularlos en la solicitud de predicción en línea. Si necesitas cambiar esta configuración, debes volver a implementar tu modelo.
Qué sucede cuando implementas un modelo
Cuando implementas un modelo en un extremo, asocias recursos físicos (máquinas) con ese modelo para que pueda entregar predicciones en línea. Las predicciones en línea tienen requisitos de baja latencia. Proporcionar recursos al modelo con anticipación reduce la latencia.
El tipo de capacitación del modelo (AutoML o personalizado) y el tipo de datos (AutoML) determinan los tipos de recursos físicos disponibles para el modelo. Después de implementar el modelo, puedes mutate
algunos de esos recursos sin crear una implementación nueva.
El recurso de extremo proporciona el extremo del servicio (URL) que usas para solicitar la predicción. Por ejemplo:
https://us-central1-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/{endpoint}:predict
Razones para implementar más de un modelo en el mismo extremo
Implementar dos modelos en el mismo extremo te permite reemplazar de forma gradual un modelo por el otro. Por ejemplo, supongamos que usas un modelo y encuentras una manera de aumentar la exactitud de ese modelo con datos de capacitación nuevos. Sin embargo, no quieres actualizar tu aplicación para que apunte a una URL de extremo nueva y tampoco deseas crear cambios repentinos en la aplicación. Puedes agregar el modelo nuevo al mismo extremo, que entrega un pequeño porcentaje de tráfico, y aumentar de forma gradual la división del tráfico del modelo nuevo hasta que entregue el 100% del tráfico.
Debido a que los recursos están asociados con el modelo en lugar del extremo, puedes implementar modelos de diferentes tipos en el mismo extremo. Sin embargo, la práctica recomendada es implementar modelos de un tipo específico (por ejemplo, tabular de AutoML, entrenado de forma personalizada) en un extremo. Esta configuración es más fácil de administrar.
Motivos para implementar un modelo en más de un extremo
Es posible que desees implementar tus modelos con diferentes recursos para diferentes entornos de aplicaciones, como pruebas y producción. Es posible que también quieras admitir diferentes SLO para tus solicitudes de predicción. Quizás una de tus aplicaciones necesite un rendimiento mucho más alto que las otras. En este caso, puedes implementar ese modelo en un extremo de mayor rendimiento con más recursos de máquina. Para optimizar los costos, también puedes implementar el modelo en un extremo de menor rendimiento con menos recursos de máquina.
Comportamiento del escalamiento
Cuando implementas un modelo para la predicción en línea como DeployedModel
, puedes configurar
nodos de predicción para que se escalen automáticamente. Para ello, configura
dedicatedResources.maxReplicaCount
con un
valor mayor que dedicatedResources.minReplicaCount
.
Cuando configuras un DeployedModel
, debes configurar dedicatedResources.minReplicaCount
en, como mínimo, 1. En otras palabras, no puedes
configurar DeployedModel
para escalar a 0 nodos de predicción cuando no se
usa.
Uso y configuración de destino
De forma predeterminada, si implementas un modelo sin recursos de GPU dedicados, Vertex AI aumentará o disminuirá la escala de la cantidad de réplicas de forma automática para que el uso de CPU coincida con el valor objetivo predeterminado del 60%.
De forma predeterminada, si implementas un modelo con recursos de GPU dedicados (si
machineSpec.accelerator_count
es superior a 0), Vertex AI escalará vertical y horizontalmente la cantidad de réplicas
automáticamente para que el uso de CPU o GPU, el que sea más alto, coincida con el valor objetivo
predeterminado del 60%. Por lo tanto, si la capacidad de procesamiento de tu predicción causa un uso elevado de GPU, pero no un uso elevado de CPU, Vertex AI escalará de forma vertical y el uso de CPU será muy bajo, lo que será visible en la supervisión. Por el contrario,
si tu contenedor personalizado tiene poco uso de la GPU, pero tiene un proceso no relacionado
que aumenta el uso de CPU por encima del 60%, Vertex AI escalará verticalmente, incluso si
esto no fue necesario para lograr los objetivos de QPS y latencia.
Puedes anular la métrica y el objetivo de límite predeterminados si especificas autoscalingMetricSpecs
.
Ten en cuenta que, si tu implementación está configurada para escalar solo según el uso de CPU, no
se escalará de forma vertical, incluso si el uso de GPU es alto.
Administra el uso de recursos
Puedes supervisar tu extremo para hacer un seguimiento de las métricas, como el uso de CPU y acelerador, la cantidad de solicitudes, la latencia y la cantidad actual y objetivo de réplicas. Esta información puede ayudarte a comprender el uso de los recursos de tu extremo y el comportamiento del escalamiento.
Ten en cuenta que cada réplica ejecuta solo un contenedor. Esto significa que si un contenedor de predicción no puede usar por completo el recurso de procesamiento elegido, como un solo código de subproceso para una máquina de varios núcleos o un modelo personalizado que llame a otro servicio como parte de la predicción, es posible que tus nodos no se escalen de forma vertical.
Por ejemplo, si usas FastAPI o cualquier servidor de modelos que tenga una cantidad configurable de trabajadores o subprocesos, existen muchos casos en los que tener más de un trabajador puede aumentar el uso de recursos, lo que mejora la capacidad del servicio para escalar de forma automática la cantidad de réplicas.
Por lo general, recomendamos empezar con un trabajador o subproceso por núcleo. Si notas que el uso de CPU es bajo, en especial con una carga alta o tu modelo no escala de forma vertical porque el uso de CPU es bajo, aumenta la cantidad de trabajadores. Por otro lado, si notas que el uso es demasiado alto y las latencias aumentan más de lo esperado con la carga, intenta usar menos trabajadores. Si ya usas un solo trabajador, intenta usar un tipo de máquina más pequeño.
Comportamiento y retraso del escalamiento
Vertex AI ajusta la cantidad de réplicas cada 15 segundos mediante los datos de la ventana de 5 minutos anteriores. Para cada ciclo de 15 segundos, el sistema mide el uso del servidor y genera una cantidad objetivo de réplicas según la siguiente fórmula:
target # of replicas = Ceil(current # of replicas * (current utilization / target utilization))
Por ejemplo, si tienes dos réplicas que se usan al 100%, el objetivo es 4:
4 = Ceil(3.33) = Ceil(2 * (100% / 60%))
Otro ejemplo, si tienes 10 réplicas y el uso disminuye al 1%, el objetivo es 1:
1 = Ceil(.167) = Ceil(10 * (1% / 60%))
Al final de cada ciclo de 15 segundos, el sistema ajusta la cantidad de réplicas para que coincida con el valor objetivo más alto de la ventana anterior de 5 minutos. Ten en cuenta que, como se elige el valor objetivo más alto, tu extremo no reducirá la escala verticalmente si hay un aumento en el uso durante ese período de 5 minutos, incluso si el uso general es muy bajo. Por otro lado, si el sistema necesita escalar de forma vertical, lo hará en un plazo de 15 segundos, ya que se elige el valor objetivo más alto en lugar del promedio.
Ten en cuenta que, incluso después de que Vertex AI ajuste la cantidad de réplicas, el inicio o el apagado de las réplicas lleva tiempo. Por lo tanto, hay un retraso adicional antes de que el extremo pueda ajustarse al tráfico. Los factores principales que contribuyen a este momento incluyen los siguientes:
- el tiempo para aprovisionar y, luego, iniciar las VMs de Compute Engine
- el tiempo para descargar el contenedor desde el registro
- el tiempo para cargar el modelo desde el almacenamiento
La mejor manera de comprender el comportamiento de escalamiento del modelo real es ejecutar una prueba de carga y optimizar las características importantes para el modelo y tu caso de uso. Si el escalador automático no escala de forma vertical lo suficientemente rápido para la
aplicación, aprovisiona min_replicas
suficientes para controlar el tráfico del modelo de referencia
esperado.
Actualiza la configuración de escalamiento
Si especificaste DedicatedResources
o AutomaticResources
cuando implementaste el modelo, puedes actualizar la configuración de escalamiento sin volver a implementar el modelo mediante una llamada a mutateDeployedModel
.
Por ejemplo, la siguiente solicitud actualiza max_replica
y autoscaling_metric_specs
y luego, inhabilita el registro de contenedores.
{
"deployedModel": {
"id": "2464520679043629056",
"dedicatedResources": {
"maxReplicaCount": 9,
"autoscalingMetricSpecs": [
{
"metricName": "aiplatform.googleapis.com/prediction/online/cpu/utilization",
"target": 50
}
]
},
"disableContainerLogging": true
},
"update_mask": {
"paths": [
"dedicated_resources.max_replica_count",
"dedicated_resources.autoscaling_metric_specs",
"disable_container_logging"
]
}
}
Notas de uso:
- No puedes cambiar el tipo de máquina ni cambiar de
DedicatedResources
aAutomaticResources
o viceversa. Los únicos campos de configuración de escalamiento que puedes cambiar sonmin_replica
,max_replica
yAutoscalingMetricSpec
(soloDedicatedResources
). - Debes enumerar todos los campos que necesites actualizar en
updateMask
. Los campos no enumerados se ignoran. - El DeployedModel debe tener un estado
DEPLOYED
. Puede haber, como máximo, una operación de mutación activa por modelo implementado. mutateDeployedModel
también te permite habilitar o inhabilitar el registro de contenedores. Para obtener más información, consulta Registro de predicciones en línea.
Anula la implementación de un modelo y borra el extremo
Usa uno de los siguientes métodos para anular la implementación de un modelo y borrar el extremo.
Consola de Google Cloud
Anula la implementación del modelo de la siguiente manera:
En la consola de Google Cloud, en la sección Vertex AI, ve a la página Extremos.
Haz clic en el nombre y el ID de la versión del modelo que deseas implementar para abrir su página de detalles.
En la fila de tu modelo, haz clic en
Acciones y, luego, en Anular la implementación del modelo en el extremo.En el cuadro de diálogo Anular la implementación del modelo desde el extremo, haz clic en Anular la implementación.
Para borrar modelos adicionales, repite los pasos anteriores.
Opcional: Borra el extremo de predicción en línea de la siguiente manera:
En la sección Vertex AI de la consola de Google Cloud, ve a la página Predicción en línea.
Selecciona el extremo.
Para borrar el extremo, haz clic en
Acciones y, luego, en Borrar extremo.
gcloud
Enumera los IDs de los extremos de todos los extremos de tu proyecto:
gcloud ai endpoints list \ --project=PROJECT_ID \ --region=LOCATION_ID
Reemplaza PROJECT_ID por el nombre de tu proyecto y LOCATION_ID por la región en la que usas Vertex AI.
Enumera los IDs de los modelos que se implementan en un extremo:
gcloud ai endpoints describe ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
Reemplaza ENDPOINT_ID por el ID del extremo.
Anula la implementación de un modelo desde el extremo:
gcloud ai endpoints undeploy-model ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID \ --deployed-model-id=DEPLOYED_MODEL_ID
Reemplaza DEPLOYED_MODEL_ID por el ID del modelo.
Opcional: Borra el extremo de predicción en línea:
gcloud ai endpoints delete ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION_ID
¿Qué sigue?
- Obtén más información para obtener una predicción en línea.
- Obtén más información sobre los extremos privados.