Biblioteca PEFT & LoraConfig (Antrenare LoRA / QLoRA) în Hugging Face Hub & Transformers

Permite ajustarea fină a modelelor gigantice prin înghețarea greutăților originale și antrenarea unor matrici adaptoare mici (sub 1% din parametri).

Sintaxă & invocare Python
from peft import LoraConfig, get_peft_model

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj'],
    lora_dropout=0.05,
    task_type='CAUSAL_LM'
)
peft_model = get_peft_model(model, lora_config)
peft_model.print_trainable_parameters()

Descriere & Utilizare

Antrenarea completă (Full Fine-Tuning) a unui model de 8 miliarde de parametri necesită peste 100 GB de memorie VRAM (pentru greutăți, gradienți și stările optimizatorului Adam). Biblioteca PEFT (Parameter-Efficient Fine-Tuning) face posibilă antrenarea pe un singur GPU obișnuit prin metoda LoRA (Low-Rank Adaptation).

Când combini un model încărcat pe 4 biți (prin BitsAndBytesConfig) cu LoraConfig, obții tehnica revoluționară QLoRA.

Parametrii esențiali sunt: r (rangul matricilor, de regulă 8, 16 sau 32), lora_alpha (factorul de scalare, de regulă dublul lui r) și target_modules (straturile liniare de atenție și MLP cărora li se atașează adaptoarele — sau simplu target_modules='all-linear').

Cum să o reții ușor

💡 În loc să retipărești de la zero o enciclopedie de 10.000 de pagini pentru a actualiza un capitol, lipești bilețele transparente Post-it (`LoRA adapters`) peste paginile existente: cântăresc câteva grame și pot fi detașate sau schimbate instant.

Opțiuni și parametri tehnici

  • Îngheață toți parametrii modelului de bază (requires_grad = False).
  • Inserează în paralel cu straturile vizate două matrici mici $A$ și $B$ cu dimensiunea intermediară $r \ll d$.
  • La salvare, scrie pe disc doar adaptorul LoRA (de regulă un fișier adapter_model.safetensors de doar 40 – 150 MB!).

Exemple practice și cazuri de utilizare

  • Aplicare rapidă pe toate straturile liniare: LoraConfig(r=16, lora_alpha=32, target_modules='all-linear', task_type='CAUSAL_LM')
  • Îmbinare definitivă a adaptorului în modelul de bază după antrenare: merged_model = peft_model.merge_and_unload()

Sfaturi de configurare & capcane

Setează target_modules='all-linear' în versiunile moderne de PEFT: studiile QLoRA au demonstrat că aplicarea LoRA pe toate straturile liniare (nu doar pe q_proj și v_proj) egalează performanța antrenării complete!

Comenzi și ghiduri înrudite