Mistral 2 and Mistral NeMo: A Comprehensive Guide to the Latest LLM Coming From Paris
Opgericht door alumni van Google’s DeepMind en Meta, een in Parijs gevestigde startup Mistral AI heeft sinds 2023 consequent furore gemaakt in de AI-gemeenschap.
Mistral AI trok voor het eerst de aandacht van de wereld met zijn debuutmodel, Mistral 7B, uitgebracht in 2023. Dit model met 7 miljard parameters kreeg snel grip dankzij zijn indrukwekkende prestaties, overtrof grotere modellen zoals Llama 2 13B in verschillende benchmarks en concurreerde zelfs met Llama 1 34B in veel statistieken. Wat de Mistral 7B onderscheidde, waren niet alleen de prestaties, maar ook de toegankelijkheid – het model zou dat gemakkelijk kunnen zijn gedownload van GitHub of zelfs via een torrent van 13,4 gigabyte, waardoor het direct beschikbaar is voor onderzoekers en ontwikkelaars over de hele wereld.
De onconventionele benadering van het bedrijf ten aanzien van publicaties, waarbij traditionele kranten, blogs of persberichten vaak achterwege worden gelaten, is opmerkelijk effectief gebleken in het trekken van de aandacht van de AI-gemeenschap. Deze strategie, in combinatie met hun toewijding aan open-sourceprincipes, heeft Mistral AI gepositioneerd als een formidabele speler in het AI-landschap.
De snelle opkomst van Mistral AI in de sector wordt verder bewezen door hun recente financieringssucces. Het bedrijf behaalde een duizelingwekkende waardering van $2 miljard na een financieringsronde onder leiding van Andreessen Horowitz. Dit volgde op een historische startronde van $118 miljoen – de grootste in de Europese geschiedenis – waaruit blijkt hoeveel vertrouwen investeerders hebben in de visie en mogelijkheden van Mistral AI.
Naast hun technologische vooruitgang is Mistral AI ook actief betrokken geweest bij het vormgeven van het AI-beleid, met name bij discussies rond de EU AI Act, waar ze hebben gepleit voor minder regulering van open-source AI.
Nu, in 2024, heeft Mistral AI de lat opnieuw hoger gelegd met twee baanbrekende modellen: Mistral Groot 2 (ook bekend als Mistral-Large-Instruct-2407) en Mistral NeMo. In deze uitgebreide gids duiken we diep in de functies, prestaties en potentiële toepassingen van deze indrukwekkende AI-modellen.
De belangrijkste specificaties van Mistral Large 2 zijn onder meer:
- 123 miljard parameters
- 128k contextvenster
- Ondersteuning voor tientallen talen
- Bekwaamheid in 80+ codering talen
- Geavanceerde functies voor het aanroepen van functies
Het model is ontworpen om de grenzen van kostenefficiëntie, snelheid en prestaties te verleggen, waardoor het een aantrekkelijke optie is voor zowel onderzoekers als ondernemingen die geavanceerde AI willen benutten.
Mistral NeMo: het nieuwe kleinere model
Terwijl Mistral Large 2 het beste van de grootschalige modellen van Mistral AI vertegenwoordigt, kiest Mistral NeMo, uitgebracht in juli 2024, voor een andere aanpak. Mistral NeMo is ontwikkeld in samenwerking met NVIDIA en is een compacter model met 12 miljard parameters dat nog steeds indrukwekkende mogelijkheden biedt:
- 12 miljard parameters
- 128k-context raam
- State-of-the-art prestaties in zijn groottecategorie
- Apache 2.0-licentie voor open gebruik
- Kwantiseringsbewust training voor efficiënte gevolgtrekking
Mistral NeMo is gepositioneerd als een drop-in vervanging voor systemen die momenteel Mistral 7B gebruiken en biedt verbeterde prestaties met behoud van gebruiksgemak en compatibiliteit.
Belangrijkste kenmerken en mogelijkheden
Zowel Mistral Large 2 als Mistral NeMo delen een aantal belangrijke kenmerken die hen onderscheiden in het AI-landschap:
- Grote contextvensters: Met een token-contextlengte van 128.000 kunnen beide modellen veel langere stukken tekst verwerken en begrijpen, waardoor meer coherente en contextueel relevante uitvoer mogelijk wordt.
- Meertalige ondersteuning: De modellen blinken uit in een breed scala aan talen, waaronder Engels, Frans, Duits, Spaans, Italiaans, Chinees, Japans, Koreaans, Arabisch en Hindi.
- Geavanceerde codeermogelijkheden: Beide modellen tonen een uitzonderlijke vaardigheid in het genereren van code in talloze programmeertalen.
- Instructie volgt: Er zijn aanzienlijke verbeteringen aangebracht in het vermogen van de modellen om nauwkeurige instructies te volgen en gesprekken met meerdere beurten af te handelen.
- Functie Bellen: Dankzij native ondersteuning voor functieaanroepen kunnen deze modellen dynamisch communiceren met externe tools en services.
- Redeneren en probleemoplossing: Verbeterde mogelijkheden in wiskundig redeneren en complexe probleemoplossende taken.
Laten we dieper ingaan op enkele van deze functies en onderzoeken hoe ze in de praktijk presteren.
Prestatiebenchmarks
Om de ware mogelijkheden van Mistral Large 2 en Mistral NeMo te begrijpen, is het essentieel om naar hun prestaties in verschillende benchmarks te kijken. Laten we enkele belangrijke statistieken onderzoeken:
Mistral Large 2 benchmarks
Deze tabel toont de vaardigheid van verschillende LLM’s in verschillende programmeertalen. Modellen zoals Mistral Large 2 (24.07), Llama 3.1 (405B) en GPT-4o worden geëvalueerd op hun vermogen om code te begrijpen en te genereren in talen als Python, C++, Bash, Java, TypeScript, PHP en C#.
Llama 3.1 405B vertoont sterke prestaties in meerdere talen, met bijzonder hoge scores in Python en Java. Deze vaardigheid is van cruciaal belang voor toepassingen die betrekking hebben op het genereren van code, het opsporen van fouten en het ontwikkelen van software, waardoor deze modellen waardevolle hulpmiddelen voor ontwikkelaars zijn.
Mistral NeMo-benchmarks
Hoewel specifieke benchmarkscores voor Mistral NeMo niet worden gegeven in de gegeven informatie, wordt beschreven dat het apparaat ultramoderne prestaties biedt in zijn groottecategorie. Het model presteert beter dan andere recente open-source, vooraf getrainde modellen zoals Gemma 2 9B en Llama 3 8B in verschillende taken.
Meertalig en codeervermogen
Een van de opvallende kenmerken van zowel Mistral Large 2 als Mistral NeMo zijn hun uitzonderlijke meertalige mogelijkheden. Dit is vooral belangrijk in onze steeds meer geglobaliseerde wereld, waar AI-modellen inhoud in meerdere talen moeten begrijpen en genereren.
Mistral Large 2 ondersteunt bijvoorbeeld tientallen talen, waaronder Frans, Duits, Spaans, Italiaans, Portugees, Arabisch, Hindi, Russisch, Chinees, Japans en Koreaans. Deze meertalige vaardigheid gaat verder dan louter vertalen en omvat genuanceerd begrip en generatie in deze talen.
Laten we, om dit te illustreren, eens kijken naar een voorbeeld waarin Mistral Large 2 tekst in meerdere talen genereert:
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
Hier zijn korte groeten in de gevraagde talen:
Engels: Hallo! Hoe gaat het vandaag met je?
Frans: Bonjour! Commentaar allez-vous aujourd’hui ?
Duits: Hallo! Wie is het?
Spaans: ¡Hola! Is het zo?
Japans: こんにちは!今日はお元気ですか?
Schrijf nu een eenvoudig ‘Hallo wereld!’ programma in Python, Java en JavaScript. [/INST]
Deze voorbeelden laten zowel de meertalige tekstgeneratie als de codeermogelijkheden van het model zien.
Beide modellen zijn beschikbaar op verschillende platforms, zoals Hugging Face, het Mistral AI-platform en grote cloudserviceproviders zoals Google Cloud Platform, Azure AI Studio, Amazon Bedrock en IBM watsonx.ai (Mistral-AI | Grens AI in jouw handen).
Het agentische paradigma en functieaanroep
Zowel Mistral Large 2 als Mistral NeMo omarmen een agent-centrisch ontwerp, dat een paradigmaverschuiving vertegenwoordigt in de manier waarop we omgaan met AI-modellen. Deze aanpak richt zich op het bouwen van modellen die in staat zijn om te communiceren met hun omgeving, beslissingen te nemen en acties te ondernemen om specifieke doelen te bereiken.
Een belangrijk kenmerk dat dit paradigma mogelijk maakt, is de native ondersteuning voor functieaanroepen. Hierdoor kunnen de modellen dynamisch communiceren met externe tools en services, waardoor hun mogelijkheden effectief worden uitgebreid tot meer dan alleen het genereren van tekst.
Laten we eens kijken naar een voorbeeld van hoe functieaanroepen kunnen werken met Mistral Large 2:
from mistral_common.protocol.instruct.tool_calls import Function, Tool from mistral_inference.transformer import Transformer from mistral_inference.generate import generate from mistral_common.tokens.tokenizers.mistral import MistralTokenizer from mistral_common.protocol.instruct.messages import UserMessage from mistral_common.protocol.instruct.request import ChatCompletionRequest # Initialize tokenizer and model mistral_models_path = "path/to/mistral/models" # Ensure this path is correct tokenizer = MistralTokenizer.from_file(f"mistral_models_path/tokenizer.model.v3") model = Transformer.from_folder(mistral_models_path) # Define a function for getting weather information weather_function = Function( name="get_current_weather", description="Get the current weather", parameters= "type": "object", "properties": "location": "type": "string", "description": "The city and state, e.g. San Francisco, CA", , "format": "type": "string", "enum": ["celsius", "fahrenheit"], "description": "The temperature unit to use. Infer this from the user's location.", , , "required": ["location", "format"], , ) # Create a chat completion request with the function completion_request = ChatCompletionRequest( tools=[Tool(function=weather_function)], messages=[ UserMessage(content="What's the weather like today in Paris?"), ], ) # Encode the request tokens = tokenizer.encode_chat_completion(completion_request).tokens # Generate a response out_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.7, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id) result = tokenizer.decode(out_tokens[0]) print(result)
In dit voorbeeld definiëren we een functie voor het verkrijgen van weersinformatie en nemen deze op in ons chatvoltooiingsverzoek. Het model kan deze functie vervolgens gebruiken om realtime weergegevens op te halen, waarmee wordt gedemonstreerd hoe het kan communiceren met externe systemen om nauwkeurigere en actuelere informatie te bieden.
Tekken: een efficiëntere tokenizer
Mistral NeMo introduceert een nieuwe tokenizer genaamd Tekken, dat is gebaseerd op Tiktoken en getraind in meer dan 100 talen. Deze nieuwe tokenizer biedt aanzienlijke verbeteringen in de efficiëntie van tekstcompressie vergeleken met eerdere tokenizers zoals SentencePiece.
De belangrijkste kenmerken van Tekken zijn onder meer:
- 30% efficiëntere compressie voor broncode, Chinees, Italiaans, Frans, Duits, Spaans en Russisch
- 2x efficiëntere compressie voor Koreaans
- 3x efficiëntere compressie voor Arabisch
- Presteert beter dan de Llama 3 tokenizer bij het comprimeren van tekst voor ongeveer 85% van alle talen
Deze verbeterde tokenisatie-efficiëntie vertaalt zich in betere modelprestaties, vooral als het gaat om meertalige tekst en broncode. Hierdoor kan het model meer informatie verwerken binnen hetzelfde contextvenster, wat leidt tot meer coherente en contextueel relevante resultaten.
Licenties en beschikbaarheid
Mistral Large 2 en Mistral NeMo hebben verschillende licentiemodellen, die de beoogde gebruiksscenario’s weerspiegelen:
Mistral Groot 2
- Uitgegeven onder de Mistral Research-licentie
- Staat gebruik en wijziging toe voor onderzoek en niet-commerciële doeleinden
- Voor commercieel gebruik is een commerciële licentie van Mistral vereist
Mistral NeMo
- Uitgebracht onder de Apache 2.0-licentie
- Maakt open gebruik mogelijk, inclusief commerciële toepassingen
Beide modellen zijn verkrijgbaar via verschillende platforms:
- Knuffelend gezicht: Gewichten voor zowel basis- als instructiemodellen worden hier gehost
- Mistral AI: Beschikbaar als
mistral-large-2407
(Mistral Large 2) enopen-mistral-nemo-2407
(Mistral NeMo) - Cloudserviceproviders: Beschikbaar op Vertex AI, Azure AI Studio, Amazon Bedrock en IBM watsonx.ai van Google Cloud Platform
Voor ontwikkelaars die deze modellen willen gebruiken, volgt hier een kort voorbeeld van hoe je Mistral Large 2 met Hugging Face-transformatoren kunt laden en gebruiken:
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "mistralai/Mistral-Large-Instruct-2407" device = "cuda" # Use GPU if available # Load the model and tokenizer model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Move the model to the appropriate device model.to(device) # Prepare input messages = [ "role": "system", "content": "You are a helpful AI assistant.", "role": "user", "content": "Explain the concept of neural networks in simple terms." ] # Encode input input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device) # Generate response output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True) # Decode and print the response response = tokenizer.decode(output_ids[0], skip_special_tokens=True) print(response)
Deze code laat zien hoe u het model laadt, invoer in een chatformaat voorbereidt, een antwoord genereert en de uitvoer decodert.