I modelli di base Mistral 7B foundation di Mistral AI sono ora disponibili in Amazon SageMaker JumpStart

I modelli di base Mistral 7B foundation di Mistral AI ora su Amazon SageMaker JumpStart

Oggi, siamo entusiasti di annunciare che i modelli di fondazione Mistral 7B, sviluppati da Mistral AI, sono disponibili per i clienti attraverso Amazon SageMaker JumpStart per il rilascio con un solo clic per l’esecuzione delle inferenze. Con 7 miliardi di parametri, Mistral 7B può essere facilmente personalizzato e rapidamente distribuito. Puoi provare questo modello con SageMaker JumpStart, un hub di machine learning (ML) che fornisce accesso ad algoritmi e modelli per iniziare rapidamente con l’ML. In questo articolo, illustreremo come scoprire e distribuire il modello Mistral 7B.

Cos’è Mistral 7B

Mistral 7B è un modello di fondazione sviluppato da Mistral AI, che supporta il testo in inglese e la generazione di codice. Supporta una varietà di casi d’uso, come la sintesi del testo, la classificazione, il completamento del testo e il completamento del codice. Per dimostrare la facilità di personalizzazione del modello, Mistral AI ha anche rilasciato un modello Mistral 7B Instruct per le conversazioni, sintonizzato utilizzando una varietà di set di dati di conversazioni disponibili pubblicamente.

Mistral 7B è un modello di trasformazione e utilizza l’attenzione raggruppata per le query e l’attenzione a finestra scorrevole per ottenere inferenze più rapide (bassa latenza) e gestire sequenze più lunghe. L’attenzione raggruppata per le query è un’architettura che combina l’attenzione multi-query e multi-head per ottenere una qualità di output simile all’attenzione multi-head e una velocità paragonabile all’attenzione multi-query. L’attenzione a finestra scorrevole utilizza i livelli impilati di un trasformatore per considerare anche il passato oltre la dimensione della finestra al fine di aumentare la lunghezza del contesto. Mistral 7B ha una lunghezza del contesto di 8.000 token, dimostra una bassa latenza e un’elevata velocità di elaborazione e offre prestazioni eccellenti se confrontato con modelli più grandi, fornendo requisiti di memoria ridotti con una dimensione del modello di 7B. Il modello è reso disponibile con la licenza Apache 2.0, per un utilizzo senza restrizioni.

Cos’è SageMaker JumpStart

Con SageMaker JumpStart, i professionisti di ML possono scegliere da una lista in continua crescita di modelli di fondazione ad alte prestazioni. I professionisti di ML possono distribuire i modelli di fondazione su istanze dedicate di Amazon SageMaker all’interno di un ambiente isolato di rete e personalizzare i modelli utilizzando SageMaker per l’addestramento e il rilascio dei modelli.

Ora è possibile scoprire e distribuire Mistral 7B con pochi clic in Amazon SageMaker Studio o programmatticamente attraverso SageMaker Python SDK, consentendo di ottenere prestazioni del modello e controlli di MLOps con le funzionalità di SageMaker come Amazon SageMaker Pipelines, Amazon SageMaker Debugger o i log dei contenitori. Il modello viene distribuito in un ambiente AWS sicuro e sotto il controllo del VPC, garantendo la sicurezza dei dati.

Scopri i modelli

Puoi accedere ai modelli di fondazione Mistral 7B attraverso SageMaker JumpStart nell’interfaccia utente di SageMaker Studio e nel SageMaker Python SDK. In questa sezione, vedremo come scoprire i modelli in SageMaker Studio.

SageMaker Studio è un ambiente di sviluppo integrato (IDE) che fornisce un’interfaccia visiva basata sul web in cui è possibile accedere a strumenti specifici per eseguire tutte le operazioni di sviluppo di ML, dalla preparazione dei dati alla costruzione, all’addestramento e al rilascio dei modelli di ML. Per maggiori dettagli su come iniziare e configurare SageMaker Studio, consulta Amazon SageMaker Studio.

In SageMaker Studio, puoi accedere a SageMaker JumpStart, che contiene modelli pre-addestrati, notebook e soluzioni predefinite, sotto Soluzioni predefinite e automatizzate.

Dalla pagina iniziale di SageMaker JumpStart, puoi cercare soluzioni, modelli, notebook e altre risorse. Puoi trovare Mistral 7B nella carousel Modelli Fondamentali: Generazione di Testo.

