Ch.09
QLoRAと量子化:より小さくしてチューニング
量子化の流れ: FP16→INT8→FP16
スケールαでINT8に写し、計算時に戻します。
FP16入力max(abs)α計算INT8量子化逆量子化復元確認
ステップで見る
- ① FP16: 元の浮動小数ベクトル。
- ② max(abs): スケール基準を決める。
- ③ α: 範囲用のスケール係数。
- ④ INT8: 掛けて丸め、整数で保存。
- ⑤ 逆量子化: ÷α で復元。
- ⑥ QLoRA: 圧縮バックボーン+LoRAのみ学習。
QLoRAと量子化
骨組みは4-bit圧縮、LoRA家具だけ鮮明に。
逆量子化 を使い、LoRA だけ学習。
4-bitロードバックボーン凍結LoRA学習forward・保存
QLoRA学習の流れ
- ① 4-bitでLLMロード。
- ② 量子化バックボーン固定。
- ③ LoRAのみFP16/BF16学習。
- ④ アダプタ保存・配備。
Ch.08 の LoRA は新しく学ぶ量を減らしましたが、巨大な事前学習重み は依然としてメモリの大部分を占めます。すでに建った大きな邸宅に、小さなインテリアだけ変えても家自体が重い—そんなイメージです。
本章は家全体を軽くする量子化と、LoRAと組み合わせたQLoRA(圧縮・凍結バックボーン+鮮明なLoRAノート)を扱います。
比喩: 4K映画をスマホ用MP4にしても物語は同じ—数字だけ薄くし意味はできるだけ保持。大きな言語モデルを身近な環境で合わせ込みやすくします。
数式の読み方(量子化 · QLoRA)
1. ビット幅とメモリ — なぜ圧縮?
一行要約: 重み1つを何ビットで保存するかで、ファイルサイズもGPUのVRAMも変わります。
深いモデルは何億〜何十億個の数値(重み)の集まりです。FP32のように精密に保存すると正確ですが重い。量子化は「短い整数コードで保存し、計算するときだけ近い小数に戻す」考え方です。
比喩: 写真をRAW(大)かJPEG(小)か—見た目は近いが容量だけ大きく違う。
- 形式FP32
- おおよそ/重み4B
- 意味最高精度
- 形式FP16
- おおよそ/重み2B
- 意味半分
- 形式INT8
- おおよそ/重み1B
- 意味8bit整数
- 形式INT4
- おおよそ/重み0.5B
- 意味4-bit極限
| 形式 | おおよそ/重み | 意味 |
|---|---|---|
| FP32 | 4B | 最高精度 |
| FP16 | 2B | 半分 |
| INT8 | 1B | 8bit整数 |
| INT4 | 0.5B | 4-bit極限 |
表を1行ずつ見ると、ビットが減るほど1重みあたりのバイトも減ります。教材では「32bit→4bit」≈ 32÷4=8 → 約8倍軽い。32/4などのビット倍率問題も同じ流れです。
QLoRAとの接続: Ch.08 LoRAは学ぶ量を減らしますが、本体はまだ大きい。QLoRAは自体を4-bit等で圧縮し、その上でLoRAだけ高精度に合わせます。
2. INT8量子化 — 「保存」と「計算」を分けて読む
一行要約: ディスク·VRAMには短い整数、行列積の直前に÷αで小数に近く戻す。
ずっと整数だけで計算するわけではありません。保存は小さく、計算はFP16/BF16など広い型—この二段構えが読み解きの鍵です。
手順(アニメーションと同じ):
1. ブロック内の最大絶対値(例5.4)
2. その値が127に来るようスケールα(≈23.5)
3. 各要素にαを掛け丸めて保存(例 1.2→28)
4. 使うとき28÷23.5≈1.2で逆量子化
本章の核心式(記号はここ):
- : 元の小数
- : 保存した整数コード
- : 計算用の近似小数
- : 拡大·縮小の物差し
合言葉: 掛けて丸めて保存→、割って復元←。演習の28·127·α≈24はこの4段階の結果です。
3. QLoRA一層 — 太い道(辞書)+細い道(LoRA)
入力が①圧縮·凍結辞書と②LoRAに分かれ足して。
かんたん: 上=圧縮百科(計算時だけ復元)、下=メモ(ここだけ学習)。
読み方: 辞書の反応+LoRAの上乗せ。辞書固定、LoRAだけ学習。
4. その他のキーワード — NF4·二重量子化·構成
NF4 — 重みは中央に集まりやすいので、よく出る区間を細かくコード化する分布向け4-bit。単純4-bitより品質が落ちにくいことが多い。
二重量子化 — ブロックごとにαが増えるので、α表そのものも再圧縮。小さな節約が数千ブロックで積み上がる。
構成 — 圧縮バックボーン1つを共有し、タスクごとに小さなLoRAだけ差し替える絵。巨大モデルを毎回丸ごと保存しなくてよい。
QLoRAと量子化: 巨人モデルを軽く扱う
1. 量子化とは — 大きな数を小さな箱へ
重みはFP32·FP16の小数で保存されることが多く、精密であるほどファイルとVRAMが大きくなります。量子化はINT8·4-bitの整数コードに変え容量を大きく減らす技術です。
比喩: RAW写真をJPEGに—¼·⅛の容量でも形はほぼ同じ。
例: `0.0137`→`14`にし、行列積の直前に近い小数へ戻す。ポイントは「ずっと整数だけで計算」ではなく「保存は小さく、計算は広い型で」です。
2. 量子化のやり方 — 目盛り(α)を合わせる
まず束の中のいちばん大きい数(絶対値最大)を探します。例: `1.2`, `-0.5`, `5.4` → 5.4が基準。
かんたんに: その最大が127に来るようαを決める(≈23.5)。各数にαを掛け丸めて保存(`1.2`→28)。使うとき28÷23.5≈1.2で戻す(逆量子化)。
一言: 掛けて丸めて保存→割って復元。演習の28·127·α≈24も同じ流れ。
3. NF4 — もう少し賢い4-bit
重みは0付近に多いことが多い。NF4はよく出る区間を細かくした4-bit。「分布向け4-bit」だけでもOK。
二重量子化はα(目盛り)の表も再圧縮。小さな節約の積み上げです。
4. QLoRA — 量子化+LoRA
Ch.08 LoRA: 大きな辞書は固定、小さなメモ(LoRA)だけ学習。
QLoRAは辞書自体も軽く。
- : 4-bit圧縮・凍結
- LoRA: FP16/BF16でだけ合わせる
比喩: 百科事典はマイクロフィルム、メモは鮮明なペン。数式は数式ガイドへ。
なぜ重要か
1. 大きなモデルをより多くの人が
数十億パラメータの全量学習はメモリ負荷が大きい一方、自分のデータに合わせたい需要は増えています。QLoRAはバックボーンを圧縮・凍結しアダプタだけ学習—一般GPUでも合わせ込みを想像しやすくします。Ch.08 LoRAが学ぶ量を減らすなら、QLoRAは凍結百科の大きさまで減らします。
2. NF4・二重量子化
乱暴な4-bitだけだと品質が揺れやすい。NF4は分布向け4-bitで、教材として品質の落ち込みを抑えやすい。二重量子化はα表まで圧縮—小さな節約の積み上げが効きます。
3. バックボーン1つ、アダプタ複数
圧縮バックボーン+小さなLoRAで、別タスク・別データに同じ大モデルを向けやすい。7B全体を毎回保存せず薄いアダプタだけ差し替える絵です。Ch.08の付箋交換に、本章の百科そのものを軽くするが重なってQLoRAになります。
4. なぜ分けて見るか
メモリ: 圧縮·凍結辞書+学習LoRA+バッチ·系列長も一緒に。計算: 保存小·使う前に復元。学習: 辞書固定、LoRAだけ変更。
どう使うか
ステップ1: 圧縮バックボーンを載せる
QLoRAを始めるとき、まず 大きな事前学習モデル を 軽い形で読み込みます。重みはディスクとVRAMに 4-bit·NF4 のような 短い整数コード で入り、実際に行列積するときだけ FP16/BF16 など 広い数値表現に一時的に戻して 計算します。
比喩: 図書館の百科事典を全部棚に並べず マイクロフィルム にしておき、読むページだけ はっきりした写し を広げるイメージです。だから本章の第一歩は 「保存は小さく、計算は安定な型で」 です。
ステップ2: LoRAを付けて合わせる
は凍結。4-bit部分は学習せず、LoRAだけFP16/BF16で学習。変わるのはLoRAだけ—圧縮辞書+LoRAの足し算。
ステップ3: データとダイヤルを合わせる
うまく合わせるには 何を教えるか(データ) と どれだけ太く学ぶか(ハイパラ) の両方を見ます。指示文・対話・FAQなど タスクに合った例 を用意し、学習率・エポック数、LoRA rank(アダプタの厚み)、4-bit と 8-bit のどこまで圧縮するか を変えて調整します。
まだVRAMが厳しければ、まず バッチサイズや系列長 を下げるのがよくある手です。品質が物足りなければ、バックボーン全体を解凍するより データ・rank・学習率 から見直すのが自然です。
ステップ4: 学習後に何が残るか
学習が終わると、通常は 圧縮バックボーン1つ を共有し、タスクごとに 小さな LoRA アダプタ だけを持ちます。同じ7B級でも、医療・法務・社内FAQ のように目的が違えば アダプタだけ差し替える 絵が浮かびます。
量子化の流れは max → α → 掛けて丸めて保存 → ÷αで復元。QLoRAはその上に 「4-bit凍結 + LoRAのみ高精度学習」 を載せた組み合わせです。一言で、大きな辞書は一度だけ軽く持ち、合わせ込みは薄いノート(アダプタ)を何枚でも という考え方です。
まとめ
一言:重い辞書()を4-bitで圧縮·凍結し、小さなLoRAだけ合わせる=QLoRA。
四つ(かんたん):
①量子化=掛け丸め保存·割り復元
②NF4=賢い4-bit
③QLoRA=軽い辞書+LoRA
④構成=辞書1つ+LoRA差し替え
図: 保存小·計算前復元·LoRAだけ学習。誤解: 4-bit丸ごとFT(×)·INT4=半分(×、約8倍)。
問題の解き方
量子化·QLoRA の問題では、まず「圧縮・凍結バックボーン+LoRAアダプタ」を思い浮かべます。Ch.08 LoRAは学ぶ量、QLoRAはの大きさまで減らします。数値問題はビット倍率(32÷4=8等)と÷α復元、28·127·24がどの段階かを結びます。
以下はバンクと同形の例—概念·正誤から慣れましょう。
「QLoRAの核心に最も近いのは?
① をFP32で再学習
② 4-bit圧縮バックボーン+LoRAのみ高精度
③ ラベル削除」
→ 正解 2
なぜ? バックボーンは凍結し、アダプタだけ合わせます。
例(正誤 · ox)
「QLoRAで 4-bit を通常まるごとFP16微調整する。」
→ 通常は 凍結 → 正解 0
① セッションで出やすい数値タイプの例(バンクと同形)
例(ビット倍率 · vote) — FP32→INT4 の教材用倍率? → 8
例(INT8丸め · vote) — のとき → 28
例(量子化スケール · aggregate) — max abs → 24
例(累乗 · config) — に最も近い整数? → 16
例(シナリオ · scenario)
「Ch.08 LoRAだけでもVRAM不足のとき 次のレバー?
① ラベル削除
② 4-bit QLoRAでバックボーン圧縮
③ Attention削除」
→ 正解 2
例(NF4 · concept)
「NF4に最も近い説明?
① RNN活性化
② 4-bit・分布に合わせたコード
③ 最適化器名」
→ 正解 2
例(二重量子化 · concept)
「Double quantization の利点?
① LoRA rank自動増
② α表の保存コスト追加削減
③ バッチ自動増」
→ 正解 2
例(正誤 · メモリ)
「INT4 はFP16の約 半分 メモリ(教材用)。」
→ 実際はもっと小さい → 正解 0(教材 約8倍)
例(正誤 · QLoRA)
「QLoRA は 量子化 と LoRA を併用する。」
→ 正解 1
例(選択 · NF4 bit)
「NF4は何 bit に近い?」
→ 4
例(選択 · INT8)
「INT8の典型的な 最大正コード?」
→ 127