Ga naar hoofdinhoud

Pixtral 12B: een gids met praktische voorbeelden

Leer hoe je Mistrals Pixtral 12B interactief gebruikt via Le Chat of programmeermatig via de API op La Plateforme.
· 8 min lezen

Verken met AI

Mistral heeft Pixtral 12B uitgebracht, een open-source Large Language Model (LLM) met 12 miljard parameters. Dit is Mistrals eerste multimodale model, wat betekent dat het zowel tekst als afbeeldingen kan verwerken.

Dit is waarom Pixtral een waardevolle toevoeging is aan het LLM-landschap:

  • Het verwerkt afbeeldingen van alle formaten efficiënt zonder pre-processing.
  • Een contextvenster van 128K maakt het mogelijk om complexe prompts en talrijke afbeeldingen te verwerken.
  • Sterke prestaties in zowel tekst-only als multimodale taken.
  • Gratis voor niet-gemonetiseerde projecten, ideaal voor onderzoekers en hobbyisten.
  • Open-source onder de Apache 2.0-licentie, wat bijdraagt aan de democratisering van AI.

In deze tutorial geef ik tal van voorbeelden en stapsgewijze uitleg over het gebruik van Pixtral via de webchatinterface Le Chat en programmeermatig via de API. Maar eerst behandelen we de belangrijkste theoretische aspecten van Pixtral.

Wat is Pixtral 12B?

Mistral AI heeft Pixtral 12B gelanceerd, een model dat zowel afbeeldingen als tekst samen kan verwerken. Met 12 miljard parameters kan het taken aan waarbij een mix van visuele en talige informatie komt kijken, zoals het interpreteren van grafieken, documenten of diagrammen.

Het is nuttig in omgevingen waar een diep begrip van beide formats nodig is.

Een belangrijk kenmerk van Pixtral 12B is de mogelijkheid om meerdere afbeeldingen in één input te verwerken, op hun oorspronkelijke resolutie. Het model heeft een contextvenster van 128.000 tokens, wat analyse van lange en complexe documenten, afbeeldingen of meerdere databronnen tegelijk mogelijk maakt. Dit is handig in domeinen als financiële verslaggeving of documentenscans voor bedrijven.

Pixtrals benchmarks

Pixtral presteert goed op taken rond Multimodal Knowledge & Reasoning, met name in de MathVista-test, waar het de koppositie inneemt. Ook in multimodale QA-taken scoort het sterk, vooral in ChartQA.

Pixtral benchmarks

Bron: Mistral AI

In instruction following en tekstgebaseerde taken tonen andere modellen zoals Claude-3 Haiku en Gemini Flash-8B echter concurrerende of superieure prestaties. Dit suggereert dat Pixtral 12B uitblinkt in multimodale en visuele redenering, maar mogelijk niet domineert in puur tekstuele taken.

Pixtrals architectuur

De architectuur van Pixtral 12B is ontworpen om tekst en afbeeldingen gelijktijdig te verwerken. Het bestaat uit twee hoofdonderdelen: een Vision Encoder en een Multimodal Transformer Decoder.

De Vision Encoder, met 400 miljoen parameters, is specifiek getraind om afbeeldingen van verschillende groottes en resoluties te verwerken.

De vision encoder van Pixtral.

Bron: Mistral AI

Het tweede onderdeel, de Multimodal Transformer Decoder, is een omvangrijker model met 12 miljard parameters. Het is gebaseerd op de bestaande Mistral Nemo-architectuur en is ontworpen om het volgende teksttoken te voorspellen in sequenties waarin tekst- en afbeeldingsdata zijn verweven.

Deze decoder kan zeer lange contexten verwerken (tot 128k tokens), waardoor hij veel afbeeldingstokens en uitgebreide tekstuele informatie in grote documenten aankan.

De multimodale transformer-decoder van Pixtral.

Bron: Mistral AI

Deze gecombineerde architectuur stelt Pixtral in staat om met een breed scala aan afbeeldingsgroottes en -formaten om te gaan, en hoge-resolutieafbeeldingen om te zetten in coherente tokens zonder contextverlies.

Pixtral gebruiken op Le Chat

De eenvoudigste manier om Pixtral gratis te gebruiken is via Le Chat, hun chatinterface. Deze interface lijkt op andere LLM-chatinterfaces, zoals die van ChatGPT, bijvoorbeeld.

De webinterface van Le Chat.

Om Pixtral te gebruiken, ga je naar de modelkiezer onderaan, naast het promptveld, en kies je het Pixtral-model uit de lijst met beschikbare modellen.

Het Pixtral-model selecteren in Le Chat.

Pixtral is een multimodaal model dat zowel tekst als afbeeldingen ondersteunt. Met het paperclip-pictogram onderaan kunnen we één of meer afbeeldingen uploaden en combineren met een tekstprompt. Deze functionaliteit kan ons bijvoorbeeld helpen om een vrucht op een afbeelding te identificeren.

