Ottimizza e distribuisci Mistral 7B con Amazon SageMaker JumpStart

Ottimizza e Distribuisci Mistral 7B con Amazon SageMaker JumpStart Potenzia le tue Prestazioni

Oggi, siamo entusiasti di annunciare la capacità di ottimizzare il modello Mistral 7B utilizzando Amazon SageMaker JumpStart. Ora è possibile ottimizzare in modo specifico il modello di generazione di testo Mistral utilizzando SageMaker JumpStart utilizzando l’interfaccia utente di Amazon SageMaker Studio con pochi clic o utilizzando il SageMaker Python SDK.

I modelli di base svolgono molto bene i compiti generativi, dalla scrittura di testi e riassunti, alla risposta a domande, fino alla produzione di immagini e video. Nonostante le grandi capacità di generalizzazione di questi modelli, ci sono spesso casi d’uso che richiedono dati specifici di dominio molto specifici (come ad esempio il settore sanitario o servizi finanziari) e questi modelli potrebbero non essere in grado di fornire buoni risultati per questi casi d’uso. Questo comporta la necessità di ulteriori ottimizzazioni di questi modelli IA generativi utilizzando dati specifici per un caso d’uso e per un dominio specifici.

In questo articolo, mostreremo come ottimizzare il modello Mistral 7B utilizzando SageMaker JumpStart.

Cos’è Mistral 7B

Mistral 7B è un modello di base sviluppato da Mistral AI, che supporta il testo inglese e le capacità di generazione di codice. Supporta una varietà di casi d’uso, come il riassunto di testo, la classificazione, il completamento del testo e il completamento del codice. Per dimostrare la personalizzabilità del modello, Mistral AI ha pubblicato anche un modello Mistral 7B-Instruct per i casi d’uso di chat, ottimizzato utilizzando una varietà di set di dati di conversazione disponibili pubblicamente.

Mistral 7B è un modello di trasformazione che utilizza l’attenzione raggruppata delle query e l’attenzione a finestra scorrevole per ottenere un’elaborazione più veloce (bassa latenza) e gestire sequenze più lunghe. L’attenzione raggruppata delle 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à comparabile all’attenzione multi-query. Il metodo di attenzione a finestra scorrevole utilizza i molteplici livelli di un modello di trasformazione per concentrarsi sulle informazioni precedenti, il che aiuta il modello a comprendere un periodo di contesto più lungo. Mistral 7B ha una lunghezza di contesto di 8.000 token, dimostra bassa latenza e alto rendimento e ha prestazioni elevate se confrontato con modelli più grandi, offrendo requisiti di memoria ridotti a una dimensione di modello 7B. Il modello è disponibile in licenza Apache 2.0 liberamente utilizzabile senza restrizioni.

Puoi ottimizzare i modelli utilizzando sia l’interfaccia utente di SageMaker Studio che il SageMaker Python SDK. Discuteremo entrambi i metodi in questo articolo.

Ottimizzazione tramite l’interfaccia utente di SageMaker Studio

In SageMaker Studio, puoi accedere al modello Mistral tramite SageMaker JumpStart in Modelli, notebook e soluzioni, come mostrato nella seguente schermata.

Se non visualizzi i modelli Mistral, aggiorna la versione di SageMaker Studio spegnendolo e riavviandolo. Per ulteriori informazioni sugli aggiornamenti della versione, consulta Spegni e aggiorna le app di Studio.

Nella pagina del modello, puoi indicare il bucket di Amazon Simple Storage Service (Amazon S3) che contiene i set di dati di allenamento e di convalida per l’ottimizzazione. Inoltre, è possibile configurare la configurazione del rilascio, gli iperparametri e le impostazioni di sicurezza per l’ottimizzazione. Successivamente, puoi scegliere Allenare per avviare il processo di allenamento su un’istanza ML di SageMaker.

Effettua il rilascio del modello

