AI

llama.cppがAI言語モデルに使用するファイル形式「GGUF」にはウェイト以外に何が含まれているのか?


GGUF」はllama.cppが言語モデルに使用するファイルフォーマットです。GGUFの特徴の一つに「単一ファイルである」という点があり、複数のファイルが散在する他のフォーマットと比較すると使いやすさの面で有利と言えます。ただ、ファイル中にどんな情報が含まれているのかわからないと、本当にGGUFファイルだけでモデル実行に必要な全ての情報が揃うのか疑問に感じるかもしれません。オンデバイス推論エンジン「NobodyWho」の開発チームのブログにてGGUFにはどのような情報が含まれているのかを解説していました。

What's in a GGUF, besides the weights - and what's still missing? - NobodyWho
https://nobodywho.ooo/posts/whats-in-a-gguf/

◆GGUFに含まれる機能
GGUFに含まれている情報として以下のものがブログで取り上げられています。

チャットテンプレート
特殊トークン
サンプラー設定・サンプラーチェーンシーケンス

チャットテンプレートは会話型言語モデルの応答形式を定義したものであり、複雑な機能に対応するためにJinja2テンプレート言語で記述されます。GGUFではデフォルトのチャットテンプレートは「tokenizer.chat_template」キーに保存されています。Jinja2はループ・条件分岐・代入・リスト・辞書などを備えたプログラミング言語であるため、会話型のLLMアプリケーションは新しいメッセージが追加されるたびにインタープリタを同梱する必要があります。インタープリタの実装によってはパフォーマンスにかなりの差があるものの、チャットテンプレート処理がローカルLLMアプリケーションのパフォーマンス上のボトルネックとなることはないため問題とされることはありません。


特殊トークンとはテキスト表現よりも広い意味合いを持たせたトークンを指します。特殊トークンの代表例は「eos(end-of-sequence)」です。言語モデルは入力されたトークンのシーケンスに対して次のトークンを無限に出力し続けるため、eosトークンを用いてそれを停止させるのが一般的な解決策となっています。以下はGemma 4用の特殊トークンの一例です。


サンプラー設定については言語モデルが出力した確率分布から次のトークンを選択する「サンプリング」の結果を改善するため、どこかで使われた実績のあるサンプラー設定を手動でコピー&ペーストして流用するケースが常態化していましたが、GGUFフォーマットが改良され「general.sampling.sequence」フィールドが追加されたことによりモデルファイル内にサンプラーチェーンを直接指定できるようになりました。ただし現状では多くのGGUFモデルがgeneral.sampling.sequenceフィールドを省略しているため、llama.cppのデフォルト設定に依存しているケースが多い状況です。

◆GGUFに不足している機能
記事作成時点でGGUFに不足している機能としては以下のものがあるとNobodyWhoのブログは指摘しています。

ツール呼び出しフォーマット:GGUF標準にツール呼び出しフォーマットの文法を含めればより汎用的なパーサーの作成が可能になる
Thinkトークン:上流のHugging Faceリポジトリではthink_tokenフィールドが導入されたもののGGUFへの変換で省略されることが多く、思考ストリームの分離が困難になっている
プロジェクションモデル:マルチモーダルLLMでは画像や音声などを処理するためのプロジェクションモデル用とメインモデル用との2つのGGUFファイルが必要になることが多い
サポート機能リスト:モデル非依存の推論ライブラリがモデルのサポート外のツール呼び出しをした際に、より一貫したエラーメッセージや警告を提供できるようになる


◆まとめ
GGUFは「単一ファイルであることによる使い勝手の良さ」「モデル実行に必要な全てを網羅していること」「モデル固有のコードパスを削減できること」「オープンかつ拡張性の高さ」という特性を併せ持った優秀なフォーマットであり、支持基盤として強力なコミュニティが存在することから今後の標準規格の強化やエクスペリエンス向上を期待することができる、とNobodyWhoのブログは結んでいます。

この記事のタイトルとURLをコピーする

・関連記事
日常的なコーディング作業でClaudeやGPTからローカルAIモデルに置き換えた事例まとめ - GIGAZINE

GoogleがスマホやノートPCでAIをローカル実行するための省メモリ化技術「QAT」をGemma 4に導入、Gemma 4 E2Bがわずか0.84GBのメモリで動作 - GIGAZINE

自分のPCで簡単にAIを動かせる「Ollama」には多数の問題点があり、llama.cppを使った方が良いという意見 - GIGAZINE

MozillaがAI実行環境の「Thunderbolt」を発表、自分でホストして管理できる企業向けAIクライアントプラットフォーム - GIGAZINE

複数のPCからリソースをかき集めて巨大なAIモデルをローカル実行できる「mesh-llm」 - GIGAZINE

メモリの容量を増やすために2枚のメモリモジュールを挿す「2DPC」による速度低下はコンテンツ制作のパフォーマンスに影響を与えるのか? - GIGAZINE

AMDのドライバ更新でAI処理能力が大幅強化され109BのLlama 4 Scoutをローカル実行可能に - GIGAZINE

ローカルで各種AIモデルを実行できる無料ソフト「llama.cpp」がマルチモーダル入力をサポートし画像の説明などが可能に - GIGAZINE

さまざまなAIをWindowsのローカルPCで動かせる「Run llama.cpp Portable Zip on Intel GPU with IPEX-LLM」がDeepSeekにも対応したことをIntelが発表 - GIGAZINE

わずか4GBの実行ファイル1つで大規模言語モデルによるAIを超お手軽に配布・実行できる仕組み「llamafile」をWindowsとLinuxで簡単に実行してみる方法 - GIGAZINE

in AI, Posted by log1c_sh

You can read the machine translated English article What else is included in the 'GGUF' file….