Chuyển đến nội dung chính

レッスン 10: LoRA と QLoRA — オープンソース モデルの微調整

LoRA 理論: 低ランク行列分解。 QLoRA: 量子化 + LoRA。 Hugging Face PEFT を使用して LLaMA 3 を実際に微調整します。 Google Colab は無料です。

🧠 AI と ML — レッスン 9 レッスン 10: LoRA と QLoRA — 微調整 オープンソースモデル

LLM の微調整: AI チューニングの技術

パート 4: OpenAI およびその他のプラットフォームでの微調整

xdev.asia

はじめに

LoRA と QLoRA は 最も経済的な 微調整テクニックです。0.1 ~ 1% のパラメーターのみを更新し、無料の GPU (Colab T4) で実行されます。


1. LoRA — 直感

Thay vì update TOÀN BỘ weight matrix W (d × d):
  W_new = W + ΔW

LoRA decompose ΔW thành 2 matrices nhỏ:
  ΔW = A × B  (A: d × r, B: r × d, với r << d)

Ví dụ:
  W: 4096 × 4096 = 16.7M params → cập nhật TẤT CẢ
  LoRA (r=16): 4096×16 + 16×4096 = 131K params → cập nhật 0.8%

2. QLoRA — 量子化 + LoRA

QLoRA = 4-bit quantization base model + LoRA adapters
→ Giảm VRAM từ 32GB → 6GB
→ Chạy được trên Google Colab T4 (16GB)!

3. Unsloth の実践

from unsloth import FastLanguageModel

# Load model với 4-bit quantization
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Meta-Llama-3.1-8B-Instruct",
    max_seq_length=2048,
    load_in_4bit=True,
)

# Add LoRA adapters
model = FastLanguageModel.get_peft_model(
    model, r=16, lora_alpha=16,
    target_modules=["q_proj","k_proj","v_proj","o_proj"],
    lora_dropout=0,
)

# Train
from trl import SFTTrainer
trainer = SFTTrainer(
    model=model,
    dataset=dataset,
    max_seq_length=2048,
    args=TrainingArguments(
        per_device_train_batch_size=2,
        num_train_epochs=3,
        learning_rate=2e-4,
        output_dir="outputs",
    ),
)
trainer.train()

概要

  • LoRA: ~1% パラメータのみを更新 → GPU と時間を節約
  • QLoRA: 量子化を追加 → コンシューマ GPU で実行
  • Unsloth: 標準の LoRA トレーニングよりも 2 倍高速
  • コスト: Colab では 0 ドル、クラウド GPU では 1 ~ 1 ~ 3 ドル/時間

演習

  1. Google Colab (QLoRA) で LLaMA 3 8B を微調整する
  2. 出力比較: LoRA FT vs API FT (Gemini/OpenAI)
  3. ランク r=8 対 r=16 対 r=32 を試してください — 品質を比較します
  4. LoRA アダプターをマージし、完全なモデルをエクスポートします。