GGUFが生まれた背景
LLMをローカルPCで動かしたいと思ったとき、HuggingFaceからダウンロードできるモデルファイルは通常「safetensors」や「PyTorch bin」形式です。これらはPython環境とGPUがあることを前提にしており、CPUだけのマシンや省メモリ環境には向いていません。
GGUFはCPUでもLLMを動かすことを目的としたllama.cppプロジェクトが開発したモデルフォーマットです。量子化(浮動小数点数を低精度に圧縮する処理)を前提に設計されており、7Bクラスのモデルを8GBのRAMで動かすことも可能です。
GGMLとGGUFの違い
GGUFの前身がGGMLです。どちらもGiorgio Gargaglioという開発者のイニシャルから名前が付いています。
GGMLは単純なバイナリ形式で、モデルをC++から読み込みやすい構造になっていましたが、メタデータ(モデルのパラメータ数、語彙サイズ、ハイパーパラメータなど)の格納方法が固定されており、新しいアーキテクチャへの対応が難しくなっていました。
GGUFは2023年8月に導入された後継フォーマットで、主な改善点は次のとおりです。
- メタデータをキーバリュー形式で柔軟に拡張できる
- テンソル情報とデータをまとめて1ファイルに収められる
- バージョン番号が明示されており後方互換性の管理がしやすい
- LLaMA以外のアーキテクチャ(Mistral・Phi・Qwen等)を統一フォーマットで扱える
GGMLはllama.cppではサポートが終了し、現在の標準はGGUFです。
量子化レベルと表記の読み方
GGUFファイルのファイル名には量子化レベルが示されています。
Llama-3.2-3B-Instruct-Q4_K_M.gguf
この場合の読み方は次のとおりです。
- Q4:4ビット量子化
- K:k-quantと呼ばれる改良量子化方式
- M:Medium品質(SはSmall、Lは通常Large)
よく使われる量子化レベルの特徴を整理します。
Q2・Q3(超低精度)
最もファイルサイズが小さくなりますが、精度の低下が顕著です。スペックが非常に限られた環境での実験的な利用向けです。
Q4(バランス型)
サイズと精度のバランスが取れた主流の選択肢です。Q4_K_Mは特に精度/容量比が優れており、ローカルLLMを初めて試す際の推奨設定です。
Q5・Q6
Q4より精度が高く、8Bクラスでも高品質な出力が得られます。VRAMや共有メモリが16GB以上あれば検討する価値があります。
Q8
8ビット量子化で、元の16ビット(float16)にかなり近い品質です。精度を最大限保ちたい場合に使いますが、ファイルサイズもfloat16の約半分と大きめです。
メモリ要件の計算方法
モデルを動かすのに必要なRAM量はおおよそ以下の式で見積もれます。
必要メモリ(GB) ≈ パラメータ数(B) × ビット数 ÷ 8
例:Llama 3.2 3BをQ4で動かす場合 3 × 4 ÷ 8 = 1.5GB(モデル重みのみ)
ただしコンテキスト(KVキャッシュ)にも追加メモリが必要です。コンテキスト長が長いほど増えます。8Bモデルをデフォルトコンテキスト(2048〜4096トークン)で使う場合、Q4なら8〜10GB程度が目安です。
実際に必要なメモリは使用するllama.cppのバージョンやコンテキストサイズによって変わるため、Ollamaの ollama show モデル名 コマンドで事前に確認するのが確実です。
OllamaでGGUFを使う
OllamaはGGUFファイルのダウンロードと管理を自動化してくれるツールです。対応モデルはOllama公式ライブラリに登録されており、コマンド1つで取得できます。
# モデルをダウンロードして起動
ollama run llama3.2
# 特定の量子化レベルを指定
ollama run llama3.2:3b-instruct-q4_K_M
自分でGGUFファイルをダウンロードして使いたい場合はModelfileを作成します。
# Modelfile
FROM /path/to/model.gguf
PARAMETER num_ctx 4096
ollama create mymodel -f Modelfile
ollama run mymodel
HuggingFace上のGGUFファイル(Bartolomelaosが公開しているモデルなど)をダウンロードしてそのまま利用できます。
まとめ
GGUFはローカルLLM実行のデファクトスタンダードとなったモデルフォーマットです。GGMLの課題を解消しつつ、幅広いアーキテクチャを統一形式でサポートしています。Q4_K_Mが精度とサイズのバランスで最も選ばれており、8GBのRAMがあれば7Bクラスのモデルを十分快適に動かせます。Ollamaと組み合わせると管理が手軽になるため、ローカルLLMを始める際はこの組み合わせがファーストチョイスになるでしょう。