Dopo aver ottimizzato il modello, è possibile effettuarne il rilascio utilizzando la pagina del modello in SageMaker JumpStart. L’opzione per effettuare il rilascio del modello ottimizzato apparirà una volta completata l’ottimizzazione, come mostrato nella seguente schermata.

Accurate tramite il kit di sviluppo Python di SageMaker

Puoi anche migliorare i modelli di Mistral utilizzando il kit di sviluppo Python di SageMaker. Il notebook completo è disponibile su GitHub. In questa sezione, forniamo esempi di due tipi di miglioramenti.

Miglioramento tramite istruzioni

Il miglioramento tramite istruzioni è una tecnica che consiste nel migliorare un modello di linguaggio su una serie di compiti di elaborazione del linguaggio naturale (NLP) utilizzando istruzioni. In questa tecnica, il modello viene addestrato a svolgere compiti seguendo istruzioni testuali anziché dati specifici per ogni compito. Il modello viene migliorato tramite un insieme di esempi di input e output per ogni compito, consentendo al modello di generalizzare a nuovi compiti su cui non è stato addestrato esplicitamente purché vengano forniti suggerimenti per i compiti. Il miglioramento tramite istruzioni aiuta a migliorare l’accuratezza e l’efficacia dei modelli ed è utile in situazioni in cui non sono disponibili grandi set di dati per compiti specifici.

Vediamo come utilizzare il codice di miglioramento fornito nel notebook con il kit di sviluppo Python di SageMaker.

Utilizziamo un sottoinsieme del dataset di Dolly in formato di miglioramento tramite istruzioni e specifica il file template.json che descrive i formati di input e output. I dati di addestramento devono essere formattati in formato JSON lines (.jsonl), in cui ogni riga è un dizionario che rappresenta un singolo campione di dati. In questo caso, lo chiamiamo train.jsonl.

L’esempio seguente è un esempio di train.jsonl. Le chiavi instruction, context e response in ogni campione dovrebbero avere voci corrispondenti {instruction}, {context}, {response} nel template.json.

{    "instruction": "Cos'è un prisma dispersivo?",     "context": "In ottica, un prisma dispersivo è un prisma ottico che viene utilizzato per disperdere la luce, cioè per separare la luce nei suoi componenti spettrali (i colori dell'arcobaleno). Diverse lunghezze d'onda (colori) della luce verranno deviate dal prisma ad angoli diversi. Questo è il risultato della variazione dell'indice di rifrazione del materiale del prisma in funzione della lunghezza d'onda (dispersione). In generale, lunghezze d'onda più lunghe (rosse) subiscono una deviazione minore rispetto a lunghezze d'onda più corte (blu). La dispersione della luce bianca in colori tramite un prisma portò Sir Isaac Newton a concludere che la luce bianca consisteva in una miscela di colori diversi.",     "response": "Un prisma dispersivo è un prisma ottico che dispersa le diverse lunghezze d'onda della luce ad angoli diversi. Quando la luce bianca viene fatta passare attraverso un prisma dispersivo, si separerà nei diversi colori dell'arcobaleno."}

Il seguente è un esempio di template.json:

{    "prompt": "Di seguito è riportata un'istruzione che descrive un compito, abbinata all'input che fornisce ulteriori informazioni. "    "Scrivi una risposta che completi correttamente la richiesta.\n\n"    "### Istruzione:\n{instruction}\n\n### Input:\n{context}\n\n",    "completion": " {response}",}

Dopo aver caricato il modello dell’istruzione e i dati di addestramento in un bucket S3, è possibile impostare gli iperparametri.

my_hyperparameters["epoch"] = "1"my_hyperparameters["per_device_train_batch_size"] = "2"my_hyperparameters["gradient_accumulation_steps"] = "2"my_hyperparameters["instruction_tuned"] = "True"print(my_hyperparameters)

Puoi quindi avviare il processo di miglioramento e distribuire il modello su un endpoint di inferenza. Nel codice seguente, utilizziamo un’istanza ml.g5.12xlarge:

