Vai al contenuto principale

Come eseguire Alpaca-LoRA sul tuo dispositivo

Scopri come eseguire Alpaca-LoRA sul tuo dispositivo con questa guida completa. Scopri come questo modello open-source sfrutta la tecnologia LoRA per offrire una soluzione di chatbot IA potente ma efficiente.
· 7 min leggi

Scopri con l'IA

Man mano che l’IA generativa continua a prendere piede, gli sviluppatori in tutto il mondo colgono l’occasione per creare applicazioni entusiasmanti usando il linguaggio naturale. Uno strumento in particolare ha attirato molta attenzione di recente: ChatGPT.

ChatGPT è un modello linguistico sviluppato da OpenAI. Il suo scopo è quello di fungere da chatbot alimentato dall’IA, capace di sostenere dialoghi simili a quelli umani. Anche se è uno strumento molto utile, non è privo di problemi. ChatGPT non è open-source, il che significa che il codice sorgente non è accessibile e non può essere modificato. È anche estremamente avido di risorse, il che rende poco praticabile creare una tua implementazione.

Questi problemi hanno dato vita a una serie di alternative a ChatGPT, come Alpaca-LoRA, capaci di funzionare in modo simile a ChatGPT ma con licenza open-source e minori requisiti di risorse.

In questo tutorial ci concentreremo specificamente su Alpaca-LoRA. Vedremo cos’è, i prerequisiti per eseguirlo sul tuo dispositivo e i passaggi per metterlo in funzione.

Che cos’è Alpaca LoRA?

All’inizio di marzo 2023, Eric J. Wang ha rilasciato il progetto Alpaca-LoRA. È un progetto che contiene il codice per riprodurre i risultati di Standford Alpaca utilizzando la Parameter-Efficient Fine-Tuning (PEFT); si tratta di una libreria che consente agli sviluppatori di effettuare il fine-tuning di modelli basati su transformer utilizzando LoRA.

Capire LoRA

Low-Rank Adaptation dei Large Language Model (LoRA) è un metodo utilizzato per accelerare il processo di training di modelli di grandi dimensioni consumando meno memoria.

Ecco come funziona:

  • Congelare i pesi esistenti. Immagina il modello come una rete complessa di nodi interconnessi (questi sono i "pesi"). Normalmente li regoleresti tutti durante l’addestramento per migliorare il modello. LoRA dice: "Non tocchiamoli; lasciamoli così come sono".
  • Aggiungere nuovi pesi. LoRA aggiunge poi alcune nuove connessioni, più semplici (nuovi pesi), a questa rete.
  • Addestrare solo i nuovi pesi. Invece di regolare l’intera rete complessa, ti concentri solo sul migliorare queste nuove connessioni più semplici.

In questo modo risparmi tempo e memoria del computer, migliorando comunque le capacità del modello nei suoi compiti.

Vantaggi di LoRA

I vantaggi di LoRA includono:

  • Portabilità - Le matrici di pesi con decomposizione a rango hanno molti meno parametri addestrabili rispetto al modello originale; di conseguenza, i pesi LoRA addestrati sono facilmente portabili e possono essere eseguiti su Rasberry Pi.
  • Accessibilità – Rispetto al fine-tuning convenzionale, LoRA ha dimostrato di ridurre significativamente l’uso della memoria GPU; questo rende possibile effettuare il fine-tuning su GPU consumer come Tesla T4, RTX 3080 o anche RTX 2080 Ti.

Alpaca: il modello open-source

Alpaca, invece, è un modello linguistico open-source, istruito tramite instruction tuning, basato su Large Language Model Meta AI (LLaMA). È stato sviluppato da un team di ricercatori della Stanford University con l’obiettivo di rendere i large language model (LLM) più accessibili.

Ed eccoci ad Alpaca-LoRA.

Il modello Alpaca-LoRA è una versione meno esosa di risorse del modello Stanford Alpaca che sfrutta LoRA per velocizzare il processo di training consumando meno memoria.

Prerequisiti per Alpaca-LoRA

Per eseguire localmente il modello Alpaca-LoRA, devi disporre di una GPU. Può essere una GPU di fascia bassa come NVIDIA T4 o una GPU consumer come la 4090. Secondo Eric J. Wang, il creatore del progetto, il modello "gira in poche ore su una singola RTX 4090".

Nota: le istruzioni in questo articolo seguono quelle fornite nel repository Alpaca-LoRA di Eric J. Wang.

Come eseguire Alpaca-LoRA in 4 passaggi

