LoRA で効率的にファインチューニング

Llama 3 のファインチューニング

Francesca Donadoni

Curriculum Manager, DataCamp

モデル学習で何が起きるか

 

  • トークンは入力データでベクトル化
  • 行列(モデル)積
  • 出力ベクトルを生成
  • 誤差で重みを更新
  • モデル規模が学習難度を左右

入力行列とモデル行列の可視化

Llama 3 のファインチューニング

LoRA とは

 

  • 低ランク分解
  • 学習パラメータを削減
  • 性能を維持
  • 正則化効果

青い行列を2つの分解行列に分け、それらの積で元の行列を再構成する図

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億パラメータ
  • 1.1万サンプル
  • 約30分

 

  • nvidia/Llama3-ChatQA-1.5-8B
  • 80億パラメータ
  • 1.1万サンプル
  • 約30分
Llama 3 のファインチューニング

Let's practice!

Llama 3 のファインチューニング

Preparing Video For Download...