Een voorbeeld van een multimodale prompt met Pixtral in Le Chat.

Laten we nog een voorbeeld bekijken waarin we Pixtral vragen om een afbeelding met een cirkeldiagram om te zetten naar een markdown-tabel:

Le Chat gebruiken om een grafiek om te zetten naar een teksttabel.

Verbinden met de API van Pixtral op La Plateforme

Hoewel Pixtral via de webinterface prettig en eenvoudig is, is het niet geschikt om het in onze projecten op te nemen. In deze sectie bespreken we hoe je met Pixtral kunt communiceren via hun API met Python, via La Plateforme.

Profiel instellen

Om te beginnen moeten we een account aanmaken. Dit kan met één klik via een Google-account, of door een traditioneel account met een gebruikersnaam en wachtwoord in te stellen.

Na het aanmaken van het account worden we gevraagd een workspace in te richten. Je kunt elke naam kiezen voor je workspace en de optie "I'm a solo creator" selecteren.

Een workspace maken in La Platforme.

Ga na het aanmaken van het account naar de pagina met abonnementen. Hier kunnen we een experimenteel abonnement aanmaken om de API gratis uit te proberen, of een betaald abonnement instellen. Let op: voor het gratis experimentele abonnement moet je een geldig telefoonnummer aan je account koppelen.

Een abonnement kiezen in La Platforme.

Ons profiel is nu klaar om een API-sleutel aan te maken. Deze sleutel is nodig om verzoeken naar de Mistral API te sturen en om programmeermatig met Pixtral te werken via Python.

De API-sleutel genereren

Ga om de API-sleutel te genereren naar de API-sleutelpagina. Bovenaan de pagina staat een knop om een nieuwe API-sleutel te maken:

API-sleutels maken in La Platforme.

Bij het aanmaken van een sleutel worden we gevraagd deze te benoemen en een vervaldatum in te stellen. Beide velden zijn echter optioneel en kunnen leeg blijven als je dat wilt.

Formulier voor het aanmaken van een API-sleutel voor Mistrals La Plateforme

In het algemeen is het raadzaam om een vervaldatum voor sleutels in te stellen. Vaak worden sleutels aangemaakt om met een API te experimenteren en vervolgens vergeten, waardoor ze onbeperkt actief blijven. Een vervaldatum zorgt ervoor dat een gelekte sleutel niet voor altijd bruikbaar is en verkleint zo de risico's.

De API-sleutel veilig bewaren na het aanmaken.

Zodra de sleutel is aangemaakt, wordt hij getoond. Dit is het enige moment waarop je de sleutel kunt bekijken, dus kopieer hem direct. Als de sleutel kwijt is, kun je hem in de lijst verwijderen en een nieuwe aanmaken.

Ik raad aan een .env-bestand aan te maken in dezelfde map als het Python-script om de sleutel op te slaan met het volgende formaat (vervang <key_value> door de daadwerkelijke sleutel):

# contents of the .env fileAPI_KEY=<key_value>

Deze stap overslaan en de API-sleutel hardcoden in ons script is niet aan te raden. Dan kun je je code niet delen zonder ook de sleutel te delen. Leer meer over deze aanpak in deze tutorial over Python-omgevingsvariabelen.

Afhankelijkheden installeren

We beginnen met het installeren van de benodigde afhankelijkheden, waaronder:

  • mistralai, de clientbibliotheek van Mistral voor API-interactie.
  • python-dotenv, een module om omgevingsvariabelen uit een .env-bestand te laden.
pip install python-dotenv mistralai

Zodra de afhankelijkheden zijn geïnstalleerd, kunnen we het script maken. Maak een bestand mistral_example.py in dezelfde map als het .env-bestand. De eerste stap is het importeren van de modules en het laden van de API-sleutel in een variabele.

# 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")

Daarna kunnen we de client initialiseren.

De client initialiseren

De Mistral-documentatiepagina bevat een lijst met alle beschikbare modellen. Wij zijn vooral geïnteresseerd in het nieuwste Pixtral-model, met het API-endpoint pixtral-12b-2409.

# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)

Een API-verzoek doen

We zijn nu klaar om een verzoek naar de Mistral API te sturen en programmeermatig met Pixtral te werken. Hier is een voorbeeld van het indienen van een tekstprompt:

# 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)

We kunnen dit script in de terminal uitvoeren en de reactie van Pixtral op onze prompt bekijken:

$ python mistral_example.py                  The sum of 1 + 1 is 2. So,1 + 1 = 2

De API gebruiken met multimodaliteit

In het gegeven voorbeeld wordt de tekstprompt verzonden via het veld content, waar type is ingesteld op "text".

{  "type": "text",  "text": "What is 1 + 1?"}

