Programa
Mistral lanzó Pixtral 12B, un modelo lingüístico de código abierto de 12.000 millones de parámetros de código abierto (LLM). Este es el primer multimodal de Mistral, lo que significa que puede procesar tanto texto como imágenes.
He aquí por qué Pixtral es una valiosa adición al panorama de los LLM:
- Procesa eficazmente imágenes de todos los tamaños sin preprocesamiento.
- Una ventana contextual de 128K permite manejar avisos complejos y numerosas imágenes.
- Gran rendimiento tanto en tareas de sólo texto como multimodales.
- Gratis para proyectos no monetizados, por lo que es ideal para investigadores y aficionados.
- De código abierto bajo licencia Apache 2.0, apoya la democratización de la IA.
En este tutorial, proporcionaré numerosos ejemplos y orientación paso a paso sobre el uso de Pixtral a través de la interfaz de chat web, Le Chat, y mediante programación a través de la API. Pero antes, vamos a tratar los aspectos teóricos esenciales de Pixtral.
¿Qué es Pixtral 12B?
Mistral AI ha lanzado Pixtral 12B, un modelo diseñado para procesar conjuntamente imágenes y texto. Con 12.000 millones de parámetros, puede realizar tareas que impliquen una mezcla de elementos visuales y lingüísticos, como interpretar tablas, documentos o gráficos.
Es útil para entornos que requieren un profundo conocimiento de ambos formatos.
Una característica clave de Pixtral 12B es su capacidad para manejar múltiples imágenes en una sola entrada, procesándolas a su resolución nativa. El modelo tiene una ventana contextual de 128.000 tokens, que permite analizar documentos largos y complejos, imágenes o múltiples fuentes de datos simultáneamente. Esto lo hace útil en áreas como la elaboración de informes financieros o el escaneado de documentos para empresas.
Puntos de referencia de Pixtral
Pixtral obtiene buenos resultados en las tareas relacionadas con el Conocimiento y Razonamiento Multimodal, especialmente en el test MathVista, donde lidera el pelotón. En las tareas de QA multimodal, también ocupa una posición destacada, sobre todo en ChartQA.
Fuente: Mistral AI
Sin embargo, en tareas de seguimiento de instrucciones y basadas en texto, otros modelos como Claude-3 Haiku y Gemini Flash-8B muestran un rendimiento competitivo o superior. Esto sugiere que Pixtral 12B destaca en el razonamiento multimodal y visual, pero puede que no domine en tareas basadas puramente en texto.
Arquitectura de Pixtral
La arquitectura de Pixtral 12B está diseñada para procesar simultáneamente texto e imágenes. Presenta dos componentes principales un Codificador de Visión y un Decodificador Transformador Multimodal.
El codificador de visión, que tiene 400 millones de parámetros, está específicamente entrenado para adaptarse a imágenes de distintos tamaños y resoluciones.
Fuente: Mistral AI
El segundo componente, el Decodificador Transformador Multimodal, es un modelo más extenso con 12.000 millones de parámetros. Se basa en la arquitectura existente de Mistral Nemo y está diseñado para predecir el siguiente token de texto en secuencias que intercalan datos de texto e imagen.
Este descodificador puede procesar contextos muy largos (hasta 128k tokens), lo que le permite manejar numerosos tokens de imágenes y amplia información textual en documentos de gran tamaño.
Fuente: Mistral AI
Esta arquitectura combinada permite a Pixtral tratar con una amplia gama de tamaños y formatos de imagen, traduciendo imágenes de alta resolución en tokens coherentes sin perder el contexto.
Cómo usar Pixtral en Le Chat
La forma más fácil de acceder gratuitamente a Pixtral es a través de El Chatsu interfaz de chat. Esta interfaz se parece a otras interfaces de chat LLM-como la de ChatGPTpor ejemplo.
Para utilizar Pixtral, navega hasta el selector de modelo situado en la parte inferior, junto a la entrada de consulta, y elige el modelo Pixtral de la lista de modelos disponibles.
Pixtral es un modelo multimodal que admite tanto texto como imágenes. Utilizando el icono del clip situado en la parte inferior, podemos subir una o varias imágenes y combinarlas con una indicación de texto. Por ejemplo, esta funcionalidad puede ayudarnos a identificar una fruta representada en una imagen.
Exploremos otro ejemplo en el que pedimos a Pixtral que transforme una imagen que contiene un gráfico circular en una tabla markdown:
Cómo conectarse a la API de Pixtral en La Plateforme
Aunque utilizar Pixtral a través de su interfaz web es agradable y fácil, no es adecuado para incorporarlo a nuestros proyectos. En esta sección, hablaremos de cómo interactuar con Pixtral a través de su API utilizando Python, mediante La Plataforma.
Configuración del perfil
Para empezar, tenemos que crear una cuenta. Esto puede hacerse con un solo clic utilizando una cuenta de Google o, alternativamente, creando una cuenta tradicional con un nombre de usuario y una contraseña.
Al crear la cuenta, se nos pide que configuremos un espacio de trabajo. Puedes seleccionar cualquier nombre para tu espacio de trabajo y optar por la opción "Soy creador en solitario".
Después de crear la cuenta, ve a la página página de planes de facturación. Aquí tenemos la opción de crear un plan de facturación experimental, que nos permite probar la API gratuitamente, o configurar un plan de pago. Es importante tener en cuenta que el plan experimental gratuito requiere que vinculemos un número de teléfono válido a nuestra cuenta.
Ahora nuestro perfil debería estar listo para crear una clave API. Esta clave es necesaria para hacer peticiones a la API de Mistral y para interactuar programáticamente con Pixtral utilizando Python.
Generar la clave API
Para generar la clave API, ve a la página Página de la clave API. En la parte superior de la página, tenemos un botón para crear una nueva clave API:
Al crear una clave, se nos pide que le pongamos un nombre y una fecha de caducidad. Sin embargo, ambos campos son opcionales, lo que nos permite dejarlos en blanco si lo deseamos.
En general, es aconsejable fijar una fecha de caducidad para las claves. A menudo, las claves se crean para experimentar con una API, pero luego se olvidan, dejándolas activas indefinidamente. Establecer una fecha de caducidad garantiza que, si una clave se filtra accidentalmente, no pueda utilizarse para siempre, minimizando así los riesgos potenciales.
Una vez creada la clave, se mostrará. Esta pantalla es la única oportunidad de ver la clave, por lo que es esencial copiarla. Si se pierde la clave, la solución es borrarla de la lista y crear una nueva.
Recomiendo crear un archivo .env
en el mismo directorio que el script de Python para almacenar la clave utilizando el siguiente formato (sustituyendo por la clave real):
# contents of the .env fileAPI_KEY=<key_value>
No se recomienda omitir este paso y codificar la clave API en nuestro script. Esto nos impide compartir nuestro código sin compartir también la clave. Aprende más sobre este enfoque en este tutorial sobre Variables de entorno de Python.
Instalar dependencias
Para empezar, instalamos las dependencias necesarias, que incluyen:
mistralai
la biblioteca cliente proporcionada por Mistral para la interacción con la API.python-dotenv
módulo utilizado para cargar variables de entorno desde un archivo.env
.
pip install python-dotenv mistralai
Una vez instaladas las dependencias, podemos proceder a la creación del script. Crea un archivo llamado mistral_example.py
en el mismo directorio que el archivo .env
. El paso inicial consiste en importar los módulos y cargar la clave API en una variable.
# Create a mistral_example.py file in the same folder as the .env fileimport osfrom mistralai import Mistralfrom dotenv import load_dotenvload_dotenv()api_key = os.getenv("API_KEY")
A continuación, podemos proceder a inicializar el cliente.
Inicializar el cliente
La página de documentación del Mistral encontrarás una lista de todos los modelos disponibles. Nos interesa especialmente el último modelo de Pixtral, que tiene el punto final de la API pixtral-12b-2409
.
# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)
Haz una solicitud API
Ya estamos listos para hacer una petición a la API de Mistral e interactuar con Pixtral mediante programación. Aquí tienes un ejemplo de cómo enviar un mensaje de texto:
# Add this code in mistral_example.py after initializing the clientchat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "What is 1 + 1?" } ] }, ])print(chat_response.choices[0].message.content)
Podemos ejecutar este script en el terminal y ver la respuesta del Pixtral a nuestro prompt:
$ python mistral_example.py The sum of 1 + 1 is 2. So,1 + 1 = 2
Utilizar la API con multimodalidad
En el ejemplo proporcionado, la solicitud de texto se envía a través del campo content
, donde type
se establece en "text"
.
{ "type": "text", "text": "What is 1 + 1?"}
El campo content
es una matriz que nos permite enviar varios datos. Como modelo multimodal, Pixtral también acepta datos de imagen. Para utilizar una imagen de una URL en la consulta, podemos incluirla en el campo content
especificando "image_url"
como tipo:
{ "type": "image_url", "Image_url": "<image_url>” }
Sustituye por la URL real de la imagen. Por ejemplo, podemos utilizar Pixtral para analizar los siguientes gráficos de rendimiento:
Fuente: Mistral AI
chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "According to the chart, how does Pixtral 12B performs compared to other models?" }, { "type": "image_url", "image_url": "https://mistral.ai/images/news/pixtral-12b/pixtral-benchmarks.png" } ] }, ])print(chat_response.choices[0].message.content)
Cuando se envía esta solicitud, Pixtral recibe tanto la petición de texto como la imagen que contiene los gráficos para su análisis y, a continuación, proporciona una respuesta en la que se detalla el análisis. No mostraremos aquí la respuesta debido a su considerable extensión.
Carga de imágenes locales
En el ejemplo anterior, hemos mostrado cómo mostrar una imagen desde una URL. Alternativamente, podemos utilizar una imagen almacenada en nuestro disco duro cargándola como una imagen codificada en base-64. Para cargar y codificar una imagen en base-64, utilizamos el paquete incorporado base64
:
def encode_image_base64(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8")
Cuando utilizamos imágenes codificadas en base-64, seguimos utilizando el tipo image_url
para proporcionar la imagen codificada, pero necesitamos anteponerle data:image/jpeg;base64,
:
{ "type": "image_url", "image_url": f"data:image/jpeg;base64,{base_64_image}"}
base_64_image
es el resultado de llamar a la función encode_image_base64()
para cargar la imagen. Utilicemos esto para pedir a Pixtral que construya un sitio web de listas de tareas con dos páginas basado en los dos bocetos siguientes que he hecho:
Proporcionamos las dos imágenes por separado, así como una petición para crear un sitio web HTML basado en las imágenes:
list_image = encode_image_base64("./todo-list.jpeg")new_item_image = encode_image_base64("./new-item-form.jpeg")chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "Create a HTML website with two pages like in the images" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{list_image}" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{new_item_image}" }, ] }, ])print(chat_response.choices[0].message.content)
Pixtral mostrará dos bloques de código con el contenido de las dos páginas. Guardamos el código en dos archivos llamados index.html
y add.html
y los abrimos en el navegador. Este fue el resultado:
Aunque todavía no es una aplicación totalmente funcional, es operativa y un excelente punto de partida para seguir desarrollándola.
Conclusión
Pixtral 12B es el primer modelo multimodal de Mistral. Puede manejar imágenes de todos los tamaños sin preprocesamiento, dispone de una ventana contextual de 128K para indicaciones complejas, y funciona bien tanto en tareas de sólo texto como multimodales.
Disponible gratuitamente en proyectos no monetizados y de código abierto bajo licencia Apache 2.0, Pixtral es valioso tanto para investigadores como para aficionados.
En este tutorial, he proporcionado información práctica sobre el uso de Pixtral, destacando sus capacidades mediante ejemplos y una guía paso a paso.
Preguntas frecuentes
¿El uso de Pixtral es gratuito y en qué condiciones?
Pixtral se puede utilizar gratuitamente en El Chat o a través de la API para proyectos no monetizados.
¿Es Pixtral de código abierto?
Sí. Es de código abierto bajo licencia Apache 2.0.
¿Qué tipo de datos de entrada admite Pixtral?
Pixtral es el primer LLM multimodal de Mistral AI. Admite tanto texto como imágenes.
¿Qué tipo de imágenes admite Pixtral?
Pixtral admite imágenes de cualquier tamaño sin necesidad de ningún tipo de tratamiento previo.
¿Por qué es importante Pixtral?
Pixtral tiene un rendimiento excelente para un modelo con sólo 12 mil millones de parámetros. Además, se puede utilizar gratuitamente y es de código abierto.