Para personalizar la forma en que Vertex AI entrega predicciones en línea desde tu modelo personalizado, puedes especificar un contenedor personalizado en lugar de un contenedor compilado previamente cuando creas un recurso Model
. Cuando usas un contenedor personalizado, Vertex AI ejecuta un contenedor de Docker de tu elección en cada nodo de predicción.
Se recomienda usar un contenedor personalizado por las siguientes razones:
- para entregar predicciones a partir de un modelo de AA entrenado con un framework que no está disponible como contenedor compilado previamente
- procesar con anterioridad las solicitudes de predicción o procesar con posterioridad las predicciones que genera el modelo
- ejecutar un servidor de predicción escrito en el lenguaje de programación que quieras
- instalar las dependencias que deseas usar para personalizar la predicción
En esta guía, se describe cómo crear un modelo que use un contenedor personalizado. No proporciona instrucciones detalladas para diseñar y crear una imagen de contenedor de Docker.
Prepara una imagen de contenedor
Para crear un Model
que use un contenedor personalizado, debes proporcionar una imagen de contenedor de Docker como base de ese contenedor. Esta imagen del contenedor debe cumplir con los requisitos descritos en los requisitos personalizados para contenedores.
Si planeas usar una imagen de contenedor existente creada por un tercero de confianza, es posible que puedas omitir una o ambas de las siguientes secciones.
Crea una imagen de contenedor
Diseña y compila una imagen de contenedor de Docker que cumpla con los requisitos de imagen de contenedor.
Para conocer los conceptos básicos del diseño y la compilación de una imagen de contenedor de Docker, consulta la guía de inicio rápido de la documentación de Docker.
Envía la imagen del contenedor a Artifact Registry
Envía tu imagen de contenedor a un repositorio de Artifact Registry.
Obtén información para enviar una imagen de contenedor a Artifact Registry.
Crea una Model
Para crear un Model
que use un contenedor personalizado, realiza una de las siguientes acciones:
En las secciones siguientes, se muestra cómo configurar los campos de API relacionados con contenedores personalizados cuando creas un Model
de una de estas formas.
Campos de API relacionados con contenedores
Cuando creas el Model
, asegúrate de configurar el campocontainerSpec
con tus detalles de contenedor personalizados, en lugar de con un contenedor compilado previamente.
Debes especificar un mensaje ModelContainerSpec
en el campo Model.containerSpec
. En este mensaje, puedes especificar los siguientes subcampos:
imageUri
(obligatorio)El URI de Artifact Registry de la imagen de contenedor.
Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-image-uri
para especificar este campo.command
(opcional)Es un arreglo de un ejecutable y argumentos para anular la instrucción
ENTRYPOINT
del contenedor. Para obtener más información sobre cómo dar formato a este campo y cómo interactúa con el campoargs
, lee la referencia de la API paraModelContainerSpec
.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-command
para especificar este campo.args
(opcional)Es un arreglo de un ejecutable y argumentos para anular el
CMD
del contenedor. Si deseas obtener más información sobre cómo dar formato a este campo y cómo interactúa concommand
, lee la referencia de la API paraModelContainerSpec
.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-args
para especificar este campo.ports
(opcional)Un array de puertos. Vertex AI envía verificaciones de actividad, verificaciones de estado y solicitudes de predicción al contenedor en el primer puerto de la lista o a
8080
de forma predeterminada. La especificación de puertos adicionales no tiene efecto.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-ports
para especificar este campo.env
(opcional)Un array de variables de entorno a las que pueden hacer referencia la instrucción
ENTRYPOINT
del contenedor, así como los camposcommand
yargs
. Para obtener más información sobre cómo otros campos pueden hacer referencia a estas variables de entorno, lee la referencia de la API paraModelContainerSpec
.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-env-vars
para especificar este campo.healthRoute
(opcional)La ruta de acceso en el servidor HTTP de tu contenedor al que deseas que Vertex AI envíe verificaciones de estado.
Si no especificas este campo, cuando implementas
Model
comoDeployedModel
en un recursoEndpoint
, la configuración predeterminada es/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
, en la que ENDPOINT se reemplaza por el último segmento del camponame
deEndpoint
(después deendpoints/
) y DEPLOYED_MODEL se reemplaza por el campoid
deDeployedModel
.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-health-route
para especificar este campo.predictRoute
(opcional)La ruta del servidor HTTP del contenedor al que deseas que Vertex AI reenvíe las solicitudes de predicción.
Si no especificas este campo, cuando implementas
Model
comoDeployedModel
en un recursoEndpoint
, la configuración predeterminada es/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
, en la que ENDPOINT se reemplaza por el último segmento del camponame
deEndpoint
(después deendpoints/
) y DEPLOYED_MODEL se reemplaza por el campoid
deDeployedModel
.Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-predict-route
para especificar este campo.sharedMemorySizeMb
(opcional)La cantidad de memoria de VM que se reservará en un volumen de memoria compartida para el modelo en megabytes.
La memoria compartida es un mecanismo de comunicación entre procesos (IPC) que permite que varios procesos accedan a un bloque común de memoria y lo manipulen. La cantidad de memoria compartida necesaria, si la hay, es un detalle de implementación de tu contenedor y modelo. Consulta la documentación de tu servidor de modelos para obtener lineamientos.
Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-shared-memory-size-mb
para especificar este campo.startupProbe
(opcional)Especificación para el sondeo que verifica si se inició la aplicación de contenedor.
Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-seconds
para especificar este campo.healthProbe
(opcional)Especificación del sondeo que verifica si un contenedor está listo para aceptar tráfico.
Si usas el comando
gcloud ai models upload
, puedes usar la marca--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
para especificar este campo.
Además de las variables que estableces en el campo Model.containerSpec.env
, Vertex AI establece muchas otras variables según la configuración. Obtén más información para
usar estas variables de entorno en estos campos y en la instrucción ENTRYPOINT
del contenedor.
Ejemplos de importación de modelos
En los siguientes ejemplos, se muestra cómo especificar campos de API relacionados con contenedores cuando importas un modelo.
gcloud
En el siguiente ejemplo, se usa el comando gcloud ai models upload
:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--container-command=COMMAND \
--container-args=ARGS \
--container-ports=PORTS \
--container-env-vars=ENV \
--container-health-route=HEALTH_ROUTE \
--container-predict-route=PREDICT_ROUTE \
--container-shared-memory-size-mb=SHARED_MEMORY_SIZE \
--container-startup-probe-exec=STARTUP_PROBE_EXEC \
--container-startup-probe-period-seconds=STARTUP_PROBE_PERIOD \
--container-startup-probe-timeout-seconds=STARTUP_PROBE_TIMEOUT \
--container-health-probe-exec=HEALTH_PROBE_EXEC \
--container-health-probe-period-seconds=HEALTH_PROBE_PERIOD \
--container-health-probe-timeout-seconds=HEALTH_PROBE_TIMEOUT \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
La marca --container-image-uri
es obligatoria. Todas las demás marcas que comienzan con --container-
son opcionales. Para obtener más información sobre los valores de estos campos, consulta la sección anterior a esta guía.
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.
Para obtener más información, consulta la Guía de importación de modelos.
Envía solicitudes de predicción
Para enviar una solicitud de predicción en línea a tu Model
, sigue las instrucciones en Obtén predicciones de un modelo entrenado personalizado: este proceso funciona de la misma manera, independientemente de que uses un contenedor personalizado.
Obtén más información sobre los requisitos de solicitud y respuesta de predicción para contenedores personalizados.
¿Qué sigue?
- Si deseas obtener información sobre todo lo que debes considerar cuando diseñas un contenedor personalizado para usar con Vertex AI, lee Requisitos personalizados para contenedores.