Puoi trovare anche altre varianti del modello scegliendo Esplora tutti i modelli di testo o cercando “Mistral”.

Puoi scegliere la scheda del modello per visualizzare i dettagli come la licenza, i dati utilizzati per l’addestramento e come utilizzarlo. Troverai anche due pulsanti, Deploy e Apri notebook, che ti aiuteranno a utilizzare il modello (nella seguente schermata viene mostrata l’opzione Deploy).

Deploy dei modelli

Il deployment inizia quando si sceglie Deploy. In alternativa, è possibile effettuare il deploy tramite il notebook di esempio che viene visualizzato al momento della scelta di Apri notebook. Il notebook di esempio fornisce una guida completa su come effettuare il deploy del modello per l’infereza e ripulire le risorse.

Per effettuare il deploy utilizzando il notebook, iniziamo selezionando il modello Mistral 7B, specificato dal model_id. È possibile effettuare il deploy di qualsiasi dei modelli selezionati su SageMaker con il seguente codice:

from sagemaker.jumpstart.model import JumpStartModelmodel = JumpStartModel(model_id="huggingface-llm-mistral-7b-instruct")predictor = model.deploy()

Questo effettua il deploy del modello su SageMaker con le configurazioni predefinite, incluso il tipo di istanza predefinito (ml.g5.2xlarge) e le configurazioni VPC predefinite. È possibile modificare queste configurazioni specificando valori diversi da quelli predefiniti in JumpStartModel. Una volta effettuato il deploy, è possibile eseguire l’infereza utilizzando l’endpoint deployato tramite il predictor di SageMaker:

payload = {"inputs": "<s>[INST] Ciao! [/INST]"}predictor.predict(payload)

Ottimizzazione della configurazione del deployment

I modelli Mistral utilizzano il modello di inferenza per la generazione di testo (TGI versione 1.1). Quando si effettua il deploy dei modelli con il contenitore di deep learning TGI (DLC), è possibile configurare una varietà di argomenti del launcher tramite variabili di ambiente durante il deploy del tuo endpoint. Per supportare la lunghezza del contesto di 8.000 token dei modelli Mistral 7B, SageMaker JumpStart ha configurato alcuni di questi parametri per impostazione predefinita: abbiamo impostato MAX_INPUT_LENGTH e MAX_TOTAL_TOKENS rispettivamente a 8191 e 8192. È possibile visualizzare l’elenco completo ispezionando l’oggetto del modello:

print(model.env)

Per impostazione predefinita, SageMaker JumpStart non limita gli utenti concorrenti tramite la variabile di ambiente MAX_CONCURRENT_REQUESTS a valori inferiori al valore predefinito di TGI di 128. Il motivo è che alcuni utenti possono avere carichi di lavoro tipici con lunghezze di contesto dei dati di input ridotte e desiderano una grande concorrenza. Tieni presente che il DLC TGI di SageMaker supporta utenti concorrenti multipli tramite il batch rolling. Quando effettui il deploy del tuo endpoint per la tua applicazione, potresti considerare se sia opportuno regolare MAX_TOTAL_TOKENS o MAX_CONCURRENT_REQUESTS prima del deploy per ottenere le migliori prestazioni per il tuo carico di lavoro:

model.env["MAX_CONCURRENT_REQUESTS"] = "4"

In questo caso, mostriamo come le prestazioni del modello possono differire per il tuo tipico carico di lavoro dell’endpoint. Nelle tabelle seguenti, puoi osservare che le query di piccole dimensioni (128 parole di input e 128 token di output) hanno prestazioni molto elevate con un grande numero di utenti concorrenti, raggiungendo una velocità di elaborazione dei token dell’ordine di 1.000 token al secondo. Tuttavia, man mano che il numero di parole di input aumenta a 512 parole di input, l’endpoint satura la capacità di batching, ovvero il numero di richieste concorrenti che possono essere elaborate contemporaneamente, risultando in una velocità di elaborazione costante e degradi significativi delle prestazioni a partire da circa 16 utenti concorrenti. Infine, quando viene effettuata una query sull’endpoint con contesti di input di grandi dimensioni (ad esempio, 6.400 parole) contemporaneamente da utenti concorrenti multipli, si raggiunge rapidamente una velocità di elaborazione costante, tanto da far sì che il tuo account SageMaker inizi ad incontrare limiti di timeout di risposta di 60 secondi per le richieste sovraccariche.

