Modelli e piattaforme di IA
Mistral 2 e Mistral NeMo: Una Guida Completa agli Ultimi Modelli LLM Provenienti da Parigi

Fondata da ex dipendenti di Google’s DeepMind e Meta, la startup parigina Mistral AI ha continuamente fatto parlare di sé nella comunità AI dal 2023.
Mistral AI ha attirato 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 addirittura rivaleggiando con Llama 1 34B in molti metriche. Ciò che ha distinto Mistral 7B non era solo la sua prestazione, ma anche la sua accessibilità – il modello poteva essere facilmente scaricato da GitHub o addirittura tramite un torrent da 13,4 gigabyte, rendendolo prontamente disponibile per ricercatori e sviluppatori in tutto il mondo.
L’approccio non convenzionale della società ai rilasci, spesso evitando 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 attore formidabile nel panorama AI.
L’ascesa rapida di Mistral AI nel settore è ulteriormente dimostrata dal loro recente successo nella raccolta di fondi. La società ha raggiunto una valutazione di 2 miliardi di dollari dopo un round di finanziamento guidato da Andreessen Horowitz. Ciò è arrivato dopo 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’Atto AI dell’UE, dove hanno sostenuto una regolamentazione ridotta per l’AI open-source.
Ora, nel 2024, Mistral AI ha nuovamente alzato l’asticella 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
- Proficienti in 80+ lingue di programmazione
- 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 desiderano 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 (NVDA ), Mistral NeMo è un modello più compatto da 12 miliardi di parametri che offre comunque capacità impressionanti:
- 12 miliardi di parametri
- 128k contesto finestra
- Prestazioni all’avanguardia nella sua categoria di dimensioni
- Apache 2.0 license per un uso aperto
- Addestramento consapevole della quantizzazione per un’inferenza efficiente
Mistral NeMo è posizionato come sostituto per i sistemi che attualmente utilizzano Mistral 7B, offrendo prestazioni migliorate mentre mantiene 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 Large: 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 rilevanti.
- Supporto Multilingue: I modelli eccellono in un’ampia gamma di lingue, tra cui inglese, francese, tedesco, spagnolo, italiano, cinese, giapponese, coreano, arabo e hindi.
- Capacità di Codifica Avanzate: Entrambi i modelli dimostrano un’eccezionale proficienza nella generazione di codice in numerose lingue di programmazione.
- Seguire 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 di Problemi: Capacità migliorate nel ragionamento matematico e nelle attività di risoluzione di problemi complessi.
Esaminiamo alcune di queste caratteristiche e vediamo come si comportano nella pratica.
Bench di Prestazioni
Per comprendere le vere capacità di Mistral Large 2 e Mistral NeMo, è essenziale esaminare le loro prestazioni in vari benchmark. Vediamo alcuni metriche chiave:
Bench di Mistral Large 2
Questo tabella presenta la proficienza di vari LLM nel comprendere e generare codice 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 prestazioni forti in molte lingue, con punteggi particolarmente alti in Python e Java. Questa proficienza è cruciale per applicazioni che coinvolgono la generazione di codice, il debugging e lo sviluppo software, rendendo questi modelli strumenti preziosi per gli sviluppatori.
Bench di Mistral NeMo
Sebbene non siano forniti punteggi di benchmark specifici per Mistral NeMo 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 spiccate 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, tra cui francese, tedesco, spagnolo, italiano, portoghese, arabo, hindi, russo, cinese, giapponese e coreano. Questa proficienza 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 molte lingue:
[INST] Genera un breve saluto in inglese, francese, tedesco, spagnolo e giapponese. [/INST]
Ecco brevi saluti nelle lingue richieste:
Inglese: Hello! How are you today?
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 “Hello, World!” 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 cambiamento di paradigma nel modo in cui interagiamo con i modelli AI. Questo approccio si concentra sulla costruzione 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, effettivamente espandendo le loro capacità oltre la semplice generazione di testo.
Vediamo 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
<p># 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)</p>
<p># 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"],
},
)</p>
<p># Crea una richiesta di completamento della chat con la funzione
completion_request = ChatCompletionRequest(
tools=[Tool(function=weather_function)],
messages=[
UserMessage(content="Com'è il tempo oggi a Parigi?"),
],
)</p>
<p># Codifica la richiesta
tokens = tokenizer.encode_chat_completion(completion_request).tokens</p>
<p># Genera una risposta
output_ids = model.generate([tokens], model, max_tokens=256, temperature=0.7, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(output_ids[0])</p>
print(result)
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.
Le caratteristiche chiave di Tekken includono:
- 30% di compressione più efficiente per il codice sorgente, cinese, italiano, francese, tedesco, spagnolo e russo
- 2x di compressione più efficiente per il coreano
- 3x di compressione più efficiente per l’arabo
- Supera il tokenizer Llama 3 nella compressione del testo per circa l’85% di tutte le lingue
Questa maggiore efficienza di tokenizzazione si traduce in migliori prestazioni del modello, specialmente 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 contestualmente rilevanti.
Licensing e Disponibilità
Mistral Large 2 e Mistral NeMo hanno modelli di licenza diversi, riflettendo 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 istruttivi 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 su come caricare e utilizzare Mistral Large 2 con Hugging Face transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
<p>model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Utilizza GPU se disponibile</p>
<p># Carica il modello e il tokenizer
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)</p>
<p># Sposta il modello sul dispositivo appropriato
model.to(device)</p>
<p># Prepara l'input
messages = [
{"role": "system", "content": "Sei un assistente AI utile."},
{"role": "user", "content": "Spiega il concetto di reti neurali in termini semplici."}
]</p>
<p># Codifica l'input
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)</p>
<p># Genera una risposta
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)</p>
<p># Decodifica e stampa la risposta
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)</p>
Questo codice mostra come caricare il modello, preparare l’input in formato chat, generare una risposta e decodificare l’output.
















