Oggi, i modelli di intelligenza artificiale generativa coprono una varietà di attività, dal riepilogo del testo, alle domande e risposte e alla generazione di immagini e video. Per migliorare la qualità dell'output, vengono utilizzati approcci come n-short learning, Prompt engineering, Retrieval Augmented Generation (RAG) e fine tuning. La messa a punto ti consente di adattare questi modelli di intelligenza artificiale generativa per ottenere prestazioni migliori nelle attività specifiche del tuo dominio.
Con Amazon SageMaker, ora puoi eseguire un processo di formazione SageMaker semplicemente annotando il tuo codice Python con @remote decorator. IL SDK Python di SageMaker traduce automaticamente l'ambiente di lavoro esistente e qualsiasi codice di elaborazione dati e set di dati associati in un lavoro di formazione SageMaker eseguito sulla piattaforma di formazione. Ciò ha il vantaggio di scrivere il codice in un modo più naturale e orientato agli oggetti e utilizza comunque le funzionalità di SageMaker per eseguire processi di formazione su un cluster remoto con modifiche minime.
In questo post, mostriamo come ottimizzare a Falcon-7B Foundation Models (FM) utilizzando il decoratore @remote di SageMaker Python SDK. Utilizza anche Messa a punto efficiente dei parametri di Hugging Face (PEFT) libreria e tecniche di quantizzazione attraverso bitsandbytes per supportare la messa a punto. Il codice presentato in questo blog può essere utilizzato anche per mettere a punto altri FM, come Lama-2 13b.
Le rappresentazioni completamente precise di questo modello potrebbero avere difficoltà ad adattarsi alla memoria su uno o anche più Unità di elaborazione grafica (GPU) - o potrebbe anche aver bisogno di un'istanza più grande. Pertanto, per mettere a punto questo modello senza aumentare i costi, utilizziamo la tecnica nota come LLM quantizzati con adattatori di basso rango (QLoRA). QLoRA è un approccio efficiente di perfezionamento che riduce l'utilizzo della memoria degli LLM mantenendo prestazioni molto buone.
Vantaggi dell'utilizzo di @remote decorator
Prima di andare oltre, capiamo come il decoratore remoto migliora la produttività degli sviluppatori mentre lavora con SageMaker:
- @remote decorator attiva un processo di formazione direttamente utilizzando il codice Python nativo, senza l'invocazione esplicita di SageMaker Estimators e dei canali di input SageMaker
- Barriera bassa per l'ingresso per i modelli di formazione degli sviluppatori su SageMaker.
- Non è necessario cambiare Ambienti di sviluppo integrati (IDE). Continua a scrivere il codice nell'IDE che preferisci e richiama i processi di formazione di SageMaker.
- Non è necessario conoscere i contenitori. Continua a fornire le dipendenze in a
requisiti.txt
e fornirlo al decoratore remoto.
Prerequisiti
È necessario un account AWS con un ruolo AWS Identity and Access Management (AWS IAM) che disponga delle autorizzazioni per gestire le risorse create come parte della soluzione. Per i dettagli, fai riferimento a Creazione di un account AWS.
In questo post utilizziamo Amazon SageMaker Studio con il file Scienza dei dati 3.0
immagine e a ml.t3.medio
istanza di avvio veloce. Tuttavia, puoi utilizzare qualsiasi ambiente di sviluppo integrato (IDE) di tua scelta. Devi solo configurare correttamente le credenziali dell'AWS Command Line Interface (AWS CLI). Per ulteriori informazioni, fai riferimento a Configurare AWS CLI.
Per la messa a punto, il Falcon-7B, an ml.g5,12xgrande
l'istanza è utilizzata in questo post. Assicurati che la capacità dell'account AWS sia sufficiente per questa istanza.
Devi clonare questo Deposito Github per aver replicato la soluzione mostrata in questo post.
Panoramica della soluzione
- Installa i prerequisiti per mettere a punto il modello Falcon-7B
- Configura le configurazioni del decoratore remoto
- Preelaborare il set di dati contenente le domande frequenti sui servizi AWS
- Ottimizza Falcon-7B sulle domande frequenti sui servizi AWS
- Testa i modelli di ottimizzazione su domande di esempio relative ai servizi AWS
1. Installare i prerequisiti per mettere a punto il modello Falcon-7B
Avvia il taccuino falcon-7b-qlora-remote-decorator_qa.ipynb in SageMaker Studio selezionando l'opzione Imago COME Scienza dei dati
E Nocciolo COME Pitone 3
. Installa tutte le librerie richieste menzionate nel file requisiti.txt
. Alcune librerie devono essere installate sull'istanza del notebook stessa. Esegui altre operazioni necessarie per l'elaborazione del set di dati e l'attivazione di un processo di formazione SageMaker.
2. Configurare le configurazioni del decoratore remoto
Crea un file di configurazione in cui sono specificate tutte le configurazioni relative al processo di formazione di Amazon SageMaker. Questo file viene letto da @remote decorator durante l'esecuzione del processo di training. Questo file contiene impostazioni come dipendenze, immagine di training, istanza e ruolo di esecuzione da utilizzare per il processo di training. Per un riferimento dettagliato di tutte le impostazioni supportate dal file di configurazione, consulta Configurazione e utilizzo delle impostazioni predefinite con SageMaker Python SDK.
Non è obbligatorio utilizzare il config.yaml
file per poter lavorare con il decoratore @remote. Questo è semplicemente un modo più semplice per fornire tutte le configurazioni al decoratore @remote. Ciò mantiene i parametri relativi a SageMaker e AWS fuori dal codice con un unico sforzo per impostare il file di configurazione utilizzato da tutti i membri del team. Tutte le configurazioni potrebbero anche essere fornite direttamente negli argomenti del decoratore, ma ciò riduce la leggibilità e la manutenibilità delle modifiche a lungo termine. Inoltre, il file di configurazione può essere creato da un amministratore e condiviso con tutti gli utenti in un ambiente.
Preelaborare il set di dati contenente le domande frequenti sui servizi AWS
Il passaggio successivo consiste nel caricare e preelaborare il set di dati per renderlo pronto per il processo di training. Innanzitutto, diamo un'occhiata al set di dati:
Mostra le domande frequenti per uno dei servizi AWS. Oltre a QLoRA, bitsanbytes
viene utilizzato per convertire in precisione a 4 bit per quantizzare LLM congelato in 4 bit e allegarlo LoRA adattatori su di esso.
Crea un modello di prompt per convertire ogni esempio di domande frequenti in un formato di prompt:
Il passaggio successivo consiste nel convertire gli input (testo) in ID token. Questo viene fatto da a Tokenizer di Transformers con il volto abbracciato.
Ora usa semplicemente il file modello_prompt
funzione per convertire tutte le domande frequenti nel formato prompt e impostare il training e il test dei set di dati.
4. Ottimizzare Falcon-7B sulle domande frequenti sui servizi AWS
Ora puoi preparare lo script di allenamento e definire la funzione di allenamento treno_fn
e inserisci @remote decorator nella funzione.
La funzione di formazione effettua le seguenti operazioni:
- tokenizza e suddivide in blocchi il set di dati
- impostare
BitsAndBytesConfig
, che specifica che il modello deve essere caricato a 4 bit ma mentre il calcolo deve essere convertito inbfloat16
. - Carica il modello
- Trova i moduli di destinazione e aggiorna le matrici necessarie utilizzando il metodo di utilità
trova_tutti_nomi_lineari
- Creare LoRA configurazioni che specificano la classificazione delle matrici di aggiornamento (
S
), fattore di scala (lora_alpha
), i moduli per applicare le matrici di aggiornamento LoRA (target_modules
), probabilità di abbandono per gli strati Lora(lora_dropout
),tipo_attività
, eccetera. - Avviare la formazione e la valutazione
E invocare il treno_fn()
Il processo di ottimizzazione verrà eseguito sul cluster di formazione Amazon SageMaker. Attendi il completamento del lavoro di ottimizzazione.
5. Testare i modelli di messa a punto su domande di esempio relative ai servizi AWS
Ora è il momento di eseguire alcuni test sul modello. Per prima cosa carichiamo il modello:
Ora carica una domanda di esempio dal set di dati di addestramento per vedere la risposta originale, quindi poni la stessa domanda dal modello ottimizzato per vedere la risposta a confronto.
Ecco un esempio di domanda dal set di formazione e la risposta originale:
Ora, la stessa domanda viene posta per mettere a punto il modello Falcon-7B:
Ciò conclude l'implementazione della messa a punto di Falcon-7B sul set di dati delle domande frequenti sui servizi AWS utilizzando il decoratore @remote dell'SDK Python di Amazon SageMaker.
Pulire
Completa i seguenti passaggi per ripulire le tue risorse:
- Arresta le istanze di Amazon SageMaker Studio per evitare di incorrere in costi aggiuntivi.
- Pulisci la directory Amazon Elastic File System (Amazon EFS) cancellando la directory della cache di Hugging Face:
Conclusione
In questo post, ti abbiamo mostrato come utilizzare in modo efficace le capacità del decoratore @remote per mettere a punto il modello Falcon-7B utilizzando QLoRA, Hugging Face PEFT con bitsandbtyes
senza applicare modifiche significative nel notebook di formazione e ha utilizzato le funzionalità di Amazon SageMaker per eseguire processi di formazione su un cluster remoto.
Tutto il codice mostrato come parte di questo post per mettere a punto Falcon-7B è disponibile nel file Repositorio GitHub. Il repository contiene anche un taccuino che mostra come mettere a punto Llama-13B.
Come passaggio successivo, ti invitiamo a verificare la funzionalità @remote decorator e API dell'SDK Python e utilizzalo nell'ambiente e nell'IDE che preferisci. Ulteriori esempi sono disponibili in amazon-sagemaker-esempi repository per iniziare rapidamente. Puoi anche consultare i seguenti post:
Riguardo agli Autori
Bruno Pistone è un AI/ML Specialist Solutions Architect per AWS con sede a Milano. Lavora con grandi clienti aiutandoli a comprendere a fondo le loro esigenze tecniche e a progettare soluzioni di intelligenza artificiale e machine learning che sfruttano al meglio il cloud AWS e lo stack Amazon Machine Learning. Le sue competenze includono: machine learning end-to-end, industrializzazione del machine learning e intelligenza artificiale generativa. Gli piace passare il tempo con i suoi amici ed esplorare nuovi posti, oltre a viaggiare verso nuove destinazioni.
Vikesh Pandey è un Machine Learning Specialist Solutions Architect presso AWS, aiuta i clienti dei settori finanziari a progettare e realizzare soluzioni su AI generativa e ML. Al di fuori del lavoro, a Vikesh piace provare diverse cucine e praticare sport all'aria aperta.
lascia un commento