Soluzioni

Mistral 7B

September 27, 2023

By Mistral AI team

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.

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.

histograms
Prestazioni di Mistral 7B e di diversi modelli Llama su un’ampia gamma di benchmark. Per tutte le metriche, tutti i modelli sono stati rivalutati con la nostra pipeline di valutazione per un confronto accurato. Mistral 7B supera nettamente Llama 2 13B in tutte le metriche ed è alla pari con Llama 34B (poiché Llama 2 34B non è stato rilasciato, riportiamo i risultati su Llama 34B). È inoltre nettamente superiore nei benchmark di codice e ragionamento.

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)

table

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.

effective_sizes
Risultati su MMLU, Commonsense Reasoning, World Knowledge e Reading Comprehension per Mistral 7B e Llama 2 (7B/13/70B). Mistral 7B supera ampiamente Llama 2 13B in tutte le valutazioni, tranne nei benchmark di conoscenza, dove è alla pari (probabilmente a causa del numero limitato di parametri, che restringe la quantità di conoscenza che può comprimere).

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.

Local attention

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.

MT-Bench

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.