Esta guía para principiantes es una introducción a cómo obtener inferencias de modelos personalizados en Vertex AI.
Objetivos de aprendizaje
Nivel de experiencia con Vertex AI: principiante
Tiempo de lectura estimado: 15 minutos
Qué aprenderás:
- Ventajas de usar un servicio de inferencia gestionado.
- Cómo funcionan las inferencias por lotes en Vertex AI.
- Cómo funcionan las inferencias online en Vertex AI.
¿Por qué usar un servicio de inferencia gestionado?
Imagina que te han encargado crear un modelo que tome como entrada una imagen de una planta y prediga la especie. Puedes empezar entrenando un modelo en un cuaderno y probando diferentes hiperparámetros y arquitecturas. Cuando tengas un modelo entrenado, puedes llamar al método predict
en el framework de aprendizaje automático que elijas y probar la calidad del modelo.
Este flujo de trabajo es ideal para experimentar, pero si quieres usar el modelo para obtener inferencias sobre muchos datos o inferencias de baja latencia sobre la marcha, necesitarás algo más que un cuaderno. Por ejemplo, supongamos que quieres medir la biodiversidad de un ecosistema concreto y, en lugar de que los humanos identifiquen y cuenten manualmente las especies de plantas en la naturaleza, quieres usar este modelo de aprendizaje automático para clasificar grandes lotes de imágenes. Si usas un cuaderno, es posible que te encuentres con limitaciones de memoria. Además, es probable que obtener inferencias de todos esos datos sea un trabajo de larga duración que pueda agotar el tiempo de espera en tu cuaderno.
¿O qué ocurriría si quisieras usar este modelo en una aplicación en la que los usuarios pudieran subir imágenes de plantas y que se identificaran inmediatamente? Necesitarás un lugar para alojar el modelo que esté fuera de un cuaderno al que pueda llamar tu aplicación para obtener una inferencia. Además, es poco probable que tengas un tráfico constante a tu modelo, por lo que te interesará un servicio que pueda autoescalarse cuando sea necesario.
En todos estos casos, un servicio de inferencia gestionado reducirá las dificultades de alojamiento y uso de tus modelos de aprendizaje automático. En esta guía se ofrece una introducción a cómo obtener inferencias de modelos de aprendizaje automático en Vertex AI. Ten en cuenta que hay otras personalizaciones, funciones y formas de interactuar con el servicio que no se describen aquí. Esta guía tiene como objetivo ofrecer una descripción general. Para obtener más información, consulta la documentación sobre las inferencias de Vertex AI.
Información general sobre el servicio de inferencia gestionado
Vertex AI admite inferencias por lotes y online.
La inferencia por lotes es una solicitud asíncrona. Es una buena opción si no necesitas una respuesta inmediata y quieres procesar los datos acumulados a partir de una sola solicitud. En el ejemplo que se ha mencionado en la introducción, este sería el caso práctico de caracterización de la biodiversidad.
Si quieres obtener inferencias de baja latencia a partir de los datos que se envían a tu modelo sobre la marcha, puedes usar la inferencia online. En el ejemplo que hemos visto en la introducción, este sería el caso práctico en el que quieres insertar tu modelo en una aplicación que ayude a los usuarios a identificar especies de plantas de inmediato.
Subir un modelo al registro de modelos de Vertex AI
Para usar el servicio de inferencia, el primer paso es subir el modelo de aprendizaje automático entrenado al registro de modelos de Vertex AI. Es un registro en el que puedes gestionar el ciclo de vida de tus modelos.
Crear un recurso de modelo
Cuando entrenas modelos con el servicio de entrenamiento personalizado de Vertex AI, puedes importar automáticamente tu modelo al registro una vez que se haya completado el trabajo de entrenamiento. Si has omitido ese paso o has entrenado el modelo fuera de Vertex AI, puedes subirlo manualmente mediante la consola de Google Cloud o el SDK de Vertex AI para Python. Para ello, indica una ubicación de Cloud Storage con los artefactos del modelo guardado. El formato de estos artefactos del modelo puede ser savedmodel.pb
, model.joblib
, etc., en función del framework de aprendizaje automático que estés usando.
Al subir artefactos al registro de modelos de Vertex AI, se crea un recurso Model
, que se puede ver en la consola: Google Cloud
Seleccionar un contenedor
Cuando importas un modelo al registro de modelos de Vertex AI, debes asociarlo a un contenedor para que Vertex AI pueda atender las solicitudes de inferencia.
Contenedores prediseñados
Vertex AI proporciona contenedores precompilados que puedes usar para las inferencias. Los contenedores precompilados se organizan por framework de aprendizaje automático y versión del framework, y proporcionan servidores de inferencia HTTP que puedes usar para ofrecer inferencias con una configuración mínima. Solo realizan la operación de inferencia del framework de aprendizaje automático, por lo que, si necesitas preprocesar los datos, debes hacerlo antes de enviar la solicitud de inferencia. Del mismo modo, cualquier posprocesamiento debe realizarse después de enviar la solicitud de inferencia. Para ver un ejemplo de cómo usar un contenedor prediseñado, consulta el cuaderno Serving PyTorch image models with prebuilt containers on Vertex AI (Servir modelos de imágenes de PyTorch con contenedores prediseñados en Vertex AI).
Contenedores personalizados
Si tu caso práctico requiere bibliotecas que no se incluyen en los contenedores precompilados o si tienes transformaciones de datos personalizadas que quieres realizar como parte de la solicitud de inferencia, puedes usar un contenedor personalizado que compiles y envíes a Artifact Registry. Aunque los contenedores personalizados permiten una mayor personalización, el contenedor debe ejecutar un servidor HTTP. En concreto, el contenedor debe escuchar y responder a las comprobaciones de actividad, las comprobaciones de estado y las solicitudes de inferencia. En la mayoría de los casos, se recomienda usar un contenedor prediseñado si es posible, ya que es la opción más sencilla. Para ver un ejemplo de cómo usar un contenedor personalizado, consulta el cuaderno Clasificación de imágenes de PyTorch con una sola GPU mediante Vertex Training con un contenedor personalizado.
Rutinas de inferencia personalizadas
Si tu caso práctico requiere transformaciones de preprocesamiento y posprocesamiento personalizadas, y no quieres incurrir en los costes de crear y mantener un contenedor personalizado, puedes usar rutinas de inferencia personalizadas. Con las rutinas de inferencia personalizadas, puedes proporcionar tus transformaciones de datos como código Python. En segundo plano, el SDK de Vertex AI para Python creará un contenedor personalizado que podrás probar de forma local y desplegar en Vertex AI. Para ver un ejemplo de cómo usar rutinas de inferencia personalizadas, consulta el cuaderno Rutinas de inferencia personalizadas con Sklearn.
Obtener inferencias por lotes
Una vez que tu modelo esté en Vertex AI Model Registry, podrás enviar una tarea de inferencia por lotes desde la consola o el SDK de Vertex AI para Python. Google Cloud Deberá especificar la ubicación de los datos de origen, así como la ubicación de Cloud Storage o BigQuery en la que quiera guardar los resultados. También puedes especificar el tipo de máquina en el que quieres que se ejecute este trabajo y los aceleradores opcionales. Como el servicio de inferencias está totalmente gestionado, Vertex AI aprovisiona automáticamente los recursos de computación, realiza la tarea de inferencia y se asegura de que se eliminen los recursos de computación una vez que se haya completado el trabajo de inferencia. Puedes hacer un seguimiento del estado de tus tareas de inferencia por lotes en la Google Cloud consola.
Obtener inferencias online
Si quieres obtener inferencias online, debes dar un paso más y desplegar tu modelo en un endpoint de Vertex AI.
De esta forma, los artefactos del modelo se asocian a recursos físicos para ofrecer un servicio de baja latencia y se crea un recurso DeployedModel
.
Una vez que el modelo se ha implementado en un endpoint, acepta solicitudes como cualquier otro endpoint REST, lo que significa que puedes llamarlo desde una función de Cloud Run, un chatbot, una aplicación web, etc. Ten en cuenta que puedes implementar varios modelos en un mismo endpoint y dividir el tráfico entre ellos. Esta función es útil, por ejemplo, si quieres lanzar una nueva versión de un modelo, pero no quieres dirigir todo el tráfico al nuevo modelo de inmediato. También puedes desplegar el mismo modelo en varios endpoints.
Recursos para obtener inferencias de modelos personalizados en Vertex AI
Para obtener más información sobre cómo alojar y servir modelos en Vertex AI, consulta los siguientes recursos o el repositorio de GitHub de ejemplos de Vertex AI.
- Vídeo sobre cómo obtener predicciones
- Entrenar y servir un modelo de TensorFlow con un contenedor precompilado
- Servir modelos de imágenes de PyTorch con contenedores precompilados en Vertex AI
- Servir un modelo de Stable Diffusion con un contenedor prediseñado
- Rutinas de inferencia personalizadas con Sklearn