Effektiv finjustering med LoRA

Finjustering med Llama 3

Francesca Donadoni

Curriculum Manager, DataCamp

Vad händer när vi tränar en modell?

 

  • Tokens är indata som bildar en vektor
  • Matris(modell)multiplikation
  • Ger utdatavektorer
  • Fel används för att uppdatera modellvikter
  • Modellstorleken avgör träningssvårigheten

Indata- och modellmatriser visualiserade

Finjustering med Llama 3

Vad är LoRA?

 

  • Lågrangsdekomposition
  • Minskar antal träningsparametrar
  • Bevarar prestandan
  • Regulariseringseffekt

En blå matris delas upp i två dekomponerade matriser som, multiplicerade med varandra, kan återskapa originalmatrisen.

Finjustering med Llama 3

Implementera LoRA med PEFT

from peft import LoraConfig

lora_config = LoraConfig(
r=12,
lora_alpha=32,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM", target_modules=['q_proj', 'v_proj']
)
Finjustering med Llama 3

Integrera LoRA-konfiguration i träningen

trainer = SFTTrainer(
    model=model,

train_dataset=ds,
max_seq_length=250, dataset_text_field='conversation',
tokenizer=tokenizer, args=training_arguments
peft_config=lora_config,
)
trainer.train()
Finjustering med Llama 3

LoRA jämfört med vanlig finjustering

 

  • TinyLlama/TinyLlama-1.1B-Chat-v1.0
  • 1,1 miljarder parametrar
  • 11 000 sampel
  • ~30 minuter

 

  • nvidia/Llama3-ChatQA-1.5-8B
  • 8 miljarder parametrar
  • 11 000 sampel
  • ~30 minuter
Finjustering med Llama 3

Nu kör vi en övning!

Finjustering med Llama 3

Preparing Video For Download...