Re Reference AI

技術

GGUFとは

GPT-Generated Unified Format

量子化されたモデルの重みとメタデータを1ファイルにまとめた、llama.cpp発のモデル配布フォーマット

量子化ファイル形式

ひとことで言うと

軽量化したAIモデルの重みをまとめて配布するためのファイル形式。

概要

GGUF(GPT-Generated Unified Format)とは、llama.cppプロジェクトが定義した、LLMの重み・量子化情報・トークナイザ等のメタデータを1つのファイルにまとめて格納するフォーマット。 モデルの構造やパラメータをファイル単体から読み込めるよう設計されており、OllamaLM Studio等、多くのローカルLLM実行ツールで標準的な配布形式として採用されている。 以前使われていたGGML形式の後継として設計され、拡張性や互換性が改善されている。 1つのファイルにモデル本体と量子化パラメータ、チャットテンプレート等の実行に必要な情報がまとまっているため、ダウンロードしてすぐに動かせる手軽さがローカルLLM実行ツールで広く採用される理由になっている。

背景

ローカル環境でLLMを手軽に配布・実行するには、モデルの重みだけでなく、量子化方式やトークナイザの設定等を含めて1つのファイルとして扱えることが望ましい。 GGUFは、こうした情報を1ファイルへ統合し、異なるツール間でも一貫して読み込めるよう設計された。

歴史

2023年8月: llama.cppプロジェクトが、以前のGGML形式に代わる新フォーマットとしてGGUFを導入。 以降、Hugging Face等でGGUF形式に変換された量子化モデルが数多く公開され、ローカルLLM実行の事実上標準的なフォーマットとして普及した。

アーキテクチャ

ファイル先頭にモデルのアーキテクチャ種別・トークナイザ設定・量子化方式等をキーバリュー形式で記録したメタデータ領域を持ち、続けて各テンソル(重み)を指定された量子化形式で格納する。 単一ファイルにモデルの実行に必要な情報が完結しているため、追加の設定ファイルなしに読み込める。

コード例

gguf-pyでのメタデータ読み取り(概念例)

from gguf import GGUFReader

reader = GGUFReader("model.gguf")
for field in reader.fields.values():
    print(field.name)

利点

  • モデルの重み・量子化情報・メタデータが1ファイルにまとまっており、配布・管理がしやすい
  • OllamaLM Studio等、多くのローカルLLMツールが標準対応している
  • GGMLの後継として拡張性が改善されており、新しいモデルアーキテクチャにも対応しやすい

欠点

  • 主に推論向けのフォーマットであり、学習(ファインチューニング)にそのまま使う用途には向かない
  • フォーマット自体はllama.cppのエコシステムに強く依存しており、対応していないツールでは扱えない
  • 量子化により、変換元のFP16・FP32モデルと比べ精度がわずかに低下する

比較

  • 量子化GGUFは、量子化されたモデルの重みを格納するための代表的なファイル形式
  • llama.cppGGUFは、llama.cppプロジェクトが定義したモデル配布フォーマット
  • OllamaOllamaで配布・実行されるモデルの多くは、GGUF形式で提供されている

関連用語

量子化llama.cppOllamaLM Studio

よくある質問

GGUFとGGMLの違いは?

GGMLはllama.cppが当初使用していた量子化フォーマット。 GGUFは、拡張性やメタデータの扱いを改善した後継フォーマットで、現在はGGUFが標準的に使われている。

GGUF形式のモデルはどこで入手できる?

Hugging Face上で、多くのオープンウェイトモデルがGGUF形式に変換されて公開されており、Ollama等のツールから直接ダウンロードできる。

参考文献

関連Zenn記事