Esta guía para principiantes es una introducción a la obtención de predicciones de modelos personalizados en Vertex AI.
Objetivos de aprendizaje
Nivel de experiencia de Vertex AI: Principiante
Tiempo de lectura estimado: 15 minutos
Qué aprenderás
- Beneficios de usar un servicio de predicción administrado.
- Cómo funcionan las predicciones por lotes en Vertex AI.
- Cómo funcionan las predicciones en línea en Vertex AI.
¿Por qué usar un servicio de predicción administrado?
Imagina que tienes la tarea de crear un modelo que tome como entrada una imagen de una planta y prediga las especies. Para comenzar, puedes entrenar un modelo en un notebook y probar diferentes hiperparámetros y arquitecturas. Cuando tienes un modelo entrenado, puedes llamar al método predict
en el framework de AA que elijas y probar su calidad.
Este flujo de trabajo es excelente para la experimentación, pero si quieres usar el modelo para obtener predicciones sobre muchos datos o predicciones de baja latencia sobre la marcha, necesitarás algo más que un notebook. Por ejemplo, supongamos que intentas medir la biodiversidad de un ecosistema en particular y, en lugar de que las personas identifiquen y cuenten manualmente las especies de plantas en la naturaleza, quieres usar este modelo de AA para clasificar grandes lotes de imágenes. Si usas un notebook, es posible que tengas problemas de memoria. Además, es probable que obtener predicciones de todos esos datos sea un trabajo que demore mucho y agote el tiempo de espera en tu notebook.
O imagina que quieres usar este modelo en una aplicación en la que los usuarios puedan subir imágenes de plantas y que las identifiquen de inmediato. Necesitarás un lugar para alojar el modelo que existe fuera de un notebook al que tu aplicación pueda llamar para realizar una predicción. Además, es poco probable que tengas tráfico coherente en tu modelo, por lo que necesitarás un servicio que pueda ajustar la escala de forma automática cuando sea necesario.
En todos estos casos, un servicio de predicción administrado reducirá las complicaciones del hosting y el uso de tus modelos de AA. En esta guía, se proporciona una introducción a la obtención de predicciones de modelos de AA en Vertex AI. Ten en cuenta que existen personalizaciones, funciones y formas de interfaz adicionales con el servicio que no se tratan aquí. El objetivo de esta guía es proporcionar una descripción general. Para obtener más información, consulta la documentación de Vertex AI Prediction.
Descripción general del servicio de predicción administrado
Vertex AI admite predicciones en línea y por lotes.
La predicción por lotes es una solicitud asíncrona. Es una buena opción cuando no necesitas una respuesta inmediata y quieres procesar datos acumulados en una sola solicitud. En el ejemplo analizado en la introducción, este sería el caso de uso de la caracterización de la biodiversidad.
Si quieres obtener predicciones de latencia baja a partir de los datos que se pasan a tu modelo en el momento, puedes usar la Predicción en línea. En el ejemplo que analizamos en la introducción, este sería el caso de uso en el que deseas incorporar tu modelo en una app que ayude a los usuarios a identificar especies de plantas de inmediato.
Sube el modelo a Vertex AI Model Registry
Para usar el servicio de predicción, el primer paso es subir tu modelo entrenado del AA a Vertex AI Model Registry. Este es un registro en el que puedes administrar el ciclo de vida de tus modelos.
Cómo crear un recurso del modelo
Cuando entrenas modelos con el servicio de entrenamiento personalizado de Vertex AI, puedes hacer que este se importe de forma automática al registro después de que se complete el trabajo de entrenamiento. Si omitiste ese paso o entrenaste tu modelo fuera de Vertex AI, puedes subirlo de forma manual a través de la consola de Google Cloud o el SDK de Vertex AI para Python si apuntas a una ubicación de Cloud Storage con tus artefactos de modelo guardados. El formato de estos artefactos del modelo puede ser savedmodel.pb
, model.joblib
, model.pkl
, etc., según el marco de trabajo de AA que uses.
Cuando subes artefactos a Vertex AI Model Registry, se crea un recurso Model
, que se puede ver en la consola de Google Cloud como se muestra a continuación.
Selecciona un contenedor
Cuando importas un modelo a Vertex AI Model Registry, debes asociarlo con un contenedor para que Vertex AI entregue solicitudes de predicción.
Contenedores compilados previamente
Vertex AI proporciona contenedores compilados previamente que puedes usar para las predicciones. Los contenedores previamente compilados están organizados por framework de AA y una versión del framework, y proporcionan servidores de predicción HTTP que puedes usar para entregar predicciones con una configuración mínima. Solo realizan la operación de predicción del framework de aprendizaje automático, por lo que, si necesitas procesar tus datos con anterioridad, debes hacerlo antes de realizar la solicitud de predicción. Del mismo modo, cualquier procesamiento posterior debe ocurrir después de realizar la solicitud de predicción. Para ver un ejemplo de cómo usar un contenedor compilado previamente, consulta el notebook Entrega modelos de imagen de PyTorch con contenedores compilados con anterioridad en Vertex AI.
Contenedores personalizados
Si tu caso de uso requiere de bibliotecas que no se incluyen en los contenedores compilados con anterioridad o tal vez tienes transformaciones de datos personalizadas que desees realizar como parte de la solicitud de predicción, puedes usar un contenedor personalizado que compiles y envíes a Artifact Registry. Si bien los contenedores personalizados permiten una mayor personalización, el contenedor debe ejecutar un servidor HTTP. Específicamente, el contenedor debe escuchar y responder verificaciones de actividad, verificaciones de estado y solicitudes de predicción. En la mayoría de los casos, se recomienda usar un contenedor precompilado si es posible. Para ver un ejemplo de cómo usar un contenedor personalizado, consulta el notebook GPU-PyTorch Image Classification mediante el entrenamiento de Vertex con un contenedor personalizado.
Rutinas de predicción personalizadas
Si tu caso de uso requiere transformaciones personalizadas de procesamiento previo y posterior y no deseas la sobrecarga de compilar y mantener un contenedor personalizado, puedes usar las rutinas de predicción personalizadas. Con las rutinas de predicción personalizadas, puedes proporcionar tus transformaciones de datos como código de Python y, en segundo plano, el SDK de Vertex AI para Python compilará un contenedor personalizado que puedes probar de forma local y, luego, implementarlo en Vertex AI. Para ver un ejemplo del uso de rutinas de predicción personalizadas, consulta el notebook Rutinas de predicción personalizadas con Sklearn.
Obtén predicciones por lotes
Una vez que tu modelo esté en Vertex AI Model Registry, puedes enviar un trabajo de predicción por lotes desde la consola de Google Cloud o el SDK de Vertex AI para Python. Deberás especificar la ubicación de los datos de origen, así como la ubicación de Cloud Storage o BigQuery donde quieres que se guarden los resultados. También puedes especificar el tipo de máquina en el que deseas que se ejecute este trabajo y los aceleradores opcionales. Debido a que el servicio de predicciones es completamente administrado, Vertex AI aprovisiona automáticamente los recursos de procesamiento, realiza la tarea de predicción y garantiza la eliminación de los recursos de procesamiento una vez que finalice el trabajo de predicción. Se puede hacer un seguimiento del estado de los trabajos de predicción por lotes en la consola de Google Cloud.
Obtén predicciones en línea
Si quieres obtener predicciones en línea, debes realizar el paso adicional de implementar tu modelo en un extremo de Vertex AI.
De esta manera, se asocian los artefactos del modelo con recursos físicos para la entrega de latencia baja y se crea un recurso DeployedModel
.
Una vez que el modelo se implementa en un extremo, acepta solicitudes como cualquier otro extremo de REST, lo que significa que puedes llamarlo desde una función de Cloud Functions, chatbot, una aplicación web, etcétera. Ten en cuenta que puedes implementar múltiples modelos en un solo extremo, lo que divide el tráfico entre ellos. Esta función es útil, por ejemplo, si quieres lanzar una versión de modelo nueva, pero no deseas dirigir todo el tráfico al modelo nuevo de manera inmediata. También puedes implementar el mismo modelo en varios extremos.
Recursos para obtener predicciones a partir de modelos personalizados en Vertex AI
Para obtener más información sobre el hosting y la entrega de modelos en Vertex AI, consulta los siguientes recursos o el repositorio de GitHub de muestras de Vertex AI.
- Video sobre cómo obtener predicciones
- Entrena y entrega un modelo de TensorFlow con un contenedor compilado previamente
- Entrega modelos de imágenes de PyTorch con contenedores precompilados en Vertex AI
- Entrega un modelo de dispersión estable con un contenedor compilado previamente
- Rutinas de predicción personalizadas con Sklearn