Implementazione del modello generativo Mistral 7b su una GPU A10 su AWS

Summary

Questo corso sul cloud NLP mostra come implementare e utilizzare il modello generativo AI Mistral 7b su una GPU NVIDIA A10 su AWS.

Il modello Mistral 7b batte LaMA 2 7b in tutti i benchmark e LaMA 2 13b in molti benchmark. In realtà è addirittura alla pari con il modello LLaMA 1 34b.

L'implementazione e l'utilizzo richiedono almeno 15 GB di VRAM, motivo per cui è necessaria una GPU A10 con almeno 24 GB di VRAM.

Ecco la struttura del corso:

Transcript

Salve, sono Julien Sainas di NLP Cloud.

Oggi vedremo come implementare il modello generativo Mistral 7b su una GPU AWS A10.

Mistral 7b è un modello generativo all'avanguardia rilasciato da un'azienda francese chiamata Mistral AI.

Questo modello è stato rilasciato nel settembre 2023 e batte Lama 2 7b in tutti i benchmark ufficiali.

Ancora più interessante è il fatto che batte Lama 2 13b su molti benchmark ed è alla pari con Lama 1 34b.

Mistral AI ha rilasciato questo modello con una licenza Apache, che consente di utilizzarlo come si vuole.

Il team ha rilasciato sia un modello di base che una versione di chat perfezionata.

In questo video distribuiremo la versione della chat.

Mistral 7b richiede almeno 14 giga di memoria virtuale e più nel caso di un contesto di grandi dimensioni.

Per questo motivo lo distribuiremo su una GPU NVIDIA A10 su AWS, dato che questa GPU ha 24 giga di memoria virtuale ed è abbastanza conveniente.

Il modo più semplice per distribuire Mistral 7b è utilizzare il framework Hugging Face e seguire le linee guida ufficiali di Mistral AI.

Come primo passo, dovremo selezionare la macchina AWS giusta.

Ci sono tonnellate di macchine su AWS, quindi il miglior consiglio che posso darvi è di iniziare con questa pagina sui tipi di istanza e poi andare su Accelerated Computing a sinistra.

Qui c'è un elenco di tutte le istanze hardware accelerate che AWS mette a disposizione, e quella che vogliamo oggi è la G5.

Come si può vedere qui, il G5 incorpora una GPU A10, che è ciò che vogliamo.

Esistono diversi tipi di istanze G5.

Alcuni hanno una sola GPU, altri ne hanno quattro o otto.

Una GPU è sufficiente per noi perché c'è abbastanza memoria virtuale su una GPU, ma dobbiamo fare molta attenzione alla quantità di memoria che l'istanza ha perché quando avvieremo il modello Mistral 7b, avremo bisogno temporaneamente di un po' di memoria per caricare il modello.

Per questo motivo oggi selezioneremo un'istanza G5 4X di grandi dimensioni, perché 64 giga dovrebbero essere sufficienti.

Ora passo alla mia console AWS e faccio clic su Avvia istanza.

Chiamiamolo Test A10 Mistral.

Selezioneremo il sistema operativo Ubuntu, ma c'è un trucco.

Non vogliamo selezionare il sistema operativo standard Ubuntu perché dovremo installare manualmente i driver NVIDIA, il che è molto doloroso.

Selezioneremo il server Deep Learning AMI GPU PyTorch, che è molto meglio perché questo AMI viene fornito con Ubuntu, i driver NVIDIA, il toolkit CUDA, PyTorch e altre cose, tutte cose che ci serviranno per i nostri test.

In questo caso, selezioniamo l'istanza G5 4X large.

Se non si dispone di una coppia di chiavi, è necessario crearne una.

Se è la prima volta che lo fate e non sapete esattamente come collegare VS Code alla vostra istanza AWS, vi consiglio di guardare il nostro video dedicato all'ambiente di sviluppo remoto con VS Code su AWS.

