AI・機械学習
上級

QLoRA ファインチューニング(キューローラファインチューニング)

4bitNF4量子化したベースモデルにLoRAアダプタを学習させ、コンシューマGPU単体で65B級モデルのファインチューニングを実現する手法。

0 回閲覧
0 いいね
2026/6/4 更新
関連タグ
QLoRA
4bit量子化
NF4
ファインチューニング
PEFT

QLoRA ファインチューニングとは

QLoRA(Quantized Low-Rank Adaptation)は、2023年5月にワシントン大学のDettmers et al.が発表した論文「QLoRA: Efficient Finetuning of Quantized LLMs」で提案された手法。LoRAの低ランク適応に4bit量子化を組み合わせることで、従来はA100 80GB×8枚が必要だった65Bモデルのファインチューニングを、コンシューマ向けGPU(RTX 4090相当)1枚で実現した。

コア技術

1. NF4(NormalFloat4)量子化

ベースモデルの重みを4bitの特殊な浮動小数点形式に量子化:

  • 通常の4bit整数(INT4)と異なり、正規分布に最適化された非線形な分位数量子化
  • 事前学習済みLLMの重みが標準正規分布に従う性質を活用
  • FP4より情報損失が少なく、BF16の95%以上の精度を保持

2. Double Quantization(DQ)

量子化の定数(スケーリングファクター)自体をさらに量子化する技術:

通常: 重み(4bit) + 定数(16bit/64パラメータ)
DQ:  重み(4bit) + 定数(8bit/64パラメータ) + 二次定数(32bit/256パラメータ)

これによりパラメータあたり約0.37bitの追加削減を達成。

3. Paged Optimizer

GPUメモリが不足した際に、オプティマイザの状態(Adam momentumなど)をCPU RAMにページングする仕組み。OOMエラーを防ぎ、長いシーケンスやバッチ増大時も安定学習。

LoRAとの組み合わせ

from transformers import BitsAndBytesConfig
from peft import prepare_model_for_kbit_training, LoraConfig

# 4bit量子化設定
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
    bnb_4bit_compute_dtype=torch.bfloat16
)

# 量子化モデル読み込み
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto"
)

# QLoRA準備
model = prepare_model_for_kbit_training(model)
lora_config = LoraConfig(r=64, lora_alpha=16, ...)
model = get_peft_model(model, lora_config)

性能比較

手法65Bモデル必要VRAM性能(MMLU)
フルFT (BF16)~780GB基準
LoRA (BF16)~130GB基準比-1%
QLoRA (NF4)~48GB基準比-1〜2%

Guanacoの成果

論文中のベンチマークモデルGuanaco(65B)は、QLoRAで24時間学習(A100×1枚)。Vicuna-13BやChatGPTと同等の性能をVigilを示し、コストとの対比で衝撃を与えた。

自作PC運用

RTX 4090(24GB VRAM)でQLoRAを使用した場合:

  • 7B〜13B: フルシーケンス長(4096〜8192tokens)で快適に学習
  • 33B: バッチサイズ1・短シーケンスなら学習可能
  • 70B: gradient checkpointingと4bit設定を組み合わせれば限界的に可能

量子化によるわずかな精度低下と引き換えに、アクセス可能なハードウェアで最大級のモデルを学習できる点がQLoRAの最大の価値。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/4