Fine-tuning อย่างมีประสิทธิภาพด้วย LoRA

Fine-Tuning กับ Llama 3

Francesca Donadoni

Curriculum Manager, DataCamp

เกิดอะไรขึ้นเมื่อเราเทรนโมเดล?

 

  • Token คือข้อมูลนำเข้าที่สร้างเป็นเวกเตอร์
  • การคูณเมทริกซ์ (โมเดล)
  • ได้ผลลัพธ์เป็นเวกเตอร์เอาต์พุต
  • ใช้ค่าความผิดพลาดอัปเดต weight ของโมเดล
  • ขนาดโมเดลส่งผลต่อความยากในการเทรน

เมทริกซ์อินพุตและเมทริกซ์โมเดลแสดงในรูปแบบภาพ

Fine-Tuning กับ Llama 3

LoRA คืออะไร

 

  • Low-rank Decomposition
  • ลดจำนวน parameter ที่ต้องเทรน
  • รักษาประสิทธิภาพของโมเดล
  • ช่วย Regularization

เมทริกซ์สีน้ำเงินถูกแยกออกเป็นสองเมทริกซ์ย่อย ซึ่งเมื่อนำมาคูณกันจะได้เมทริกซ์เดิม

Fine-Tuning กับ Llama 3

วิธี implement LoRA ด้วย 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']
)
Fine-Tuning กับ Llama 3

การนำ LoRA configuration ไปใช้ในการเทรน

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()
Fine-Tuning กับ Llama 3

LoRA เทียบกับ fine-tuning แบบปกติ

 

  • TinyLlama/TinyLlama-1.1B-Chat-v1.0
  • 1.1 พันล้าน parameter
  • 11,000 ตัวอย่าง
  • ~30 นาที

 

  • nvidia/Llama3-ChatQA-1.5-8B
  • 8 พันล้าน parameter
  • 11,000 ตัวอย่าง
  • ~30 นาที
Fine-Tuning กับ Llama 3

มาฝึกกันเถอะ!

Fine-Tuning กับ Llama 3

Preparing Video For Download...