Para personalizar el modo en que AI Platform Prediction entrega predicciones en línea desde tu modelo de aprendizaje automático entrenado (AA), puedes especificar un contenedor personalizado en lugar de una versión del entorno de ejecución cuando creas una versión del modelo. Cuando usas un contenedor personalizado, AI Platform Prediction ejecuta un contenedor de Docker de tu elección en cada nodo de predicción, en lugar de ejecutar el código de versión estándar del entorno de ejecución para entregar predicciones desde artefactos del modelo compatibles.
Se recomienda usar un contenedor personalizado por las siguientes razones:
- entregar predicciones de un modelo de AA entrenado mediante un framework que no sea TensorFlow, scikit-learn o XGBoost
- 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 una versión del modelo que usa un contenedor personalizado. No proporciona instrucciones detalladas sobre cómo diseñar y crear una imagen de contenedor de Docker. Para ver un ejemplo de cómo crear una imagen de contenedor y usarla con AI Platform Prediction, lee Comienza: entrega predicciones de PyTorch con un contenedor personalizado.
Si deseas usar un contenedor personalizado, debes usar un extremo regional y un tipo de máquina de Compute Engine (N1) para la versión del modelo.
Prepara una imagen de contenedor
Para crear una versión del modelo que usa un contenedor personalizado, debes proporcionar una imagen de contenedor de Docker como base del 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 la imagen de contenedor a un repositorio de Artifact Registry que cumpla con los requisitos de publicación de imágenes de contenedor.
Obtén información para enviar una imagen de contenedor a Artifact Registry.
Crea un modelo y la versión del modelo
Especifica varias opciones de configuración cuando creas un modelo para asegurarte de que las versiones del modelo que crees más adelante sean compatibles con el contenedor personalizado.
Luego, especifica la mayor parte de la configuración del contenedor cuando crees una versión del modelo.
Crea un modelo
A fin de crear un modelo, sigue las instrucciones para crear un recurso de modelo. Debes crear el modelo en un extremo regional que coincida con la región del repositorio de Artifact Registry en la que se almacena la imagen de contenedor. Para obtener más información, lee los requisitos de publicación de imágenes de contenedor.
Cómo crear una versión del modelo
Cuando creas una versión del modelo que usa un contenedor personalizado, debes configurar los siguientes campos de API específicos de contenedores, además de los otros campos que especifiques para una versión del modelo:
Version.container
Version.routes
(opcional)
En las siguientes secciones, se describe cómo configurar estos campos.
Además, ten en cuenta las siguientes diferencias específicas de contenedores en la forma en que configuras otros campos de la API:
Version.machineType
: Debes configurar este campo para un tipo de máquina (N1) de Compute Engine.Version.deploymentUri
: Este campo se vuelve opcional. Obtén información sobre cómo el contenedor puede acceder a los artefactos especificados por este campo.Version.runtimeVersion
,Version.framework
,Version.pythonVersion
,Version.predictionClass
yVersion.packageUris
: No debes especificar estos campos.
Configurar Version.container
Debes especificar un mensaje ContainerSpec
en el campo Version.container
. En este mensaje, puedes especificar los siguientes subcampos. Si usas el comando gcloud beta ai-platform versions create
con el fin de crear la versión del modelo, puedes usar una marca de línea de comandos para especificar cada subcampo.
image
(obligatorio)El URI de Artifact Registry de la imagen de contenedor.
Marca de la CLI de gcloud:
--image
command
(opcional)Es un arreglo de un ejecutable y argumentos para anular el
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 paraContainerSpec
.Marca de la CLI de gcloud:
--command
args
(opcional)Es un array de un ejecutable y argumentos para anular la función del contenedor.
CMD
Para obtener más información sobre cómo dar formato a este campo y cómo interactúa con elcommand
, lee la referencia de la API paraContainerSpec
Marca de la CLI de gcloud:
--args
ports
(opcional)Un arreglo de puertos. AI Platform Prediction 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.Marca de la CLI de gcloud:
--ports
env
(opcional)Un arreglo de variables de entorno a las que pueden hacer referencia el comando de punto de entrada del contenedor y los campos
command
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 paraContainerSpec
.Marca de la CLI de gcloud:
--env-vars
Además de las variables que estableces en el campo Version.container.env
, AI Platform Prediction establece muchas otras variables según la configuración.
Obtén más información sobre el uso de estas variables de entorno en estos campos y en el comando de punto de entrada del contenedor.
En el siguiente ejemplo, se muestra cómo especificar estos campos cuando creas una versión del modelo con la CLI de Google Cloud:
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2'
Reemplaza lo siguiente:
- VERSION: El nombre de la versión del modelo.
- REGION: La región del extremo de AI Platform Prediction donde creaste el modelo.
- MODEL: El nombre del modelo.
- IMAGE_URI: El URI de la imagen de contenedor en Artifact Registry, que debe comenzar con REGION (como se describe en los requisitos de publicación de imágenes de contenedor)
Configurar Version.routes
Puedes especificar un mensaje RouteMap
en el campo Version.routes
. En este mensaje, puedes especificar los siguientes subcampos. Si usas el comando gcloud beta ai-platform versions create
con el fin de crear la versión del modelo, puedes usar una marca de línea de comandos para especificar cada subcampo.
health
(opcional)La ruta del servidor HTTP del contenedor en la que deseas que AI Platform Prediction envíe las verificaciones de estado.
Si no especificas este campo, el valor predeterminado es
/v1/models/MODEL/versions/VERSION
, en el que MODEL y VERSION se reemplazan por los nombres del modelo y la versión del modelo, respectivamente.Marca de la CLI de gcloud:
--health-route
predict
(opcional)La ruta del servidor HTTP del contenedor en la que deseas que AI Platform Prediction reenvíe las solicitudes de predicción.
Si no especificas este campo, el valor predeterminado es
/v1/models/MODEL/versions/VERSION:predict
, en el que MODEL y VERSION se reemplazan por los nombres del modelo y la versión del modelo, respectivamente.Marca de la CLI de gcloud:
--predict-route
En el siguiente ejemplo, se muestra cómo especificar estos campos cuando creas una versión del modelo con la CLI de gcloud:
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2' \
--health-route=/health \
--predict-route=/predict
Reemplaza lo siguiente:
- VERSION: El nombre de la versión del modelo.
- REGION: La región del extremo de AI Platform Prediction donde creaste el modelo.
- MODEL: El nombre del modelo.
- IMAGE_URI: El URI de la imagen de contenedor en Artifact Registry, que debe comenzar con REGION (como se describe en los requisitos de publicación de imágenes de contenedor)
Envía solicitudes de predicción
Para enviar una solicitud de predicción en línea a la versión del modelo, sigue la guía de predicción en línea. Este proceso funciona de la misma manera, independientemente de que uses un contenedor personalizado.
Sin embargo, cuando usas un contenedor personalizado, no es necesario que el cuerpo de cada solicitud de predicción cumpla con los requisitos del cuerpo de la solicitud para las versiones del modelo que usan una versión del entorno de ejecución. Dicho esto, te recomendamos que diseñes el contenedor para esperar cuerpos de solicitud con el formato estándar, si es posible. Obtén más información sobre los requisitos de solicitud y respuesta de predicción para contenedores personalizados.
¿Qué sigue?
Para ver un ejemplo de cómo crear una imagen de contenedor y usarla con AI Platform Prediction, lee Comienza: entrega predicciones de PyTorch con un contenedor personalizado.
Si deseas obtener información sobre todo lo que debes considerar cuando diseñas un contenedor personalizado para usar con AI Platform Prediction, lee Requisitos personalizados para contenedores.
Si quieres obtener información sobre cómo modificar los permisos de un contenedor para acceder a otros servicios de Google Cloud, consulta Usa una cuenta de servicio personalizada.