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の最大の価値。