. throughput (tokens/s)
utenti simultanei 1 2 4 8 16 32 64 128
modello tipo di istanza parole in input token in output .
mistral-7b-instruct ml.g5.2xlarge 128 128 30 54 89 166 287 499 793 1030
512 128 29 50 80 140 210 315 383 458
6400 128 17 25 30 35
. latenza media (ms/token)
utenti simultanei 1 2 4 8 16 32 64 128
modello tipo di istanza parole in input token in output .
mistral-7b-instruct ml.g5.2xlarge 128 128 32 33 34 36 41 46 59 88
512 128 34 36 39 43 54 71 112 213
6400 128 57 71 98 154

Indizio e prompt di esempio

Mistral 7B

Puoi interagire con un modello di base di Mistral 7B come qualsiasi altro modello di generazione di testo standard, in cui il modello elabora una sequenza di input e produce come output le parole previste successive nella sequenza. Di seguito è riportato un semplice esempio con apprendimento multi-shot, in cui al modello sono forniti diversi esempi e la risposta finale all’esempio viene generata con la conoscenza contestuale di questi esempi precedenti:

> InputTweet: "Mi deprimo quando si scarica la batteria del mio telefono."Sentiment: Negativo###Tweet: "La mia giornata è stata :+1:"Sentiment: Positivo###Tweet: "Questo è il link all'articolo"Sentiment: Neutro###Tweet: "Questo nuovo video musicale è stato incredibile"Sentiment:> Output Positivo

Mistral 7B istruzioni

La versione ottimizzata per le istruzioni di Mistral accetta istruzioni formattate in cui i ruoli della conversazione devono iniziare con un prompt dell’utente e alternarsi tra utente e assistente. Un semplice prompt dell’utente potrebbe essere simile al seguente:

<s>[INST] {user_prompt} [/INST]

Un prompt multi-turn assomiglierà al seguente:

<s>[INST] {user_prompt_1} [/INST] {assistant_response_1} </s><s>[INST] {user_prompt_1} [/INST]

Questo schema si ripete per quante più interazioni ci sono in una conversazione.

Nelle sezioni seguenti, esploreremo alcuni esempi con l’utilizzo del modello Mistral 7B Instruct.

Recupero di conoscenza

Di seguito è riportato un esempio di recupero di conoscenza:

> Input<s>[INST] Quale paese ha il maggior numero di laghi naturali? Rispondi con il solo nome del paese. [/INST] > Output1. Canada

Risposta a domande con contesto esteso

Per mostrare come utilizzare questo modello per supportare lunghezze di contesto di input estese, l’esempio seguente incorpora un brano, intitolato “Rats” di Robert Sullivan (reference), dal test di comprensione della lettura MCAS Grade 10 English Language Arts nella parte istruzioni di input e chiede al modello una domanda diretta sul testo:

