Kunstig intelligens
Mistral 2 og Mistral NeMo: En omfattende guide til den seneste LLM, der kommer fra Paris

Grundlagt af tidligere studerende fra Googles DeepMind og Meta, en startup med base i Paris Mistral AI har konsekvent skabt bølger i AI-fællesskabet siden 2023.
Mistral AI fangede verdens opmærksomhed med sin debutmodel, Mistral 7B, der blev udgivet i 2023. Denne model med 7 milliarder parametre fik hurtigt medvind for sin imponerende ydeevne, og den overgik større modeller som Llama 2 13B i forskellige benchmarks og konkurrerede endda med andre. Llama 1 34B i mange målinger. Hvilket sæt Mistral 7B bortset var ikke kun dens ydeevne, men også dens tilgængelighed – modellen kunne være let downloadet fra GitHub eller endda via en 13.4-gigabyte torrent, hvilket gør den let tilgængelig for forskere og udviklere over hele verden.
Virksomhedens ukonventionelle tilgang til pressemeddelelser, hvor de ofte går forbi traditionelle aviser, blogs eller pressemeddelelser, har vist sig bemærkelsesværdigt effektiv til at fange AI-fællesskabets opmærksomhed. Denne strategi, kombineret med deres engagement i open source-principper, har positioneret Mistral AI som en formidabel spiller i AI-landskabet.
Mistral AIs hurtige opstigning i branchen fremgår yderligere af deres nylige finansieringssucces. Virksomheden opnåede en svimlende værdiansættelse på 2 milliarder dollars efter en finansieringsrunde ledet af Andreessen Horowitz. Dette kom i kølvandet på en historisk seed-runde på 118 millioner dollars – den største i europæisk historie – der viser den enorme tillid, investorerne har til Mistral AIs vision og evner.
Ud over deres teknologiske fremskridt har Mistral AI også været aktivt involveret i udformningen af AI-politik, især i diskussioner omkring EU's AI-lov, hvor de har talt for reduceret regulering af open source AI.
Nu, i 2024, har Mistral AI igen hævet barren med to banebrydende modeller: Mistral Large 2 (også kendt som Mistral-Large-Instruct-2407) og Mistral NeMoI denne omfattende guide dykker vi ned i funktionerne, ydeevnen og de potentielle anvendelser af disse imponerende AI-modeller.
Nøglespecifikationer for Mistral Large 2 inkluderer:
- 123 milliarder parametre
- 128k kontekstvindue
- Support til snesevis af sprog
- Færdighed i 80+ kodning sprog
- Avancerede funktionsopkaldsfunktioner
Modellen er designet til at skubbe grænserne for omkostningseffektivitet, hastighed og ydeevne, hvilket gør den til en attraktiv mulighed for både forskere og virksomheder, der ønsker at udnytte banebrydende AI.
Mistral NeMo: Den nye mindre model
Mens Mistral Large 2 repræsenterer den bedste af Mistral AI's storskalamodeller, har Mistral NeMo, der blev udgivet i juli 2024, en anderledes tilgang. Mistral NeMo, der er udviklet i samarbejde med NVIDIA, er en mere kompakt model med 12 milliarder parametre, der stadig tilbyder imponerende funktioner:
- 12 milliarder parametre
- 128k kontekst vindue
- State-of-the-art præstation i sin størrelseskategori
- Apache 2.0 licens til åben brug
- Kvantiseringsbevidst træning i effektiv slutning
Mistral NeMo er placeret som en drop-in-erstatning for systemer, der i øjeblikket bruger Mistral 7B, og tilbyder forbedret ydeevne, samtidig med at brugervenlighed og kompatibilitet bevares.
Nøglefunktioner og muligheder
Både Mistral Large 2 og Mistral NeMo deler flere nøglefunktioner, der adskiller dem i AI-landskabet:
- Store kontekstvinduer: Med 128 token-kontekstlængder kan begge modeller behandle og forstå meget længere tekststykker, hvilket muliggør mere sammenhængende og kontekstuelt relevante output.
- flersproget Support: Modellerne udmærker sig på en lang række sprog, herunder engelsk, fransk, tysk, spansk, italiensk, kinesisk, japansk, koreansk, arabisk og hindi.
- Avancerede kodningsfunktioner: Begge modeller demonstrerer enestående færdigheder i kodegenerering på tværs af adskillige programmeringssprog.
- Instruktion følgerDer er sket betydelige forbedringer i modellernes evne til at følge præcise instruktioner og håndtere samtaler med flere vendinger.
- Funktionsopkald: Indbygget understøttelse af funktionskald gør det muligt for disse modeller at interagere dynamisk med eksterne værktøjer og tjenester.
- Begrundelse og problemløsning: Forbedrede evner inden for matematisk ræsonnement og komplekse problemløsningsopgaver.
Lad os udforske nogle af disse funktioner og undersøge, hvordan de fungerer i praksis.
Performance benchmarks
For at forstå de sande muligheder hos Mistral Large 2 og Mistral NeMo er det vigtigt at se på deres ydeevne på tværs af forskellige benchmarks. Lad os undersøge nogle nøgleparametre:
Mistral Large 2 Benchmarks
Denne tabel præsenterer forskellige LLM'ers færdigheder i forskellige programmeringssprog. Modeller som Mistral Large 2 (24.07), Llama 3.1 (405B) og GPT-4o evalueres på deres evne til at forstå og generere kode på sprog som Python, C++, Bash, Java, TypeScript, PHP og C#.
Llama 3.1 405B viser stærk ydeevne på tværs af flere sprog, med særligt høje scores i Python og Java. Denne færdighed er afgørende for applikationer, der involverer kodegenerering, debugging og softwareudvikling, hvilket gør disse modeller til værdifulde værktøjer for udviklere.
Mistral NeMo benchmarks
Selvom specifikke benchmark-scorer for Mistral NeMo ikke er angivet i de givne oplysninger, beskrives den som værende avanceret i sin størrelseskategori. Modellen overgår andre nyere open source-forudtrænede modeller som Gemma 2 9B og Llama 3 8B i forskellige opgaver.
Flersproget og kodende dygtighed
En af de iøjnefaldende funktioner ved både Mistral Large 2 og Mistral NeMo er deres enestående flersprogede muligheder. Dette er særligt vigtigt i vores stadig mere globaliserede verden, hvor AI-modeller skal forstå og generere indhold på flere sprog.
Mistral Large 2 understøtter for eksempel snesevis af sprog, herunder fransk, tysk, spansk, italiensk, portugisisk, arabisk, hindi, russisk, kinesisk, japansk og koreansk. Denne flersprogede færdighed strækker sig ud over blot oversættelse og omfatter nuanceret forståelse og generering på disse sprog.
For at illustrere dette, lad os se på et eksempel på Mistral Large 2, der genererer tekst på flere sprog:
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
Her er korte hilsner på de ønskede sprog:
Dansk: Hej! Hvordan har du det i dag?
Fransk: Bonjour! Kommentar allez-vous aujourd'hui ?
Tysk: Hej! Wie geht es Ihnen heute?
Spansk: ¡Hola! ¿Cómo estás hoy?
Japansk: こんにちは!今日はお元気ですか?
[INST]
Skriv nu et simpelt "Hej, verden!" program i Python, Java og JavaScript. [/INST]
Disse eksempler viser både modellens flersprogede tekstgenerering og kodningsmuligheder.
Begge modeller er tilgængelige på forskellige platforme såsom Hugging Face, Mistral AI's platform og store cloud-udbydere som Google Cloud Platform, Azure AI Studio, Amazon Bedrock og IBM watsonx.ai. (Mistral AI | Frontier AI i dine hænder).
Det agentiske paradigme og funktionskald
Både Mistral Large 2 og Mistral NeMo omfavner et agent-centreret design, som repræsenterer et paradigmeskift i, hvordan vi interagerer med AI-modeller. Denne tilgang fokuserer på at bygge modeller, der er i stand til at interagere med deres omgivelser, træffe beslutninger og træffe handlinger for at nå specifikke mål.
En nøglefunktion, der muliggør dette paradigme, er den indbyggede understøttelse af funktionskald. Dette gør det muligt for modellerne at interagere dynamisk med eksterne værktøjer og tjenester, hvilket effektivt udvider deres muligheder ud over simpel tekstgenerering.
Lad os se på et eksempel på, hvordan funktionskald kan fungere med 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)
I dette eksempel definerer vi en funktion til at få vejrinformation og inkluderer den i vores anmodning om fuldførelse af chat. Modellen kan derefter bruge denne funktion til at hente vejrdata i realtid, og demonstrere, hvordan den kan interagere med eksterne systemer for at give mere nøjagtig og opdateret information.
Tekken: En mere effektiv tokenizer
Mistral NeMo introducerer en ny tokenizer kaldet Tekken, som er baseret på Tiktoken og trænet på over 100 sprog. Denne nye tokenizer tilbyder betydelige forbedringer i tekstkomprimeringseffektiviteten sammenlignet med tidligere tokenizere som SentencePiece.
Nøglefunktioner i Tekken inkluderer:
- 30 % mere effektiv komprimering af kildekode, kinesisk, italiensk, fransk, tysk, spansk og russisk
- 2x mere effektiv kompression til koreansk
- 3x mere effektiv komprimering til arabisk
- Udkonkurrerer Llama 3-tokenizeren ved at komprimere tekst til cirka 85 % af alle sprog
Denne forbedrede tokeniseringseffektivitet oversætter til bedre modelydeevne, især når det drejer sig om flersproget tekst og kildekode. Det giver modellen mulighed for at behandle mere information inden for det samme kontekstvindue, hvilket fører til mere sammenhængende og kontekstuelt relevante output.
Licens og tilgængelighed
Mistral Large 2 og Mistral NeMo har forskellige licensmodeller, der afspejler deres tilsigtede anvendelsestilfælde:
Mistral Large 2
- Udgivet under Mistral Research License
- Tillader brug og modifikation til forskning og ikke-kommercielle formål
- Kommerciel brug kræver en Mistral Commercial License
Mistral NeMo
- Udgivet under Apache 2.0-licensen
- Tillader åben brug, herunder kommercielle applikationer
Begge modeller er tilgængelige via forskellige platforme:
- Knusende ansigt: Vægte til både basis- og instruktionsmodeller er hostet her
- Mistral AI: Fås som
mistral-large-2407
(Mistral Large 2) ogopen-mistral-nemo-2407
(Mistral NeMo) - Cloud-tjenesteudbydereTilgængelig på Google Cloud Platforms Vertex AI, Azure AI Studio, Amazon Bedrock og IBM watsonx.ai
For udviklere, der ønsker at bruge disse modeller, er her et hurtigt eksempel på, hvordan man indlæser og bruger Mistral Large 2 med Hugging Face-transformere:
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)
Denne kode demonstrerer, hvordan man indlæser modellen, forbereder input i et chatformat, genererer et svar og afkoder outputtet.