In questo post, mostriamo la messa a punto di un modello Llama 2 utilizzando un metodo PEFT (Parameter-Efficient Fine-Tuning) e distribuiamo il modello ottimizzato su AWS Inferenziale2. Noi usiamo il Neurone AWS kit di sviluppo software (SDK) per accedere al dispositivo AWS Inferentia2 e beneficiare delle sue elevate prestazioni. Utilizziamo quindi un contenitore di inferenza del modello di grandi dimensioni alimentato da Libreria Deep Java (DJLServing) come nostra soluzione per la presentazione dei modelli.
Panoramica della soluzione
Ottimizzazione efficiente di Llama2 utilizzando QLoRa
La famiglia Llama 2 di modelli linguistici di grandi dimensioni (LLM) è una raccolta di modelli di testo generativi preaddestrati e ottimizzati che vanno da 7 miliardi a 70 miliardi di parametri. Llama 2 è stato pre-addestrato su 2 trilioni di token di dati provenienti da fonti disponibili al pubblico. I clienti AWS a volte scelgono di ottimizzare i modelli Llama 2 utilizzando i dati dei clienti per ottenere prestazioni migliori per le attività downstream. Tuttavia, a causa dell'elevato numero di parametri del modello Llama 2, la messa a punto completa potrebbe essere proibitivamente costosa e richiedere molto tempo. L'approccio PEFT (Parameter-Efficient Fine-Tuning) può risolvere questo problema ottimizzando solo un numero limitato di parametri aggiuntivi del modello e congelando la maggior parte dei parametri del modello pre-addestrato. Per ulteriori informazioni su PEFT, si può leggere questo settimana. In questo post utilizziamo QLoRa per mettere a punto un modello Llama 2 7B.
Distribuisci un modello ottimizzato su Inf2 utilizzando Amazon SageMaker
AWS Inferentia2 è un acceleratore di machine learning (ML) appositamente progettato per carichi di lavoro di inferenza e offre prestazioni elevate a costi inferiori fino al 40% per carichi di lavoro LLM e AI generativi rispetto ad altre istanze ottimizzate per l'inferenza su AWS. In questo post utilizziamo Amazon Elastic Compute Cloud (Amazon EC2) Istanza Inf2, dotata di AWS Inferentia2, gli acceleratori Inferentia2 di seconda generazione, ciascuno contenente due NeuronCores-v2. Ogni NeuronCore-v2 è un'unità di calcolo indipendente ed eterogenea, con quattro motori principali: motori Tensor, Vector, Scalar e GPSIMD. Include una memoria SRAM gestita da software su chip per massimizzare la localizzazione dei dati. Poiché sono stati pubblicati diversi blog su Inf2, il lettore può fare riferimento a questo settimana e il nostro documentazione per ulteriori informazioni su Inf2.
Per distribuire modelli su Inf2, abbiamo bisogno dell'SDK AWS Neuron come livello software in esecuzione sull'hardware Inf2. AWS Neuron è l'SDK utilizzato per eseguire carichi di lavoro di deep learning su AWS Inferentia e AWSTrainium istanze basate. Consente il ciclo di vita dello sviluppo ML end-to-end per creare nuovi modelli, addestrare e ottimizzare questi modelli e distribuirli per la produzione. AWS Neuron include un deep learning compilatore, runtimee strumenti che sono nativamente integrati con framework popolari come TensorFlow e PyTorch. In questo blog utilizzeremo transformers-neuronx
, che fa parte dell'SDK AWS Neuron per i flussi di lavoro di inferenza del decodificatore del trasformatore. Esso supporta una gamma di modelli popolari, tra cui Llama 2.
Per distribuire i modelli su Amazon Sage Maker, solitamente utilizziamo un contenitore che contiene le librerie richieste, come Neuron SDK e transformers-neuronx
così come il componente di pubblicazione del modello. Amazon SageMaker sostiene contenitori di apprendimento profondo (DLC) con le popolari librerie open source per l'hosting di modelli di grandi dimensioni. In questo post utilizziamo il file Contenitore di inferenza modello grande per neurone. Questo contenitore ha tutto il necessario per distribuire il tuo modello Llama 2 su Inf2. Per le risorse per iniziare a utilizzare LMI su Amazon SageMaker, fare riferimento a molti dei nostri post esistenti (blog 1, blog 2, blog 3) su questo argomento. In breve, puoi eseguire il contenitore senza scrivere codice aggiuntivo. Puoi usare il gestore predefinito per un'esperienza utente fluida e passa uno dei nomi di modello supportati e qualsiasi parametro configurabile del tempo di caricamento. Questo compila e serve un LLM su un'istanza Inf2. Ad esempio, per distribuire OpenAssistant/llama2-13b-orca-8k-3319
, è possibile fornire la seguente configurazione (come serving.properties
file). In serving.properties
, specifichiamo il tipo di modello come llama2-13b-orca-8k-3319
, la dimensione del batch è 4, il grado parallelo del tensore è 2 e il gioco è fatto. Per l'elenco completo dei parametri configurabili, fare riferimento a Tutte le opzioni di configurazione DJL.
In alternativa, puoi scrivere il tuo file di gestione del modello come mostrato in questo esempio, ma ciò richiede l'implementazione dei metodi di caricamento del modello e di inferenza per fungere da ponte tra le API DJLServing.
Prerequisiti
L'elenco seguente descrive i prerequisiti per la distribuzione del modello descritto in questo post del blog. È possibile implementare sia dal file Console di gestione AWS o utilizzando l'ultima versione di Interfaccia della riga di comando di AWS (interfaccia a riga di comando dell'AWS).
Soluzione
Nella sezione seguente, esamineremo il codice in due parti:
- Ottimizzare un modello Llama2-7b e caricare gli artefatti del modello in una posizione del bucket Amazon S3 specificata.
- Distribuisci il modello in Inferentia2 utilizzando il contenitore di servizio DJL ospitato in Amazon SageMaker.
Gli esempi di codice completi con le istruzioni possono essere trovati in questo GitHub repository.
Parte 1: perfezionare un modello Llama2-7b utilizzando PEFT
Utilizzeremo il metodo recentemente introdotto nel documento QLoRA: ottimizzazione dell'adattatore di basso rango sensibile alla quantizzazione per la generazione del linguaggio di Tim Dettmers et al. QLoRA è una nuova tecnica per ridurre l'ingombro di memoria di modelli linguistici di grandi dimensioni durante la messa a punto, senza sacrificare le prestazioni.
Nota: La messa a punto del modello llama2-7b mostrata di seguito è stata testata su un'Amazzonia Taccuino SageMaker Studio con kernel ottimizzato per GPU Python 2.0 utilizzando a ml.g5.2xgrande tipo di istanza. Come procedura consigliata, consigliamo di utilizzare un file Amazon Sage Maker Studio Ambiente di sviluppo integrato (IDE) lanciato in proprio Cloud privato virtuale di Amazon (Amazon VPC). Ciò consente di controllare, monitorare e ispezionare il traffico di rete all'interno e all'esterno del VPC utilizzando funzionalità di rete e sicurezza AWS standard. Per ulteriori informazioni, vedere Protezione della connettività di Amazon SageMaker Studio utilizzando un VPC privato.
Quantizzare il modello base
Per prima cosa carichiamo un modello quantizzato con quantizzazione a 4 bit utilizzando Trasformatori Huggingface biblioteca come segue:
Carica il set di dati di addestramento
Successivamente, carichiamo il set di dati per alimentare il modello per la fase di perfezionamento mostrata come segue:
Attacca uno strato adattatore
Qui alleghiamo un piccolo livello adattatore addestrabile, configurato come LoraConfig definito negli Hugging Face peft biblioteca.
Addestra un modello
Utilizzando la configurazione LoRA mostrata sopra, perfezioneremo il modello Llama2 insieme agli iperparametri. Uno snippet di codice per l'addestramento del modello è mostrato di seguito:
Unisci il peso del modello
Il modello ottimizzato eseguito in precedenza ha creato un nuovo modello contenente i pesi dell'adattatore LoRA addestrati. Nel seguente frammento di codice uniremo l'adattatore con il modello di base in modo da poter utilizzare il modello ottimizzato per l'inferenza.
Carica il peso del modello su Amazon S3
Nella fase finale della parte 1, salveremo i pesi del modello unito in una posizione Amazon S3 specificata. Il peso del modello verrà utilizzato da un contenitore di servizio del modello in Amazon SageMaker per ospitare il modello utilizzando un'istanza Inferentia2.
Parte 2: modello Host QLoRA per l'inferenza con AWS Inf2 utilizzando il contenitore LMI SageMaker
In questa sezione, esamineremo le fasi di distribuzione di un modello ottimizzato QLoRA in un ambiente di hosting Amazon SageMaker. Useremo a Servizio DJL contenitore di SageMaker DLC, che si integra con il trasformatori-neuronx libreria per ospitare questo modello. La configurazione facilita il caricamento dei modelli sugli acceleratori AWS Inferentia2, parallelizza il modello su più NeuronCore e consente di servire tramite endpoint HTTP.
Preparare gli artefatti del modello
DJL supporta molte librerie di ottimizzazione del deep learning, tra cui deepspeed, Trasformatore più veloce e altro ancora. Per configurazioni specifiche del modello, forniamo a serving.properties
con parametri chiave, come tensor_parallel_degree
ed model_id
per definire le opzioni di caricamento del modello. IL model_id
potrebbe essere un ID modello Hugging Face o un percorso Amazon S3 in cui sono archiviati i pesi del modello. Nel nostro esempio, forniamo la posizione Amazon S3 del nostro modello ottimizzato. Il seguente frammento di codice mostra le proprietà utilizzate per la fornitura del modello:
Si prega di fare riferimento a questo documentazione per ulteriori informazioni sulle opzioni configurabili disponibili tramite serving.properties
. Si prega di notare che usiamo option.n_position=512
in questo blog per una compilazione più rapida di AWS Neuron. Se si desidera provare una lunghezza del token di input maggiore, si consiglia al lettore di precompilare il modello in anticipo (vedere Modello di precompilazione AOT su EC2). Altrimenti, potresti riscontrare un errore di timeout se il tempo di compilazione è eccessivo.
Dopo il serving.properties
è definito, impacchetteremo il file in un file tar.gz
formato, come segue:
Quindi, caricheremo tar.gz in una posizione del bucket Amazon S3:
Crea un endpoint del modello Amazon SageMaker
Per utilizzare un'istanza Inf2 per il servizio, utilizziamo un Amazon Contenitore LMI SageMaker con supporto DJL neuronX. Si prega di fare riferimento a questo settimana per ulteriori informazioni sull'utilizzo di un contenitore DJL NeuronX per l'inferenza. Il codice seguente mostra come distribuire un modello utilizzando Amazon SageMaker Python SDK:
Endpoint del modello di prova
Dopo che il modello è stato distribuito correttamente, possiamo convalidare l'endpoint inviando una richiesta di esempio al predittore:
L'output di esempio è mostrato come segue:
Nel contesto dell'analisi dei dati, il Machine Learning (ML) si riferisce a una tecnica statistica in grado di estrarre potere predittivo da un set di dati con una complessità e una precisione crescenti restringendo in modo iterativo l'ambito di una statistica.
Il Machine Learning non è una nuova tecnica statistica, ma piuttosto una combinazione di tecniche esistenti. Inoltre, non è stato progettato per essere utilizzato con un set di dati specifico o per produrre un risultato specifico. Piuttosto, è stato progettato per essere sufficientemente flessibile da adattarsi a qualsiasi set di dati e fare previsioni su qualsiasi risultato.
ripulire
Se decidi di non voler più mantenere in esecuzione l'endpoint SageMaker, puoi eliminarlo utilizzando SDK AWS per Python (boto3), AWS CLI o console Amazon SageMaker. Inoltre, puoi anche arrestare le risorse di Amazon SageMaker Studio che non sono più necessari.
Conclusione
In questo post, ti abbiamo mostrato come ottimizzare un modello Llama2-7b utilizzando l'adattatore LoRA con quantizzazione a 4 bit utilizzando una singola istanza GPU. Quindi abbiamo distribuito il modello su un'istanza Inf2 ospitata in Amazon SageMaker utilizzando un contenitore di servizio DJL. Infine, abbiamo convalidato l'endpoint del modello Amazon SageMaker con una previsione di generazione del testo utilizzando SageMaker Python SDK. Vai avanti e provalo, ci piace sentire il tuo feedback. Resta sintonizzato per aggiornamenti su ulteriori funzionalità e nuove innovazioni con AWS Inferentia.
Per ulteriori esempi su AWS Neuron, consulta campioni-neuroni-aws.
Informazioni sugli autori
Wei Teh è un Senior AI/ML Specialist Solutions Architect presso AWS. La sua passione è aiutare i clienti a progredire nel loro percorso AWS, concentrandosi sui servizi Amazon Machine Learning e sulle soluzioni basate sull'apprendimento automatico. Al di fuori del lavoro, gli piacciono le attività all'aria aperta come il campeggio, la pesca e le escursioni con la sua famiglia.
Qingweio Li è uno specialista in machine learning presso Amazon Web Services. Ha conseguito il dottorato di ricerca. in Ricerca Operativa dopo che ha rotto il conto dell'assegno di ricerca del suo consulente e non è riuscito a consegnare il premio Nobel che aveva promesso. Attualmente aiuta i clienti nel settore dei servizi finanziari e assicurativi a creare soluzioni di machine learning su AWS. Nel tempo libero gli piace leggere e insegnare.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- Chi siamo
- sopra
- acceleratore
- acceleratori
- accesso
- Il mio account
- precisione
- Raggiungere
- operanti in
- attività
- adattare
- aggiuntivo
- Inoltre
- indirizzo
- avanzare
- Dopo shavasana, sedersi in silenzio; saluti;
- avanti
- AI
- AI / ML
- AL
- consente
- lungo
- Alpha
- anche
- Amazon
- Apprendimento automatico di Amazon
- Amazon Sage Maker
- Amazon Sage Maker Studio
- Amazon Web Services
- an
- .
- ed
- in qualsiasi
- API
- APPLICA
- approccio
- SONO
- AS
- At
- allegare
- auto
- disponibile
- AWS
- AWS Inferenza
- palla
- base
- basato
- dosaggio
- BE
- stato
- beneficio
- MIGLIORE
- Meglio
- fra
- Miliardo
- Blog
- blog
- BRIDGE
- Rotto
- costruire
- ma
- by
- Materiale
- funzionalità
- capace
- Scegli
- Cloud
- codice
- collezione
- combinazione
- completamento di una
- complessità
- componente
- Calcolare
- Configurazione
- configurato
- Connettività
- consolle
- consumo
- Contenitore
- contiene
- contesto
- di controllo
- Costo
- potuto
- creato
- Attualmente
- Clienti
- dati
- analisi dei dati
- decide
- deep
- apprendimento profondo
- Predefinito
- definire
- definito
- Laurea
- consegnare
- fornisce un monitoraggio
- schierare
- schierato
- distribuzione
- descritta
- progettato
- Mercato
- dispositivo
- docker
- giù
- dovuto
- durante
- dinamico
- E&T
- ogni
- o
- Abilita
- da un capo all'altro
- endpoint
- motore
- Motori
- abbastanza
- Ambiente
- errore
- eccetera
- qualunque cosa
- esempio
- Esempi
- eseguito
- esistente
- costoso
- esperienza
- extra
- Faccia
- facilita
- fallito
- falso
- famiglia
- più veloce
- Grazie
- feedback
- Compila il
- finale
- Infine
- finanziario
- servizio finanziario
- Nome
- Pesca
- flessibile
- messa a fuoco
- seguire
- seguito
- i seguenti
- segue
- Orma
- Nel
- formato
- essere trovato
- quattro
- quadri
- congelamento
- da
- pieno
- Inoltre
- ELETTRICA
- generativo
- AI generativa
- ottenere
- Dare
- Go
- andando
- GPU
- concedere
- Hardware
- he
- sentire
- aiutare
- aiuta
- qui
- Alta
- Alte prestazioni
- il suo
- host
- ospitato
- di hosting
- Casa
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- ID
- if
- Immagine
- realizzare
- Implementazione
- in
- includere
- inclusi
- Compreso
- crescente
- studente indipendente
- industria
- informazioni
- innovazioni
- ingresso
- Ingressi
- esempio
- istruzioni
- assicurazione
- integrato
- Integra
- ai miglioramenti
- introdotto
- IT
- iterazione
- SUO
- Java
- viaggio
- jpg
- json
- mantenere
- Le
- Corredo (SDK)
- Lingua
- grandi
- superiore, se assunto singolarmente.
- con i più recenti
- lanciato
- strato
- galline ovaiole
- apprendimento
- Lunghezza
- Livello
- biblioteche
- Biblioteca
- ciclo di vita
- piace
- piace
- linea
- Lista
- Lama
- LLM
- caricare
- Caricamento in corso
- località
- più a lungo
- amore
- inferiore
- macchina
- machine learning
- Principale
- mantiene
- make
- gestione
- molti
- massimizzando
- Memorie
- Unire
- metodo
- metodi
- forza
- ML
- modello
- modelli
- moduli
- Monitorare
- Scopri di più
- maggior parte
- molti
- multiplo
- nomi
- alla
- Bisogno
- Rete
- traffico di rete
- internazionale
- New
- no
- premio Nobel
- Nessuna
- Nota
- numero
- of
- on
- ONE
- esclusivamente
- su
- aprire
- open source
- Operazioni
- ottimizzazione
- OTTIMIZZA
- ottimizzati
- Opzione
- Opzioni
- or
- Altro
- altrimenti
- nostro
- Risultato
- lineamenti
- produzione
- al di fuori
- ancora
- proprio
- pacchetto
- Carta
- Parallel
- parametro
- parametri
- parte
- Ricambi
- passare
- appassionato
- sentiero
- performance
- eseguita
- piano
- Platone
- Platone Data Intelligence
- PlatoneDati
- per favore
- Popolare
- Post
- Post
- energia
- alimentato
- pratica
- Precisione
- predizione
- Previsioni
- Predictor
- prerequisiti
- un bagno
- premio
- Problema
- processi
- produrre
- Produzione
- promesso
- proprietà
- fornire
- pubblicamente
- pubblicato
- Python
- pytorch
- gamma
- che vanno
- piuttosto
- Leggi
- Lettore
- Lettura
- ricevuto
- recentemente
- raccomandare
- ridurre
- riferimento
- si riferisce
- deposito
- richiesta
- richieste
- necessario
- richiede
- riparazioni
- Risorse
- risposta
- risposte
- destra
- Correre
- running
- sacrificando
- sagemaker
- Risparmi
- Scala
- scala
- portata
- sdk
- senza soluzione di continuità
- Secondo
- Seconda generazione
- Sezione
- problemi di
- vedere
- invio
- anziano
- Sequenza
- servire
- servizio
- Servizi
- servizio
- set
- regolazione
- flessibile.
- alcuni
- Corti
- vetrina
- ha mostrato
- mostrato
- Spettacoli
- da
- singolo
- Taglia
- piccole
- frammento
- So
- Software
- lo sviluppo del software
- kit di sviluppo software
- soluzione
- Soluzioni
- a volte
- Fonte
- fonti
- specialista
- specifico
- specificato
- Standard
- iniziato
- statistiche
- soggiorno
- step
- Passi
- memorizzati
- studio
- Con successo
- tale
- supporto
- supportato
- supporti
- task
- Insegnamento
- per l'esame
- tecniche
- tensorflow
- testato
- testo
- che
- I
- loro
- Li
- poi
- Strumenti Bowman per analizzare le seguenti finiture:
- questo
- Attraverso
- Tim
- tempo
- a
- token
- Tokens
- pure
- top
- argomento
- torcia
- traffico
- Treni
- allenato
- Training
- trasformatore
- Trilione
- vero
- prova
- sintonizzato
- sintonia
- seconda
- Digitare
- Aggiornamenti
- caricato
- URL
- uso
- utilizzato
- Utente
- Esperienza da Utente
- utilizzando
- generalmente
- CONVALIDARE
- convalidato
- versione
- via
- virtuale
- camminare
- walkthrough
- volere
- Prima
- we
- sito web
- servizi web
- peso
- WELL
- Che
- Che cosa è l'
- quale
- while
- volere
- con
- entro
- senza
- Lavora
- lavoratore
- flussi di lavoro
- scrivere
- scrittura
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro