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 nel 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 significativamente Llama 2 13B su 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 più usati: 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 le prestazioni dei modelli sul piano costo/prestazioni consiste nel calcolare le “dimensioni equivalenti dei modelli”. Su ragionamento, comprensione e ragionamento STEM (MMLU), Mistral 7B offre prestazioni equivalenti a quelle di un Llama 2 che avrebbe una dimensione oltre 3 volte superiore. 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 riduce la quantità di conoscenza che può comprimere).

Nota: differenze importanti tra la nostra valutazione e quella del paper LLaMA2:

  • Per MBPP, usiamo il sottoinsieme verificato manualmente

  • Per TriviaQA, non forniamo contesti da 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 miglioramento principale, e il motivo per cui questo approccio è stato inizialmente studiato, è un costo computazionale lineare pari a O(sliding_window.seq_len). In pratica, le modifiche apportate a FlashAttention e xFormers portano a un miglioramento della velocità di 2x per una lunghezza di sequenza di 16k con una finestra di 4k. Un enorme ringraziamento a Tri Dao e Daniel Haziza per l'aiuto nell'includere queste modifiche in tempi 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 sembrerebbero implicare i pattern di attention.

Local attention

Infine, uno span di attention fisso significa che possiamo limitare la nostra 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 incidere 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 dimostrazione rapida del fatto che il modello di base può essere facilmente sottoposto a fine-tuning per raggiungere prestazioni convincenti. Non dispone di alcun meccanismo di moderazione. Non vediamo l'ora di collaborare con la community su modi per fare in modo che il modello rispetti in modo puntuale i guardrail, consentendone la distribuzione in ambienti che richiedono output moderati.


Ringraziamenti

Siamo grati a CoreWeave per il supporto 24/7 nell'orchestrazione del nostro cluster. Ringraziamo il team CINECA/EuroHPC, e in particolare gli operatori di Leonardo, per le risorse e l'aiuto forniti. Ringraziamo i maintainer di FlashAttention, vLLM, xFormers, Skypilot per il prezioso supporto 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 aiuto nel rendere il nostro modello compatibile ovunque.