Intelligenza artificiale
Mistral 2 e Mistral NeMo: Una Guida Completa ai Modelli LLM più Recenti Provenienti da Parigi

Fondata da ex dipendenti di Google’s DeepMind e Meta, la startup con sede a Parigi Mistral AI ha continuamente fatto onde nella comunità AI dal 2023.
Mistral AI ha catturato per la prima volta l’attenzione del mondo con il suo modello di debutto, Mistral 7B, rilasciato nel 2023. Questo modello da 7 miliardi di parametri ha guadagnato rapidamente popolarità per le sue impressionanti prestazioni, superando modelli più grandi come Llama 2 13B in vari benchmark e anche rivaleggiando con Llama 1 34B in molti metriche. Ciò che ha reso Mistral 7B diverso non era solo la sua prestazione, ma anche la sua accessibilità – il modello poteva essere facilmente scaricato da GitHub o anche tramite un torrent da 13,4 gigabyte, rendendolo prontamente disponibile per ricercatori e sviluppatori in tutto il mondo.
L’approccio non convenzionale dell’azienda ai rilasci, spesso rinunciando a paper tradizionali, blog o comunicati stampa, si è rivelato notevolmente efficace nel catturare l’attenzione della comunità AI. Questa strategia, unita al loro impegno per i principi open-source, ha posizionato Mistral AI come un giocatore formidabile nel panorama AI.
L’ascesa rapida di Mistral AI nel settore è ulteriormente dimostrata dal loro recente successo di funding. L’azienda ha raggiunto una valutazione di 2 miliardi di dollari dopo un round di funding guidato da Andreessen Horowitz. Ciò è arrivato alle spalle di un round di seed da 118 milioni di dollari – il più grande nella storia europea – che mostra la grande fiducia degli investitori nella visione e nelle capacità di Mistral AI.
Oltre ai loro progressi tecnologici, Mistral AI è anche stata attivamente coinvolta nella definizione delle politiche AI, in particolare nelle discussioni sull’EU AI Act, dove hanno sostenuto una regolamentazione ridotta per l’AI open-source.
Ora, nel 2024, Mistral AI ha nuovamente alzato la barra con due modelli innovativi: Mistral Large 2 (noto anche come Mistral-Large-Instruct-2407) e Mistral NeMo. In questa guida completa, esploreremo in profondità le caratteristiche, le prestazioni e le potenziali applicazioni di questi impressionanti modelli AI.
Le specifiche chiave di Mistral Large 2 includono:
- 123 miliardi di parametri
- 128k finestra di contesto
- Supporto per decine di lingue
- Proficenza in 80+ lingue di codifica
- Capacità avanzate di chiamata di funzioni
Il modello è progettato per spingere i confini dell’efficienza dei costi, della velocità e delle prestazioni, rendendolo un’opzione attraente sia per i ricercatori che per le imprese che cercano di sfruttare l’AI all’avanguardia.
Mistral NeMo: Il Nuovo Modello Più Piccolo
Mentre Mistral Large 2 rappresenta il meglio dei modelli su larga scala di Mistral AI, Mistral NeMo, rilasciato a luglio 2024, adotta un approccio diverso. Sviluppato in collaborazione con NVIDIA, Mistral NeMo è un modello più compatto da 12 miliardi di parametri che offre ancora impressionanti capacità:
- 12 miliardi di parametri
- 128k finestra di contesto
- Prestazioni all’avanguardia nella sua categoria di dimensioni
- License Apache 2.0 per un uso aperto
- Addestramento consapevole della quantizzazione per un’inferenza efficiente
Mistral NeMo è posizionato come un sostituto drop-in per i sistemi che attualmente utilizzano Mistral 7B, offrendo prestazioni migliorate mantenendo facilità d’uso e compatibilità.
Caratteristiche e Capacità Chiave
Sia Mistral Large 2 che Mistral NeMo condividono diverse caratteristiche chiave che li distinguono nel panorama AI:
- Finestre di contesto grandi: con lunghezze di contesto di 128k token, entrambi i modelli possono elaborare e comprendere pezzi di testo molto più lunghi, consentendo output più coerenti e pertinenti al contesto.
- Supporto multilingue: i modelli eccellono in un’ampia gamma di lingue, comprese inglese, francese, tedesco, spagnolo, italiano, cinese, giapponese, coreano, arabo e hindi.
- Capacità di codifica avanzate: entrambi i modelli dimostrano un’eccezionale proficenza nella generazione di codice in numerose lingue di programmazione.
- Seguire le istruzioni: sono stati apportati miglioramenti significativi nella capacità dei modelli di seguire istruzioni precise e gestire conversazioni a più turni.
- Chiamata di funzioni: il supporto nativo per la chiamata di funzioni consente a questi modelli di interagire dinamicamente con strumenti e servizi esterni.
- Ragionamento e risoluzione dei problemi: capacità migliorate nel ragionamento matematico e nei compiti di risoluzione di problemi complessi.
Esaminiamo alcune di queste caratteristiche e vediamo come si comportano nella pratica.
Benchmarks di Prestazione
Per comprendere le vere capacità di Mistral Large 2 e Mistral NeMo, è essenziale esaminare le loro prestazioni in vari benchmark. Vediamo alcuni metriche chiave:
Benchmarks di Mistral Large 2
Questo tabella presenta la proficenza di vari LLM in diverse lingue di programmazione. Modelli come Mistral Large 2 (24.07), Llama 3.1 (405B) e GPT-4o sono valutati sulla loro capacità di comprendere e generare codice in lingue come Python, C++, Bash, Java, TypeScript, PHP e C#.
Llama 3.1 405B mostra una forte prestazione in molte lingue, con punteggi particolarmente alti in Python e Java. Questa proficenza è cruciale per applicazioni che coinvolgono la generazione di codice, il debugging e lo sviluppo software, rendendo questi modelli strumenti preziosi per gli sviluppatori.
Benchmarks di Mistral NeMo
Mentre i punteggi dei benchmark specifici per Mistral NeMo non sono forniti nelle informazioni date, è descritto come offrendo prestazioni all’avanguardia nella sua categoria di dimensioni. Il modello supera altri modelli open-source pre-addestrati recenti come Gemma 2 9B e Llama 3 8B in vari compiti.
Capacità Multilingue e di Codifica
Una delle caratteristiche di spicco di entrambi Mistral Large 2 e Mistral NeMo è la loro eccezionale capacità multilingue. Ciò è particolarmente importante nel nostro mondo sempre più globalizzato, dove i modelli AI devono comprendere e generare contenuti in molte lingue.
Mistral Large 2, ad esempio, supporta decine di lingue, comprese francese, tedesco, spagnolo, italiano, portoghese, arabo, hindi, russo, cinese, giapponese e coreano. Questa proficenza multilingue va oltre la semplice traduzione, abbracciando una comprensione e generazione nuance in queste lingue.
Per illustrare ciò, esaminiamo un esempio di Mistral Large 2 che genera testo in più lingue:
[INST] Genera un breve saluto in inglese, francese, tedesco, spagnolo e giapponese. [/INST]
Ecco brevi saluti nelle lingue richieste:
Inglese: Ciao! Come stai oggi?
Francese: Bonjour ! Comment allez-vous aujourd’hui ?
Tedesco: Hallo! Wie geht es Ihnen heute?
Spagnolo: ¡Hola! ¿Cómo estás hoy?
Giapponese: こんにちは!今日はお元気ですか?
[INST]
Ora, scrivi un semplice programma “Ciao, Mondo!” in Python, Java e JavaScript. [/INST]
Questi esempi mostrano sia la capacità di generazione di testo multilingue che le capacità di codifica del modello.
Entrambi i modelli sono disponibili su varie piattaforme come Hugging Face, la piattaforma di Mistral AI e importanti fornitori di servizi cloud come Google Cloud Platform, Azure AI Studio, Amazon Bedrock e IBM watsonx.ai (Mistral AI | Frontier AI in your hands).
Il Paradigma Agente e la Chiamata di Funzioni
Sia Mistral Large 2 che Mistral NeMo adottano un design agente-centrico, che rappresenta un cambio di paradigma nel modo in cui interagiamo con i modelli AI. Questo approccio si concentra sulla creazione di modelli in grado di interagire con il loro ambiente, prendere decisioni e compiere azioni per raggiungere obiettivi specifici.
Una caratteristica chiave che consente questo paradigma è il supporto nativo per la chiamata di funzioni. Ciò consente ai modelli di interagire dinamicamente con strumenti e servizi esterni, ampliando efficacemente le loro capacità oltre la semplice generazione di testo.
Esaminiamo un esempio di come la chiamata di funzioni potrebbe funzionare con 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
# Inizializza tokenizer e modello
mistral_models_path = "path/to/mistral/models" # Assicurati che questo percorso sia corretto
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)
# Definisci una funzione per ottenere informazioni meteorologiche
weather_function = Function(
name="get_current_weather",
description="Ottieni le condizioni meteorologiche attuali",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "La città e lo stato, ad esempio San Francisco, CA",
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "L'unità di temperatura da utilizzare. Inferisci questo dalla posizione dell'utente.",
},
},
"required": ["location", "format"],
},
)
# Crea una richiesta di completamento della chat con la funzione
completion_request = ChatCompletionRequest(
tools=[Tool(function=weather_function)],
messages=[
UserMessage(content="Qual è il tempo oggi a Parigi?"),
],
)
# Codifica l'input
input_ids = tokenizer.apply_chat_template(completion_request, return_tensors="pt").to(device)
# Genera una risposta
output_ids = model.generate(input_ids, max_new_tokens=256, do_sample=True)
# Decodifica e stampa la risposta
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)
In questo esempio, definiamo una funzione per ottenere informazioni meteorologiche e la includiamo nella nostra richiesta di completamento della chat. Il modello può quindi utilizzare questa funzione per recuperare dati meteorologici in tempo reale, dimostrando come possa interagire con sistemi esterni per fornire informazioni più accurate e aggiornate.
Tekken: Un Tokenizer più Efficienti
Mistral NeMo introduce un nuovo tokenizer chiamato Tekken, basato su Tiktoken e addestrato su oltre 100 lingue. Questo nuovo tokenizer offre miglioramenti significativi nell’efficienza di compressione del testo rispetto ai tokenizer precedenti come SentencePiece.
Caratteristiche chiave di Tekken includono:
- 30% più efficiente nella compressione per il codice sorgente, cinese, italiano, francese, tedesco, spagnolo e russo
- 2x più efficiente nella compressione per il coreano
- 3x più efficiente nella compressione per l’arabo
- Superiore al tokenizer Llama 3 nella compressione del testo per circa l’85% di tutte le lingue
Questa maggiore efficienza di tokenizzazione si traduce in una migliore prestazione del modello, soprattutto quando si tratta di testo multilingue e codice sorgente. Ciò consente al modello di elaborare più informazioni all’interno della stessa finestra di contesto, portando a output più coerenti e pertinenti al contesto.
Licensing e Disponibilità
Mistral Large 2 e Mistral NeMo hanno modelli di licenza diversi, che riflettono i loro casi d’uso previsti:
Mistral Large 2
- Rilasciato sotto la licenza di ricerca Mistral
- Consente l’uso e la modifica per scopi di ricerca e non commerciali
- L’uso commerciale richiede una licenza commerciale Mistral
Mistral NeMo
- Rilasciato sotto la licenza Apache 2.0
- Consente un uso aperto, comprese le applicazioni commerciali
Entrambi i modelli sono disponibili attraverso varie piattaforme:
- Hugging Face: I pesi per entrambi i modelli base e istruiti sono ospitati qui
- Mistral AI: Disponibile come
mistral-large-2407(Mistral Large 2) eopen-mistral-nemo-2407(Mistral NeMo) - Fornitori di servizi cloud: Disponibile su Google Cloud Platform’s Vertex AI, Azure AI Studio, Amazon Bedrock e IBM watsonx.ai
Per gli sviluppatori che desiderano utilizzare questi modelli, ecco un esempio rapido di come caricare e utilizzare Mistral Large 2 con Hugging Face transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Utilizza GPU se disponibile
# Carica il modello e il tokenizer
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Sposta il modello sul dispositivo appropriato
model.to(device)
# Prepara l'input
messages = [
{"role": "system", "content": "Sei un assistente AI utile."},
{"role": "user", "content": "Spiega il concetto di reti neurali in termini semplici."},
]
# Codifica l'input
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
# Genera una risposta
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)
# Decodifica e stampa la risposta
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)
Questo codice dimostra come caricare il modello, preparare l’input in un formato di chat, generare una risposta e decodificare l’output.
















