GGMLからGGUFへ:llama.cppのファイルフォーマット変更

RedditのローカルLLM板に以下の投稿があった。週明けに「llama.cpp」で使われているGGMLファイルが「GGUF」という新フォーマットに変更されるとのこと。

フォーマット変更の要点

  • GGUFは、GGMLよりも拡張性の高いファイルフォーマット。「.bin」から「.gguf」になる。

  • これにより、Llama以外の言語モデル(falcon, rwkv, bloom, etc.)がllama.cppでサポートできるようになる。サポートするモデルは段階的に増える予定。

  • その他、プロンプトフォーマットをGGUF内に設定しておけるようなったり、rope-freq-baseやgqaなどの一部パラメータが不要になる予定。

  • 破壊的変更であり、既存のggmlモデルは「GGUF #2398」のマージ後は使えなくなる(有志がGGML>GGUFの変換スクリプトを作成中)。

  • マージは週明け(現地8月21日)を予定。

こちらのドキュメントに詳細な説明がある。GGMLには色々と技術的なネックがあったらしく、以前から刷新が望まれていたらしい。

なお「Llama系以外の言語モデル」については、現状:

  1. Llama.cppが対応済みのモデル(GPT-NeoX系のStableLMくらい?)

  2. Llama.cppでは対応していないが、GGMLでの量子化・推論には対応しているモデル(GPT-J, MPT, GPT-NeoX, StarCoder, etc.)

  3. Llama.cppのフォークが存在しているモデル(rwkv.cppggllm.cppbloomz.cpp, etc.)

が混在しており、初心者にはよく分からない状況になっている。これらが、順次llama.cppに公式サポートされていくならありがたい。

ただし、llama.cppでマージが済んでも、llama-cpp-pythontext-generation-webUIなどがGGUFをサポートするには多少タイムラグがありそう。