Il team di Mistral AI è orgoglioso di rilasciare Mistral 7B, il modello linguistico più potente finora per la sua dimensione.
Mistral 7B in breve
Mistral 7B è un modello da 7,3B parametri che:
Supera Llama 2 13B su tutti i benchmark
Supera Llama 1 34B su molti benchmark
Si avvicina alle prestazioni di CodeLlama 7B sul codice, restando valido nei task in inglese
Usa la Grouped-query attention (GQA) per un'inferenza più rapida
Usa la Sliding Window Attention (SWA) per gestire sequenze più lunghe a costi inferiori
Rilasciamo Mistral 7B con licenza Apache 2.0: può essere utilizzato senza restrizioni.
Scaricalo e usalo ovunque (anche localmente) con la nostra implementazione di riferimento,
Distribuiscilo su qualsiasi cloud (AWS/GCP/Azure), usando inference server e skypilot di vLLM,
Usalo su HuggingFace.
Mistral 7B è facile da sottoporre a fine-tuning per qualsiasi task. A titolo dimostrativo, forniamo un modello sottoposto a fine-tuning per la chat, che supera Llama 2 13B chat.
Prestazioni in dettaglio
Abbiamo confrontato Mistral 7B con la famiglia Llama 2 e rieseguito internamente tutte le valutazioni dei modelli per garantire un confronto equo.

I benchmark sono categorizzati per tema:
Commonsense Reasoning: media 0-shot di Hellaswag, Winogrande, PIQA, SIQA, OpenbookQA, ARC-Easy, ARC-Challenge e CommonsenseQA.
World Knowledge: media 5-shot di NaturalQuestions e TriviaQA.
Reading Comprehension: media 0-shot di BoolQ e QuAC.
Math: media di GSM8K 8-shot con maj@8 e MATH 4-shot con maj@4
Code: media di Humaneval 0-shot e MBPP 3-shot
Risultati aggregati popolari: MMLU 5-shot, BBH 3-shot e AGI Eval 3-5-shot (solo domande a scelta multipla in inglese)

Una metrica interessante per confrontare il comportamento dei modelli sul piano costo/prestazioni consiste nel calcolare le “dimensioni equivalenti del modello”. Nel ragionamento, nella comprensione e nel ragionamento STEM (MMLU), Mistral 7B offre prestazioni equivalenti a quelle di un Llama 2 che sarebbe oltre 3 volte più grande. Questo si traduce in memoria risparmiata e throughput guadagnato.
Nota: differenze importanti tra la nostra valutazione e il paper su LLaMA2:
Per MBPP utilizziamo il sottoinsieme verificato manualmente
Per TriviaQA non forniamo contesti Wikipedia
Flash and Furious: deriva dell’attenzione
Mistral 7B utilizza un meccanismo di sliding window attention (SWA) (Child et al., Beltagy et al.), in cui ogni layer presta attenzione ai precedenti 4,096 stati nascosti. Il principale miglioramento, e il motivo per cui questa soluzione è stata inizialmente esaminata, è un costo computazionale lineare pari a O(sliding_window.seq_len). In pratica, le modifiche apportate a FlashAttention e xFormers offrono un miglioramento di velocità pari a 2x per una lunghezza di sequenza di 16k con una finestra di 4k. Un grande ringraziamento a Tri Dao e Daniel Haziza per aver contribuito a includere queste modifiche in tempi molto stretti.
La sliding window attention sfrutta i layer impilati di un transformer per prestare attenzione al passato oltre la dimensione della finestra: un token i al layer k presta attenzione ai token [i-sliding_window, i] al layer k-1. Questi token hanno prestato attenzione ai token [i-2*sliding_window, i]. I layer superiori hanno accesso a informazioni più lontane nel passato rispetto a quanto i pattern di attention sembrino implicare.

Infine, uno span di attention fisso significa che possiamo limitare la cache a una dimensione di sliding_window token, usando buffer rotanti (maggiori informazioni nel nostro repo dell’implementazione di riferimento). Questo consente di risparmiare metà della memoria cache per l’inferenza su una lunghezza di sequenza pari a 8192, senza impatti sulla qualità del modello.
Fine-tuning di Mistral 7B per la chat
Per mostrare le capacità di generalizzazione di Mistral 7B, abbiamo eseguito il fine-tuning su dataset di istruzioni disponibili pubblicamente su HuggingFace. Nessun trucco, nessun dato proprietario. Il modello risultante, Mistral 7B Instruct, supera tutti i modelli 7B su MT-Bench ed è comparabile ai modelli chat 13B.

Il modello Mistral 7B Instruct è una rapida dimostrazione del fatto che il modello base può essere facilmente sottoposto a fine-tuning per ottenere prestazioni convincenti. Non dispone di alcun meccanismo di moderazione. Non vediamo l’ora di collaborare con la community sui modi per fare in modo che il modello rispetti finemente i guardrail, consentendone il deployment in ambienti che richiedono output moderati.
Ringraziamenti
Siamo grati a CoreWeave per l’aiuto 24/7 nella gestione del nostro cluster. Ringraziamo il team CINECA/EuroHPC e, in particolare, gli operatori di Leonardo per le risorse e il supporto. Ringraziamo i maintainer di FlashAttention, vLLM, xFormers, Skypilot per il prezioso aiuto nell’implementazione di nuove funzionalità e nell’integrazione delle loro soluzioni nelle nostre. Ringraziamo i team di HuggingFace, AWS, GCP, Azure ML per l’intenso supporto nel rendere il nostro modello compatibile ovunque.