Het veld content is een array waarmee we meerdere gegevensdelen kunnen versturen. Als multimodaal model accepteert Pixtral ook afbeeldingsdata. Om een afbeelding uit een URL in de prompt te gebruiken, kunnen we die opnemen in het veld content door "image_url" als type op te geven:

{  "type": "image_url",  "Image_url": "<image_url>” }

Vervang <image_url> door de daadwerkelijke URL van de afbeelding. We kunnen Pixtral bijvoorbeeld gebruiken om de onderstaande prestatiediagrammen te analyseren:

Bron: 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)

Wanneer dit verzoek wordt verzonden, ontvangt Pixtral zowel de tekstprompt als de afbeelding met de diagrammen voor analyse en geeft vervolgens een reactie met de bevindingen. We tonen de reactie hier niet vanwege de lengte.

Lokale afbeeldingen laden

In het vorige voorbeeld lieten we zien hoe je een afbeelding via een URL toevoegt. Als alternatief kun je een afbeelding op je harde schijf gebruiken door deze te laden als een base64-gecodeerde afbeelding. Om een afbeelding in base64 te laden en te encoderen, gebruiken we het ingebouwde pakket base64:

def encode_image_base64(image_path): with open(image_path, "rb") as image_file:   return base64.b64encode(image_file.read()).decode("utf-8")

Bij base64-gecodeerde afbeeldingen gebruiken we nog steeds het type image_url om de gecodeerde afbeelding door te geven, maar we moeten dit voorafgaan met data:image/jpeg;base64,:

{  "type": "image_url",  "image_url": f"data:image/jpeg;base64,{base_64_image}"}

base_64_image is het resultaat van het aanroepen van de functie encode_image_base64() om de afbeelding te laden. Laten we dit gebruiken om Pixtral te vragen een to-do-lijstwebsite met twee pagina's te maken op basis van de volgende twee schetsen die ik heb gemaakt:

Schets voor de interface van de TODO-lijstapp.

We geven de twee afbeeldingen afzonderlijk door, plus een prompt met het verzoek om een HTML-website te maken op basis van de afbeeldingen:

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 zal twee codeblokken genereren met de inhoud van de twee pagina's. We hebben de code opgeslagen in twee bestanden met de naam index.html en add.html en ze in de browser geopend. Dit was het resultaat:

Weergave van de door Pixtral gerenderde TODO-lijstapp.

Hoewel het nog geen volledig functionele applicatie is, werkt het en is het een uitstekend startpunt voor verdere ontwikkeling.

Conclusie

Pixtral 12B is Mistrals eerste multimodale model. Het kan afbeeldingen van alle formaten aan zonder pre-processing, heeft een contextvenster van 128K voor complexe prompts en presteert goed in zowel tekst-only als multimodale taken. 

Beschikbaar voor gratis gebruik in niet-gemonetiseerde projecten en open-source onder de Apache 2.0-licentie, is Pixtral waardevol voor zowel onderzoekers als hobbyisten.

In deze tutorial heb ik praktische inzichten gegeven in het gebruik van Pixtral, met voorbeelden en stapsgewijze uitleg van de mogelijkheden.

FAQs

Is Pixtral gratis te gebruiken, en onder welke voorwaarden?

Pixtral is gratis te gebruiken op Le Chat of via de API voor niet-gemonetiseerde projecten.

Is Pixtral open-source?

Ja. Het is open source onder de Apache 2.0-licentie.

Wat voor invoergegevens ondersteunt Pixtral?

Pixtral is het eerste multimodale LLM van Mistral AI. Het ondersteunt zowel tekst als afbeeldingen.

Wat voor soort afbeeldingen ondersteunt Pixtral?

Pixtral ondersteunt afbeeldingen van elke grootte zonder enige vorm van pre-processing.

Wat maakt Pixtral belangrijk?

Pixtral levert uitstekende prestaties voor een model met slechts 12 miljard parameters. Bovendien kan het gratis worden gebruikt en is het open source.

François Aubry

Auteur

François Aubry

Full-stack engineer & oprichter bij CheapGPT. Lesgeven is altijd mijn passie geweest. Al vanaf mijn studententijd zocht ik actief naar kansen om bijles te geven en andere studenten te helpen. Die passie bracht me ertoe om te promoveren, waarbij ik ook als onderwijsassistent werkte ter ondersteuning van mijn academische werk. In die jaren vond ik veel voldoening in de traditionele klasomgeving, waar ik verbindingen kon leggen en leren kon begeleiden. Met de opkomst van online leerplatforms zag ik echter het transformerende potentieel van digitaal onderwijs. Sterker nog, ik was actief betrokken bij de ontwikkeling van zo’n platform op onze universiteit. Ik zet me sterk in om traditionele didactische principes te combineren met innovatieve digitale methoden. Mijn passie is om cursussen te maken die niet alleen boeiend en informatief zijn, maar ook toegankelijk voor lerenden in dit digitale tijdperk.

Onderwerpen

Gerelateerd