AI・機械学習
上級

GGUF(ジージーユーエフ)

GGUF(GPT-Generated Unified Format)とは、llama.cppプロジェクトで開発されたLLMモデルの量子化ファイルフォーマットである。従来のGGML形式を後継し、メタデータの自己完結性・後方互換性・拡張性を備え、CPU/GPU混合推論に最適化されている。

0 回閲覧
0 いいね

GGUF(GPT-Generated Unified Format)は、ローカルLLM推論の事実上の標準ファイルフォーマットである。llama.cppの開発者Georgi Gerganovが2023年8月に設計し、以前のGGML/GGJTフォーマットの制約(メタデータの外部依存、バージョン互換性の欠如)を解消した。2026年現在、Hugging Face上で公開されている量子化モデルの約80%がGGUF形式で配布されている。

GGUFのファイル構造

GGUFファイルは以下の構造で構成される。

  • マジックナンバー: GGUF(4バイト)でファイルを識別
  • バージョン番号: 現行はv3。後方互換性を保証
  • メタデータセクション: キーバリュー形式でモデル情報を格納(アーキテクチャ名、語彙サイズ、コンテキスト長、量子化方式など)
  • テンソルデータ: 量子化された重みテンソルのバイナリデータ。メモリマップ(mmap)で効率的にロード可能
  • アライメント: 32バイト境界でアラインされ、SIMD命令での高速処理に対応

GGMLとの最大の違いは、すべてのメタデータがファイル内に自己完結している点である。GGMLでは外部のトークナイザーファイルやconfig.jsonが必要だったが、GGUFではモデルの実行に必要な情報がすべて1ファイルに格納されている。

量子化バリエーション

GGUFは多数の量子化方式をサポートしている。名前の規則は Q\{ビット数\}_\{方式\}_\{サイズ\} である。

量子化方式ビット数1Bあたりサイズ品質用途
Q2_K2.63bit0.33GB低極限メモリ環境
Q3_K_S3.44bit0.43GB低-中メモリ制約が厳しい場合
Q3_K_M3.91bit0.49GB中バランス(小モデル向け)
Q4_04.50bit0.56GB中高速推論(精度やや劣る)
Q4_K_S4.58bit0.57GB中-高省メモリと品質のバランス
Q4_K_M4.85bit0.61GB高最も推奨される汎用設定
Q5_K_S5.54bit0.69GB高品質重視
Q5_K_M5.69bit0.71GB高-最高品質最優先
Q6_K6.57bit0.82GB最高FP16に近い品質
Q8_08.50bit1.06GBほぼ無劣化精度重視/中間形式
F1616.00bit2.00GB基準ベースライン

Q4_K_M が最も広く推奨される設定で、品質とサイズのバランスが優れている。Kシリーズ(K_S / K_M / K_L)は「K-Quant」方式で、重要度の高いテンソル層には高いビット数を、重要度の低い層には低いビット数を適用する混合精度量子化である。

llama.cppとの統合

GGUFはllama.cppのネイティブフォーマットとして設計されており、以下の機能と密接に統合されている。

  • メモリマップ(mmap)ロード: ファイルを仮想メモリにマッピングし、必要な部分だけ物理メモリに展開。起動時間を大幅短縮
  • GPU/CPUオフロード: --n-gpu-layers(-ngl)パラメータで、指定した層数だけGPUに配置。残りはCPU処理
  • Metal/CUDA/Vulkan対応: Apple Silicon(Metal)、NVIDIA GPU(CUDA)、AMD GPU(Vulkan/ROCm)で高速推論
  • KVキャッシュ量子化: 推論時のKey-Valueキャッシュも量子化し、長文コンテキストのメモリ使用を削減

HuggingFaceモデルからGGUFへの変換

python3 convert_hf_to_gguf.py /path/to/model --outtype f16 --outfile model-f16.gguf
./llama-quantize model-f16.gguf model-q4km.gguf Q4_K_M
  1. HuggingFace形式(safetensors)をFP16 GGUFに変換
  2. llama-quantize で目的のビット数に量子化
  3. llama-cli / llama-server で推論実行

GGUFを利用する主要アプリケーション

アプリプラットフォーム特徴
LM StudioWindows/Mac/LinuxGUIで簡単操作、モデルブラウザ内蔵
OllamaWindows/Mac/LinuxCLIベース、Modelfile でカスタム
GPT4AllWindows/Mac/Linuxオフライン動作、プライバシー重視
JanWindows/Mac/LinuxオープンソースChatGPT代替
KoboldCppWindows/Mac/LinuxRP/創作特化、CUBLASサポート
llama.cpp server全OSREST API提供、OpenAI互換エンドポイント

imatrix量子化(Importance Matrix)

2024年後半から導入されたimatrix(重要度行列)量子化は、校正データを使って各テンソルの重要度を測定し、低ビット量子化の精度を改善する手法である。

  • Q2_K/Q3_K等の低ビット量子化で特に効果が大きい(Perplexity 10-30%改善)
  • llama-imatrix で事前に重要度行列を計算し、量子化時に --imatrix で指定
  • Hugging Faceでは -imat サフィックスのモデルが増加中

よくある質問(FAQ)

Q1: Q4_K_MとQ5_K_Mのどちらを選ぶべきですか? A: VRAMに余裕があればQ5_K_Mを推奨する。Q4_K_Mと比べてファイルサイズは約15%大きいが、特にコード生成や数学的推論で精度差が顕著に出る。VRAMが厳しい場合はQ4_K_Mで十分実用的。

Q2: GGUFとsafetensorsの違いは何ですか? A: safetensorsはHuggingFace標準のモデル保存形式で、FP16/BF16の非量子化モデルに使われる。GGUFは量子化済みモデル専用フォーマットで、llama.cpp系のローカル推論エンジンで使用する。用途が異なるため相互排他ではなく、safetensors→GGUF変換が一般的なワークフロー。

Q3: Apple Silicon MacでGGUFモデルを実行するとどのくらいの速度が出ますか? A: M4 Pro(48GB Unified Memory)でLlama 3.1 70B Q4_K_Mを実行した場合、約12-18 tok/s(テキスト生成速度)が得られる。M4 Maxの128GB構成であれば120Bクラスのモデルも動作可能。Metal GPUアクセラレーションにより、CPU単体比で3-5倍の高速化が実現する。

まとめ

  • GGUFはローカルLLM推論の標準ファイルフォーマットで、自己完結型メタデータを持つ
  • Q4_K_Mが最も汎用的な量子化設定で、品質とサイズのバランスが最良
  • llama.cpp/LM Studio/Ollama等の主要アプリケーションがGGUFをネイティブサポート
  • imatrix量子化により低ビット(Q2/Q3)での精度が大幅に改善されている