from sagemaker.jumpstart.estimator import JumpStartEstimatorinstruction_tuned_estimator = JumpStartEstimator(    model_id=model_id,    hyperparameters=my_hyperparameters,    instance_type="ml.g5.12xlarge",)instruction_tuned_estimator.fit({"train": train_data_location}, logs=True)instruction_tuned_predictor = instruction_tuned_estimator.deploy()

Adattamento del dominio con fine-tuning

L’adattamento del dominio con fine-tuning è un processo che affina un LLM (Linguaggio Naturale modello di Linguaggio) pre-addestrato per adattarlo meglio a un dominio o a un compito specifico. Utilizzando un dataset più piccolo e specifico del dominio, il LLM può essere addestrato ulteriormente per comprendere e generare contenuti più accurati, pertinenti e informativi per quel dominio specifico, mantenendo comunque la vasta conoscenza acquisita durante il suo addestramento originale.

Il modello Mistral può essere addestrato ulteriormente su qualsiasi dataset specifico del dominio. Dopo essere stato addestrato, ci si aspetta che generi testo specifico del dominio e risolva vari compiti di Elaborazione del Linguaggio Naturale in quel dominio specifico. Per il dataset di addestramento, fornire una directory di addestramento e una directory di convalida opzionale, ciascuna contenente un singolo file CSV, JSON o TXT. Per i formati CSV e JSON, utilizzare i dati della colonna “text” o della prima colonna se “text” non è presente. Assicurarsi che sotto ciascuna directory esista solo un file. Ad esempio, i dati di input possono essere i documenti di deposito SEC di Amazon in formato di testo:

Questo rapporto include stime, proiezioni, dichiarazioni relative ai nostri piani di business, obiettivi e risultati operativi attesi, che costituiscono "dichiarazioni previsionali" ai sensi del Private Securities Litigation Reform Act del 1995, Sezione 27A del Securities Act del 1933 e Sezione 21E del Securities Exchange Act del 1934. Le dichiarazioni previsionali possono apparire in tutto questo rapporto, comprese le seguenti sezioni: "Business" (Parte I, Voce 1 del modulo 10-K), "Fattori di rischio" (Parte I, Voce 1A del modulo 10-K) e "Discussione della gestione e analisi della situazione finanziaria e dei risultati operativi" (Parte II, Voce 7 del modulo 10-K). Queste dichiarazioni previsionali generalmente sono identificate dalle parole "credere", "progettare", "aspettarsi", "anticipare", "stimare", "intendere", "strategia", "futuro", "opportunità", "piano", "potrebbe", "dovrebbe", "volere", "sarà", "continuerà", "probabilmente", "e" espressioni simili.

Puoi avviare l’adattamento del dominio con fine-tuning specificando l’iperparametro “instruction_tuned” come “False”. Il resto dei passaggi sono simili ai passaggi per il fine-tuning delle istruzioni.

Abbiamo impostato “max_input_length” su 2048 per g5.12xlarge. È possibile utilizzare una lunghezza di input superiore su un’istanza di tipo più grande. Per ulteriori dettagli, consultare il notebook di esempio.

Esempio di inferenza con e senza fine-tuning

La seguente tabella contiene i risultati del modello Mistral 7B addestrato ulteriormente con documenti di deposito SEC di Amazon dal 2021 al 2022. Confrontiamo l’output prima e dopo il fine-tuning.

Prompt di input Output prima del fine-tuning Output dopo il fine-tuning Parametri
Questo rapporto 10-K mostra che

l’azienda è stata in attività per 10 anni e ha un totale di 10 dipendenti. L’azienda ha un totale di 10 dipendenti e si occupa di fornire servizi al pubblico. L’azienda ha un totale di 10 dipendenti e si occupa di fornire servizi al pubblico.

L’azienda ha un totale di 10 dipendenti e si occupa di fornire servizi al pubblico. L’azienda ha un totale di 10 dipendenti e si occupa di fornire servizi al pubblico. L’azienda ha un totale di 10 dipendenti e si occupa di fornire servizi al pubblico. L’azienda ha un totale di 10 dipendenti e si occupa di