> Input<s>[INST] Un ratto è un roditore, il mammifero più comune al mondo. Rattus norvegicus è una delle circa quattrocento diverse tipologie di roditori, ed è conosciuto con molti nomi, ognuno dei quali descrive un tratto o un tratto percepito o a volte un habitat: ratto terreno, ratto errante, ratto di stalla, ratto di campo, ratto migratore, ratto di casa, ratto di fogna, ratto d'acqua, ratto di banchina, ratto di vicolo, ratto grigio, ratto marrone e ratto comune. Il ratto marrone medio è grande e robusto; cresce fino a circa sedici pollici di lunghezza dal naso alla coda - delle dimensioni di un piede di un uomo adulto - e pesa circa una libbra, anche se i ratti marroni sono stati misurati da scienziati e disinfestatori fino a venti pollici e due libbre. A volte si confonde il ratto marrone con il ratto nero, o Rattus rattus, che è più piccolo e un tempo abitava New York e tutte le città d'America ma, poiché Rattus norvegicus l'ha spinto fuori, è ora relegato a un ruolo secondario. (Le due specie sopravvivono ancora una accanto all'altra in alcune città costiere del Sud e sulla Costa Ovest, in luoghi come Los Angeles, ad esempio, dove il ratto nero vive negli sotterranei e nelle palme.) Il ratto nero è sempre di un grigio scuro molto scuro, quasi nero, e il ratto marrone è grigio o marrone, con un ventre che può essere grigio chiaro, giallo o persino bianco. Una primavera, sotto il Ponte di Brooklyn, ho visto un ratto marrone dai capelli rossi che era stato investito da una macchina. I ratti sono notturni e di notte gli occhi del ratto marrone sono piccoli, neri e lucenti; quando una torcia illumina i loro occhi nel buio, gli occhi di un ratto si illuminano come quelli di un cervo. Anche se foraggia* al buio, il ratto marrone ha una vista debole. Per compensare questo, ha, prima di tutto, un ottimo senso dell'olfatto. . . . Hanno un eccellente senso del gusto, rilevando le quantità più minute di veleno, fino a una parte per milione. Un ratto marrone ha zampe robuste, le due zampe anteriori sono dotate di quattro unghie simili a artigli, le zampe posteriori sono ancora più lunghe e forti. È in grado di correre e arrampicarsi con l'agilità di uno scoiattolo. È anche un eccellente nuotatore, sopravvive in fiumi e baie, in corsi d'acqua di fogne e nelle scodelle dei gabinetti.Il ratto marrone ha denti gialli, in particolare i due incisivi anteriori sono lunghi e appuntiti, simili a zanne. Quando il ratto morde, i due incisivi si separano. Quando rosicchia, un lembo di pelle chiude lo spazio dietro i suoi incisivi. Pertanto, quando il ratto rosicchia materiali indigeribili - come il cemento o l'acciaio, ad esempio - le schegge non scendono fino alla gola del ratto e non lo uccidono. I suoi incisivi crescono a un ritmo di cinque pollici all'anno. I ratti rosicchiano sempre, e non si sa con certezza perché - ci sono pochi studi moderni sui ratti. Talvolta si afferma erroneamente che

Matematica e ragionamento

Anche i modelli Mistral riportano punti di forza nella precisione matematica. Mistral può fornire comprensione come la seguente logica matematica:

> Input<s>[INST] Ho comprato un gelato per 6 bambini. Ogni cono costava $1,25 e ho pagato con un biglietto da $10. Quanti dollari mi sono stati restituiti? Spiega prima di rispondere. [/INST]> Output1. Innanzitutto, cerchiamo di capire quanto costa in totale il gelato. Dal momento che ogni cono costava $1,25 e c'erano 6 bambini, il costo totale sarebbe:Costo totale = Numero di coni * Costo per conoCosto totale = 6 * $1,25Costo totale = $7,502. Successivamente, sottrarremo il costo totale dalla somma pagata ($10) per scoprire quanti soldi sono stati restituiti:Soldi restituiti = Somma pagata - Costo totaleSoldi restituiti = $10 - $7,50Soldi restituiti = $2,50Quindi, ti sono stati restituiti $2,50 dopo aver comprato il gelato per i 6 bambini.

Programmazione

Di seguito è riportato un esempio di un prompt di programmazione:

> Input<s>[INST] In Bash, come faccio a elencare tutti i file di testo nella directory corrente (escludendo le sottodirectory) che sono stati modificati nell'ultimo mese? [/INST] > Output1. Usa il comando `find` per cercare i file di testo nella directory corrente (escludendo le sottodirectory) che sono stati modificati nell'ultimo mese. L'opzione `-type f` specifica che vogliamo cercare solo i file, non le directory. L'opzione `-name "*.txt"` specifica che vogliamo cercare solo i file con l'estensione `.txt`. L'opzione `-mtime -30` specifica che vogliamo cercare solo i file che sono stati modificati negli ultimi 30 giorni (1 mese).```bashfind . -type f -name "*.txt" -mtime -30```Questo comando elencherà tutti i file di testo nella directory corrente (escludendo le sottodirectory) che sono stati modificati nell'ultimo mese.

Pulizia

Dopo aver eseguito il notebook, assicurati di eliminare tutte le risorse create durante il processo in modo che la fatturazione venga interrotta. Usa il seguente codice:

predictor.delete_model()predictor.delete_endpoint()

Conclusioni

In questo post, ti abbiamo mostrato come iniziare con Mistral 7B in SageMaker Studio e distribuire il modello per l'elaborazione. Poiché i modelli fondamentali sono pre-addestrati, possono aiutare a ridurre i costi di formazione e infrastruttura e consentire la personalizzazione per il tuo caso d'uso. Visita Amazon SageMaker JumpStart ora per iniziare.

Risorse