GGUF(ジージーユーエフ)
llama.cppが2023年8月導入したLLM量子化モデルの単一ファイル格納フォーマット。旧GGMLの後継で、メタデータを豊富に内包しヘッダー互換性を保ちつつ複数量子化レベルを1ファイルに収められる。
GGUFとは
GGUF(GGML Universal File Format)は2023年8月にllama.cppプロジェクトが導入したLLM量子化モデルの単一ファイル格納規格です。旧来のGGML形式が持っていたバージョン互換性の問題を解決し、モデルのメタデータ(語彙、ハイパーパラメータ、量子化方式)をすべてひとつのバイナリファイルに内包する設計を採用しています。
2024年末時点でHugging Faceに公開されているGGUFモデルは約8万件を超え、ローカルLLM推論の事実上の標準フォーマットとなっています。
主な特徴・仕組み
- 単一ファイル完結: モデルウェイト・トークナイザー語彙・量子化メタデータを
.ggufファイル1つに収録 - 多段量子化サポート: Q2_K(最軽量)〜Q8_0(高精度)まで10種類以上の量子化レベルをサポート
- CPU/GPU兼用: AVX2/AVX-512最適化のCPU専用でも動作し、CUDA/Metal/ROCmによるGPUオフロードも対応
- mmap対応: メモリマップドI/Oで大容量モデルを物理RAMに展開せず推論可能
- 後方互換: GGUFヘッダーバージョン更新後も旧モデルファイルを読み込み可能
- 豊富なメタデータ: モデル名・ライセンス・訓練データ情報・推奨パラメータをヘッダーに格納
量子化レベル比較表
| 量子化レベル | ビット幅 | Llama-3.1-8B サイズ | パープレキシティ損失 | 用途 |
|---|---|---|---|---|
| Q2_K | 2.5bit | 2.9GB | 大(要注意) | 極超低スペック環境 |
| Q4_0 | 4bit | 4.3GB | 中 | 基本量子化 |
| Q4_K_M | 4bit+混合 | 4.6GB | 小〜中 | 推奨デフォルト |
| Q5_K_M | 5bit+混合 | 5.3GB | 極小 | 高品質重視 |
| Q6_K | 6bit | 6.1GB | 最小級 | ほぼ無損失 |
| Q8_0 | 8bit | 8.0GB | 無視できる | ベンチマーク用 |
| F16 | 16bit | 15.0GB | 0(基準) | フルプレシジョン |
対応ツール・エコシステム
推論エンジン:
- Ollama (v0.1.0+):
ollama pull llama3.1:8b-instruct-q4_K_Mで自動ダウンロード・実行 - LM Studio (v0.2.0+): GUIでHugging Faceから直接GGUFを検索・ダウンロード
- llama.cpp本体:
./llama-cli -m model.gguf -p "プロンプト" -n 256 - KoboldCPP: ゲーム・小説向けUI付きllama.cppラッパー
- Jan.ai: オフライン特化のローカルLLMアプリ、GGUF専用マーケットプレイス付属
量子化ツール:
llama.cpp/convert_hf_to_gguf.py: Hugging FaceモデルをGGUF変換llama.cpp/llama-quantize: GGUF F16からQ4_K_Mなど各量子化レベルに変換- llama-cpp-python: PythonバインディングでGGUFを直接呼び出し
VRAM・RAM要件目安(Llama-3.1基準)
| モデルサイズ | Q4_K_M | Q5_K_M | Q8_0 | 最低RAM |
|---|---|---|---|---|
| 7B/8B | 4.4GB | 5.2GB | 8.1GB | 8GB |
| 13B | 7.9GB | 9.4GB | 14.3GB | 16GB |
| 34B | 20.0GB | 23.6GB | 36.2GB | 32GB |
| 70B | 39.7GB | 47.1GB | 72.0GB | 64GB |
Q4_K_Mが「黄金比」とされる理由
Q4_K_M(K-quantsのMedium variant)は重要なレイヤーを選択的に5〜6bitで量子化し、残りを4bitで量子化する混合精度手法です。2024年のベンチマーク(Perplexity on WikiText-2)では:
- Q4_K_M: PPL 6.45(F16比+0.23、誤差1.5%以内)
- Q4_0: PPL 6.62(F16比+0.40、誤差3.0%)
- Q5_K_M: PPL 6.30(F16比+0.08)
Q5_K_Mより10〜15%小さいにもかかわらず品質差が僅少なため、RAM節約と品質のバランスとして事実上のデフォルト推奨となっています。
自作PC・ローカルLLM環境での選び方
RAM 8GB: Q4_K_Mの7B/8Bモデルのみ実用的(Phi-3-mini、Gemma-2-2B-it) RAM 16GB: Q4_K_Mの13Bモデルまで可。7BならQ6_Kも余裕 RAM 32GB: Q4_K_Mの34B、または70B Q2_K(品質妥協) RAM 64GB+: 70B Q4_K_Mが快適動作(RTX 4090+64GB推奨構成)
GPUオフロード(--n-gpu-layers N)を使えばVRAMとRAMを組み合わせて活用できます。RTX 4090(24GB VRAM)+32GB RAMの組み合わせで、70B Q4_K_Mの半分をGPUに、残りをCPUに分散推論することも可能です。
よくある質問(FAQ)
Q1: GGUFとGGMLはどう違う? A: GGMLは旧フォーマットで2023年8月に廃止。GGUFはメタデータ互換性を大幅改善した後継規格。現在のllama.cppはGGUFのみサポート。
Q2: Q4_K_MとQ4_0どちらを選ぶべき? A: 迷ったらQ4_K_M一択。K-quantsは同じ4bitでも重要レイヤーを混合精度で量子化するためQ4_0より品質が高く、サイズ差も5〜8%程度。
Q3: GGUF化するとオリジナルとどれくらい性能が下がる? A: Q4_K_Mで英文PPL約1.5〜3%増(体感ほぼ無差別)。MMLU等のベンチマークでも0.5〜2%程度の低下にとどまる場合が多い。
まとめ
- GGUFはローカルLLM推論の標準フォーマット。単一ファイル・多段量子化・CPU/GPU対応が三大特長
- Q4_K_Mが品質とファイルサイズの最良バランス(「黄金比」)
- Ollama・LM Studio・llama.cppすべてが対応、エコシステムが最成熟
- 8GB RAMでもPhiやGemma-2系の7B未満モデルなら実用動作可能