abbiamo registrato vendite nette di 1,2 miliardi, 1,5 miliardi e 1,8 miliardi di dollari nel 2004, 2003 e 2002. Queste cifre includono le vendite dai nostri siti web internazionali. Le vendite nette dai nostri siti web internazionali sono state rispettivamente di 323 milioni, 242 milioni e 150 milioni di dollari nel 2004, 2003 e 2002. Le vendite nette dai nostri siti web internazionali rappresentavano rispettivamente il 27%, il 16% e l’8% delle vendite nette nel 2004, 2003 e 2002. “temperature”: 0.2, “max_new_tokens”: 150,
Serviamo i consumatori attraverso

la nostra rete di 1.700 negozi, che includono 1.200 negozi negli Stati Uniti, 400 negozi in Canada e 100 negozi in Messico. Serviamo anche i consumatori attraverso i nostri siti web di e-commerce.

Che cosa è il

più grande negozio di miglioramento per la casa?

The Home Depot è il più grande rivenditore di miglioramento per la casa negli Stati Uniti.

Che cosa è il

più grande negozio di miglioramento per la casa al mondo?

Il più grande negozio di miglioramento per la casa al mondo è Home Depot.

Che cosa è il

più grande negozio di miglioramento per la casa nel

i nostri negozi online e fisici e ci concentriamo sulla selezione, sul prezzo e sulla comodità. Progettiamo i nostri negozi in modo che centinaia di milioni di prodotti unici possano essere venduti da noi e da terzi in decine di categorie di prodotti. I clienti accedono alle nostre offerte tramite i nostri siti web, app mobili, Alexa, dispositivi, streaming e visite fisiche nei nostri negozi. Produciamo e vendiamo inoltre dispositivi elettronici, tra cui Kindle, tablet Fire, Fire TV, Echo e Ring, e sviluppiamo e produciamo contenuti multimediali. Cerchiamo di offrire ai nostri clienti prezzi bassi, consegna rapida e gratuita, funzionalità facili da usare e un servizio clienti tempestivo. Inoltre, offriamo servizi di abbonamento come Amazon Prime, un
La nostra visione è

essere il principale fornitore di servizi sanitari di qualità, accessibili e convenienti nelle comunità in cui operiamo.

La nostra missione è fornire servizi sanitari di qualità, accessibili e convenienti alle comunità in cui operiamo.

I nostri valori sono:

– Integrità: agiamo con onestà e integrità in tutti i nostri rapporti. – Rispetto: trattiamo tutti con rispetto e dignità. – Eccellenza: cerchiamo l’eccellenza in tutto ciò che facciamo. – Compassione: ci prendiamo cura dei nostri pazienti e degli altri con compassione. – L

Come puoi vedere, il modello affinato fornisce informazioni più specifiche legate ad Amazon rispetto a quello generico pre-addestrato. Questo accade perché l’affinamento adatta il modello per comprendere le sfumature, i pattern e le specificità del dataset fornito. Utilizzando un modello pre-addestrato e adattandolo con l’affinamento, garantiamo di ottenere il meglio di entrambi i mondi: la conoscenza generale del modello pre-addestrato e la precisione specializzata per il tuo dataset unico. Una taglia potrebbe non adattarsi a tutti nel mondo dell’apprendimento automatico, e l’affinamento è la soluzione su misura di cui hai bisogno!

Conclusioni

In questo post, abbiamo discusso dell’affinamento del modello Mistral 7B utilizzando SageMaker JumpStart. Abbiamo mostrato come puoi utilizzare la console di SageMaker JumpStart in SageMaker Studio o l’SDK di Python di SageMaker per affinare e distribuire questi modelli. Come prossimo passo, puoi provare ad affinare questi modelli sul tuo dataset utilizzando il codice fornito nel repository di GitHub per testare e valutare i risultati per i tuoi casi d’uso.