用 LoRA 高效微調

使用 Llama 3 進行微調

Francesca Donadoni

Curriculum Manager, DataCamp

訓練模型時會發生什麼事?

 

  • Token 作為輸入資料形成向量
  • 矩陣(模型)相乘
  • 產生輸出向量
  • 以誤差更新模型權重
  • 模型大小決定訓練難度

以視覺化呈現輸入與模型矩陣

使用 Llama 3 進行微調

什麼是 LoRA

 

  • 低秩分解
  • 減少訓練參數
  • 維持效能
  • 帶來正規化效果

一個藍色矩陣被分解為兩個矩陣,相乘後可重建原矩陣。

使用 Llama 3 進行微調

用 PEFT 實作 LoRA 的方式

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']
)
使用 Llama 3 進行微調

在訓練中整合 LoRA 設定

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()
使用 Llama 3 進行微調

LoRA 與一般微調比較

 

  • TinyLlama/TinyLlama-1.1B-Chat-v1.0
  • 11 億參數
  • 11k 答案樣本
  • 約 30 分鐘

 

  • nvidia/Llama3-ChatQA-1.5-8B
  • 80 億參數
  • 11k 答案樣本
  • 約 30 分鐘
使用 Llama 3 進行微調

一起來練習吧!

使用 Llama 3 進行微調

Preparing Video For Download...