En este tutorial, descubrirá cómo aplicar el modelo Meta Llama 3.2-90b-vision-instruct que ya está disponible en watsonx.ai a tareas de visión artificial como la creación de subtítulos de imágenes y la respuesta visual a preguntas.
Muchos de nosotros estamos familiarizados con las aplicaciones de IA unimodal. Una popular herramienta de IA unimodal es ChatGPT. Los chatbots como ChatGPT utilizan el procesamiento del lenguaje natural (PLN) para comprender las preguntas de los usuarios y automatizar las respuestas en tiempo real. El tipo de entrada al que se pueden aplicar estos modelos de lenguaje de gran tamaño (LLM) unimodales se limita al texto.
La inteligencia artificial multimodal (IA) se basa en modelos de machine learning construidos sobre redes neuronales. Estas redes neuronales son capaces de procesar e integrar información de múltiples tipos de datos utilizando técnicas de deep learning. Estas diferentes modalidades producidas por el modelo de IA generativa, a veces llamadas modelos de IA generativa, pueden incluir texto, imágenes, entrada de vídeo y audio.
Los sistemas de IA multimodal tienen muchos casos de uso en el mundo real, desde diagnósticos de imágenes médicas en entornos sanitarios mediante visión artificial hasta reconocimiento de voz en aplicaciones de traducción. Estos avances en la tecnología de la IA pueden optimizar varios dominios. La principal ventaja de las arquitecturas multimodales es la capacidad de procesar diferentes tipos de datos.
La IA multimodal consta de tres elementos:
Módulo de entrada
El módulo de entrada se basa en múltiples redes neuronales unimodales para preprocesar distintos tipos de datos. Aquí, los datos se preparan para los algoritmos de machine learning realizados en el módulo de fusión.
Módulo de fusión
La combinación, la alineación y el procesamiento de los datos se producen en este módulo. El proceso de fusión se produce para cada modalidad de datos. En este módulo se utilizan habitualmente varias técnicas. Un ejemplo es la fusión temprana, en la que se combinan datos sin procesar de todas las entradas. Además, la fusión intermedia es cuando los datos de diferentes modalidades se codifican en diferentes etapas de preprocesamiento. Por último, la fusión tardía consolida los datos después de ser procesados inicialmente en el módulo de entrada por diferentes modelos correspondientes a cada modalidad.
Módulo de output
El módulo de output genera los resultados en el formato deseado tras interpretar los datos producidos en el módulo de fusión. Dichos outputs pueden adoptar diversas formas, como texto, imagen o una combinación de ambos.
Consulte este vídeo de YouTube sobre tecnología IBM, que le guiará a través de los pasos 1 y 2 de la configuración.
Aunque puede elegir entre varias herramientas, este tutorial es el más adecuado para un Jupyter Notebook. Los Jupyter Notebooks se utilizan ampliamente en la ciencia de datos para combinar código con diversas fuentes de datos, como texto, imágenes y visualizaciones de datos.
Este tutorial le muestra cómo configurar una cuenta de IBM para utilizar un Jupyter Notebook.
Inicie sesión en watsonx.ai utilizando su cuenta de IBM Cloud.
Cree un proyecto watsonx.ai.
Puede obtener el ID de su proyecto desde su proyecto. Haga clic en la pestaña Administrar. A continuación, copie el ID del proyecto de la sección Detalles de la página General. Necesita este ID para este tutorial.
Cree un Jupyter Notebook.
Este paso abrirá un entorno de cuaderno en el que podrá copiar el código de este tutorial para implementar el ajuste rápido por su cuenta. También puede descargar este cuaderno en su sistema local y cargarlo en su proyecto watsonx.ai como activo. Este Jupyter Notebook junto con los conjuntos de datos utilizados se pueden encontrar en GitHub.
Para evitar conflictos de dependencia de paquetes de Python, recomendamos configurar un entorno virtual.
Para este tutorial, sugerimos utilizar el modelo Meta 3.2-90b-vision-instruct con watsonx.ai para lograr resultados similares. Puede utilizar libremente cualquier modelo de IA que admita el aprendizaje multimodal de su elección. Hay varios modelos de IA multimodal para elegir, incluidos GPT-4 V(ision) y DALL-E 3 de OpenAI , así como Gemini de Google. Asegúrese de utilizar la API adecuada si trabaja con otros modelos, ya que este tutorial está diseñado para watsonx.ai.
Cree una instancia de servicio de watsonx.ai Runtime (seleccione la región adecuada y elija el plan Lite, que es una instancia sin coste).
Genere una clave API.
Asocie la instancia del servicio watsonx.ai Runtime al proyecto que ha creado en watsonx.ai.
Necesitaremos algunas bibliotecas y módulos para este tutorial. Asegúrese de importar los siguientes; si no están instalados, puede resolverlo con una instalación rápida de pip.
Para establecer nuestras credenciales, necesitamos el WATSONX_APIKEY y el WATSONX_PROJECT_ID que generó en el paso 1. Puede almacenarlos en un archivo .env en su directorio o reemplazar el texto del marcador de posición. También estableceremos la URL que sirve como endpoint de la API.
Podemos utilizar la clase Credentials para encapsular nuestras credenciales.
En este tutorial, trabajaremos con varias imágenes para aplicaciones de IA multimodal, como el subtitulado de imágenes y la detección de objetos. Se puede acceder a las imágenes que utilizaremos mediante las siguientes URL. Podemos almacenar estas URL en una lista para codificarlas iterativamente.
Para comprender mejor nuestra entrada de datos, mostremos las imágenes.
Resultado:
url_image_0
url_image_1
url_image_2
url_image_3
Para que estas imágenes sean comprensibles para el LLM, las codificaremos en bytes y luego las decodificaremos a la representación UTF-8.
Ahora que nuestras imágenes se pueden pasar al LLM, configuremos una función para nuestras llamadas a la API de watsonx. La función augment_api_request_body toma la consulta del usuario y la imagen como parámetros y amplía el cuerpo de la solicitud de API. Usaremos esta función en cada iteración.
def augment_api_request_body(user_query, image): messages = [ { "role": "user", "content": [{ "type": "text", "text": 'You are a helpful assistant. Answer the following user query in 1 or 2 sentences: ' + user_query }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image}", } }] } ] return messages
Vamos a instanciar la interfaz del modelo usando la clase ModelInference. En este tutorial, usaremos el modelo themeta-llama/llama-3-2-90b-vision-instruct.
Ahora podemos revisar nuestras imágenes para ver las descripciones de texto generadas por el modelo en respuesta a la consulta: "¿Qué está sucediendo en esta imagen?".
Resultado:
Esta imagen muestra una concurrida calle de una ciudad con edificios altos y coches, y gente caminando por la acera. La calle está llena de semáforos, árboles y señales de tráfico, y hay varias personas cruzando la calle en una intersección.
La imagen muestra a una mujer con atuendo deportivo corriendo por la calle, con un edificio y un coche visibles al fondo. La mujer lleva una sudadera con capucha amarilla, polainas negras y zapatillas de deporte, y parece estar haciendo un trote o carrera informal.
La imagen muestra una zona inundada, con agua cubriendo el suelo y los edificios circundantes. La inundación parece ser grave, y el nivel del agua llega a los techos de algunas estructuras.
**Descripción de la imagen**
* La imagen muestra un primer plano de una etiqueta nutricional, con un dedo señalándola.
* La etiqueta proporciona información detallada sobre el contenido nutricional de un alimento específico, incluyendo:
+ Calorías
+ Grasa
+ Sodio
+ Carbohidratos
+ Otra indormación relevante
* La etiqueta se muestra sobre un fondo blanco con texto negro, lo que facilita su lectura y comprensión.
El modelo Llama 3.2-90b-vision-instruct consiguió subtitular con éxito cada imagen con un nivel de detalle significativo.
Ahora que hemos demostrado la capacidad del modelo para realizar la conversión de imágenes a texto en el paso anterior, hagámosle al modelo algunas preguntas que requieran la detección de objetos. En cuanto a la segunda imagen que muestra a la mujer corriendo al aire libre, le preguntaremos a la modelo: "¿Cuántos coches hay en esta imagen?"
Output: En esta imagen hay un coche. El coche está aparcado en la calle, a la derecha del edificio.
El modelo identificó correctamente el vehículo singular en la imagen. Ahora, analicemos los daños que se muestran en la imagen de la inundación.
Output: Los daños en esta imagen son graves, ya que las aguas de la inundación cubren una parte significativa de la tierra y pueden causar grandes daños a las estructuras y los cultivos. El nivel del agua parece llegar al menos a la cintura, lo que podría provocar pérdidas significativas para los propietarios y agricultores de la zona.
Esta respuesta destaca el valor que la IA multimodal tiene para dominios como los seguros. El modelo fue capaz de detectar la gravedad de los daños causados en la vivienda inundada. Esta podría ser una herramienta poderosa para mejorar el tiempo de procesamiento de reclamaciones de seguros.
A continuación, preguntemos al modelo cuánto contenido de sodio hay en la imagen de la etiqueta nutricional.
Output: **Contenido de sodio:** 640 miligramos (mg)
¡Genial! El modelo ha sido capaz de discernir objetos dentro de las imágenes siguiendo las consultas de los usuarios. Le animamos a probar más consultas para demostrar aún más el rendimiento del modelo.
En este tutorial, ha utilizado el modelo Llama 3.2-90b-vision-instruct para realizar operaciones multimodales, como el subtitulado de imágenes y la respuesta visual a preguntas. Para conocer más casos de uso de este modelo, le recomendamos que consulte la página de documentación oficial. Allí encontrará más información sobre los parámetros y capacidades del modelo. El output de Python es importante, ya que muestra la capacidad del sistema multimodal para extraer información de datos multimodales.
Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.
Ponga la IA a trabajar en su negocio con la experiencia líder en IA del sector de IBM y junto a su cartera de soluciones.
Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.