0Pricing
AI Agents · Lezione

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 total

Training 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

  1. Quando il fine-tuning è migliore del prompting
  2. Raccolta dei dati: traiettorie e riproduzione dei trace
  3. LoRA e QLoRA per un tuning conveniente
  4. Valutare i modelli ottimizzati rispetto al modello base
← Torna a AI Agents