Passaggio 1: crea l’ambiente virtuale (opzionale)

Gli ambienti virtuali sono contenitori isolati utilizzati per archiviare le dipendenze legate a Python necessarie a un progetto specifico. Questo aiuta a mantenere separate le dipendenze richieste da progetti diversi, rendendo più semplice condividere i progetti e ridurre i conflitti tra dipendenze.

Non è obbligatorio usarne uno per eseguire il modello Alpaca-LoRA, ma è consigliato.

Per creare un ambiente virtuale usando il prompt dei comandi su Windows, esegui quanto segue:

py -m venv venv

Questo creerà un ambiente virtuale chiamato venv nella tua directory di lavoro corrente.

Nota: puoi usare qualsiasi nome preferisci per il tuo ambiente virtuale sostituendo il secondo venv con il nome desiderato.

Prima di installare qualsiasi dipendenza, devi attivare l’ambiente virtuale. Esegui il seguente comando per attivarlo:

venv\Scripts\activate.bat

Quando non utilizzi più l’ambiente virtuale, esegui il seguente comando per disattivarlo:

deactivate

Ora sei pronto per metterti al lavoro con Alpaca-LoRA.

Passaggio 2: configurazione

Il primo passo per eseguire il modello Alpaca-LoRA è clonare il repository da GitHub e installare le dipendenze necessarie all’esecuzione.

Usa il seguente comando per installare il repository GitHub:

git clone https://github.com/tloen/alpaca-lora.git

Quindi spostati nella repository alpaca-lora che hai appena installato usando:

cd alpaca-lora

E esegui il seguente comando per installare le dipendenze:

pip install -r requirements.txt

Passaggio 3: fine-tuning del modello (opzionale)

La repository alpaca-lora contiene un file chiamato finetune.py. finetune.py include, tra le altre cose, una semplice applicazione della Parameter-Efficient Fine-Tuning (PEFT) applicata al modello LLaMA.

È il file che devi eseguire se vuoi modificare gli iperparametri del modello, ma non è obbligatorio. Secondo l’autore della repository, “Senza tuning degli iperparametri, il modello LoRA produce output paragonabili al modello Stanford Alpaca. Un ulteriore tuning potrebbe consentire prestazioni migliori [...].”

Ecco un esempio di utilizzo del file finetune.py:

python -m finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'yahma/alpaca-cleaned' \
    --output_dir './lora-alpaca' \
    --batch_size 128 \
    --micro_batch_size 4 \
    --num_epochs 3 \
    --learning_rate 1e-4 \
    --cutoff_len 512 \
    --val_set_size 2000 \
    --lora_r 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --lora_target_modules '[q_proj,v_proj]' \
    --train_on_inputs \
    --group_by_length

Passaggio 4: esecuzione del modello / inferenza

Nella repository alpaca-lora c’è anche un file chiamato generate.py. L’esecuzione di generate.py farà quanto segue:

  • Leggere il modello di base dall’hub dei modelli di Hugging Face
  • Leggere i pesi del modello da tloen/alpaca-lora-7b
  • Avviare un’interfaccia Gradio in cui viene eseguita l’inferenza su un input specificato.

Al momento della stesura, l’adapter Alpaca-LoRA più recente utilizzato per addestrare il modello è alpaca-lora-7b. Questo è stato eseguito il 26 marzo 2023 con il seguente comando:

python finetune.py \
    --base_model='decapoda-research/llama-7b-hf' \
    --num_epochs=10 \
    --cutoff_len=512 \
    --group_by_length \
    --output_dir='./lora-alpaca' \
    --lora_target_modules='[q_proj,k_proj,v_proj,o_proj]' \
    --lora_r=16 \
    --micro_batch_size=8

Se vuoi usare un adapter diverso, puoi farlo eseguendo il file generate.py con un collegamento alla destinazione del tuo adapter preferito.

python generate.py \
    --load_8bit \
    --base_model 'decapoda-research/llama-7b-hf' \
    --lora_weights 'tloen/alpaca-lora-7b'

Conclusioni

Alpaca-LoRA è una versione meno esosa di risorse del modello Stanford Alpaca. Raggiunge questo obiettivo sfruttando la low-rank adaptation dei large language model (LoRA), che velocizza il processo di training consumando molta meno memoria rispetto al modello Alpaca originale.

Approfondisci i large language model (LLM) e l’IA generativa con i seguenti tutorial:

Kurtis Pykes

Autore

Kurtis Pykes

Argomenti

Correlato