Non è necessario aprire altre porte e vi consiglio di aggiungere forse 100 giga di disco.

In teoria, il modello dovrebbe occupare solo 20 giga di disco rigido, ma è sempre meglio averne di più perché forse dovremo installare delle librerie, quindi qui saremo al sicuro.

Facciamo clic su Avvia istanza.

Bene, è stato creato.

Se avete un problema di quota perché magari è la prima volta che lanciate una GPU 8N, vi consiglio di contattare il supporto AWS.

Ora prendo l'IP pubblico e passo a VS Code.

In basso a sinistra, è necessario collegare una finestra corrente all'host e, per prima cosa, è necessario configurare gli host.

Questo è l'indirizzo IP che ho appena recuperato da AWS e questa è la mia chiave SSH.

Salvo il file, rifaccio la stessa cosa e questa volta clicco su Mistral 7B.

Voglio accettare la nuova impronta digitale.

Perfetto.

Ora siamo sulla nostra macchina con GPU 8N.

Controlliamo innanzitutto se la GPU è disponibile con i driver giusti.

Con NVIDIA SMI, perfetto.

Posso vedere che ho una GPU 8N qui e che è vuota, quindi ho quasi 24 giga di VRAM per il mio modello oggi.

Creo una cartella di prova che aprirò con VS Code e creo un file di prova.

Magari chiamiamolo infer.py.

Cosa inserire in questo file infer.py? Semplice.

Passiamo al nostro modello Mistral AI su Hugging Face.

Se è la prima volta che scaricate un modello su Hugging Face, potete andare qui alla voce modelli e avrete a disposizione tonnellate di modelli.

Fare clic qui e digitare Mistral 7B.

Come si può notare, Mistral era già in cima alla lista perché è molto di moda al giorno d'oggi.

Sceglierò il modello Instruct perché è più divertente da giocare oggi, e qui sto solo seguendo le linee guida del team Mistral AI.

Quindi ho semplicemente copiato-incollato il codice in VS Code.

Non funzionerà così perché prima è necessario installare la libreria Transformers.

Poiché il modello Mistral 7B è stato appena aggiunto a Transformers, non è ancora disponibile nel pacchetto PyPy, ma non è un problema.

Installeremo Transformers direttamente dal repository GitHub.

Bene.

Ora Transformers è installato correttamente.

L'ultima cosa da fare è utilizzare la versione a virgola mobile 16 del modello, perché se utilizziamo la versione predefinita del modello, che è a virgola mobile 32, sarà troppo grande per la nostra GPU A10 e, nella maggior parte dei casi, la differenza tra FP16 e FP32 per questo tipo di modello non è assolutamente percepibile.

Quindi, ciò che dobbiamo fare oggi è importare Torch e aggiungere questo parametro, Torch dtype, al momento del caricamento del modello.

Bene.

Ora proviamo a eseguire lo script di inferenza.

Bene.

Abbiamo quindi una ricetta vera e propria sulla maionese.

Forse possiamo provare qualcos'altro.

Chiediamo al modello come installare Transformers su un server Linux.

Possiamo rimuovere questo aspetto.

Bene.

Quindi CSS, non sono sicuro del perché.

Sembra corretto, tranne che per il markup CSS.

Non so perché ci sia questo dettaglio, ma credo che sia sufficiente per farvi capire che si tratta di un bel modello 7B e che ora sapete come usarlo, quindi ora tocca a voi.

Ora sapete come distribuire il modello Mistral 7B sul vostro server.

Come si può vedere, non è necessariamente complesso, soprattutto perché oggi stiamo usando una sola GPU.

Se non si dispone di una GPU A10 con sufficiente memoria virtuale, potrebbero essere necessarie diverse GPU più piccole.

In questo caso, è necessario suddividere il modello su diverse GPU più piccole.

Sarà un po' più complesso e sarà necessario un altro video dedicato.

Buona giornata.