AI・機械学習
上級

QLoRA(量子化LoRA)(キューローラ リョウシカローラ)

LoRAに4bit量子化(NF4)を組み合わせたPEFT手法。量子化したベースモデルを凍結しLoRAアダプタのみFP16で学習することで、70Bクラスの大型LLMを単一の24GB GPUでファインチューニング可能にした。

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

QLoRA(量子化LoRA)

概要

QLoRA(Quantized Low-Rank Adaptation)は、4bit量子化とLoRAを組み合わせることで70Bクラスの大型LLMを単一GPUでファインチューニング可能にしたPEFT手法だ。Dettmers et al.(2023, NeurIPS)がUniversity of Washingtonで発表し、LLMファインチューニングの民主化に大きく貢献した。

3つの核心技術

1. 4bit NormalFloat(NF4)量子化

通常のINT4量子化ではなく、NF4(NormalFloat4)という情報理論的に最適な4bit表現を使用:

通常のFP32重み: 32bit/パラメータ
INT4量子化: 4bit/パラメータ(情報損失大)
NF4量子化: 4bit/パラメータ(正規分布に最適化、情報損失小)

→ 圧縮率: 32bit → 4bit = 8倍圧縮

NF4は重みが正規分布に従うという観察に基づき、その分布に情報理論的に最適な量子化格子を使う。

2. Double Quantization(二重量子化)

量子化定数(スケールファクター)自体も量子化することで、さらにメモリを削減:

通常の量子化:
量子化重み(4bit)+ スケールファクター(FP32=32bit/64パラメータ)
→ 実効: 4.5 bit/パラメータ

Double Quantization:
スケールファクターもFP8で量子化
→ 実効: 4.127 bit/パラメータ

65Bモデルで約2GB追加削減。

3. Paged Optimizers

GPUメモリが不足した際にCUDAのUnified Memoryを使ってCPU RAMにオプティマイザ状態をページアウト:

  • AdamWオプティマイザのモーメント(m1, m2)= 学習中に最大メモリを消費
  • GPUスパイク時にCPUへ退避 → 長いシーケンスでもOOM回避

メモリ削減効果

モデルフルFT(BF16)QLoRA削減率
7B112 GB6 GB95%
13B208 GB10 GB95%
33B528 GB21 GB96%
65B1,040 GB41 GB96%

実装例

import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model

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

# 4bitでモデルロード
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-70b-hf",
    quantization_config=bnb_config,
    device_map="auto"
)

# LoRA適用
lora_config = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"])
model = get_peft_model(model, lora_config)

Guanacoモデルの実績

QLoRAの論文で学習したGuanacoモデル(65B):

  • ChatGPTを99.3%の確率で上回るか同等(Vicuna評価)
  • 学習コスト: A100 80GB × 1枚 × 24時間(約$300)
  • フルFTに比べほぼ同等の品質を1/100以下のコストで実現
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7