LoRA e QLoRA per un tuning conveniente
Addestri solo adapter a basso rango su una base quantizzata: un fine-tuning 70B può essere eseguito su una singola GPU
LoRA e QLoRA per un tuning conveniente è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Perché PEFT?
Il fine-tuning completo di Llama 70B richiede più di 8 H100 e aggiorna 70 miliardi di parametri. PEFT (Parameter-Efficient Fine-Tuning) aggiorna < 1% dei parametri con una qualità simile. Il risparmio sui costi è enorme.
LoRA: adattamento a basso rango
LoRA (Hu et al. 2021) addestra piccole matrici "adapter" insieme ai pesi di base congelati:
- Aggiunge matrici A x B, dove A è dxr e B è rxd; r è piccolo (8, 16, 64)
- Passaggio forward: y = Wx + (BA)x
- Vengono addestrate solo A e B: il numero di parametri è inferiore di diversi ordini di grandezza
QLoRA: LoRA quantizzato
QLoRA (Dettmers et al. 2023) riduce ulteriormente i costi quantizzando il modello di base a 4 bit durante l'addestramento:
- Modello di base in NF4 (4 bit)
- Adapter LoRA a maggiore precisione
- Consente di eseguire il fine-tuning di un modello 70B su un singolo A100/H100
Setup with peft + transformers
# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True, # QLoRA
device_map='auto'
)
lora_config = LoraConfig(
r=16, # rank
lora_alpha=32,
target_modules=['q_proj', 'v_proj'],
lora_dropout=0.05,
bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of totalTraining Loop with TRL
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
tokenizer=tokenizer,
args=TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
num_train_epochs=3,
output_dir='./lora-out'
)
)
trainer.train()
model.save_pretrained('./adapter')Utilizzo di Unsloth
Unsloth è la libreria LoRA più veloce: è 2 volte più rapida di peft senza ottimizzazioni. API drop-in:
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name='meta-llama/Llama-3.1-8B-Instruct',
load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)Stima dei costi
QLoRA su Llama 3.1 8B con 10k esempi:
- ~4 ore su un singolo H100
- ~5-10 $ di costo per le GPU cloud
- File dell'adapter: 100-300 MB
Scelta del rango r
- r = 8 — minimo, per modifiche di formato/stile
- r = 16-32 — per la maggior parte dei casi
- r = 64+ — per nuovi comportamenti sostanziali e maggiore capacità
Moduli target
Per impostazione predefinita, scelga le proiezioni dell'attenzione (q, v). Per una maggiore capacità, includa tutti i layer lineari: otterrà una qualità migliore, ma anche più parametri.
Iperparametri importanti
- Learning rate — da 1e-4 a 5e-4 è un intervallo tipico
- Epoch — da 2 a 5 per SFT
- Dimensione del batch — dipende dalla VRAM; utilizzi l'accumulo del gradiente per simulare un batch più grande
Unione dell'adapter nel modello di base
Per l'inferenza, può unire nuovamente LoRA ai pesi di base:
merged = model.merge_and_unload()
merged.save_pretrained('./full-model')Utilizzo di più LoRA
vLLM supporta la sostituzione a caldo degli adapter LoRA durante l'inferenza. È utile per eseguire fine-tuning specifici per cliente utilizzando un modello di base condiviso:
llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))Valutazione dell'adapter
Esegua sempre il PROPRIO set di valutazione sul modello sottoposto a fine-tuning. A volte il fine-tuning peggiora i risultati nei casi limite: consideri con onestà le regressioni.
Vantaggio di LoRA
Qual è il principale vantaggio pratico di LoRA rispetto al fine-tuning completo?
Riepilogo
LoRA + QLoRA = fine-tuning efficiente in termini di costi. Utilizzi Unsloth per la velocità e peft/TRL per la flessibilità. Scelga un rango 16-32 nella maggior parte dei casi. Valuti il risultato rispetto al proprio set di riferimento.
Domande Frequenti
La lezione «LoRA e QLoRA per un tuning conveniente» è gratuita?
Sì — il testo completo di «LoRA e QLoRA per un tuning conveniente» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «LoRA e QLoRA per un tuning conveniente»?
Addestri solo adapter a basso rango su una base quantizzata: un fine-tuning 70B può essere eseguito su una singola GPU Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «LoRA e QLoRA per un tuning conveniente»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Quando il fine-tuning è migliore del prompting
- Raccolta dei dati: traiettorie e riproduzione dei trace
- LoRA e QLoRA per un tuning conveniente
- Valutare i modelli ottimizzati rispetto al modello base