✂️

分割GGUFについて

2024/06/27に公開

分割GGUFとは?

c4ai-command-r-plus-Q4_K_M-00001-of-00002.gguf
c4ai-command-r-plus-Q4_K_M-00002-of-00002.gguf

↑ずばり、こういうやつです。
ファイル名の最後に(番号)-of-(分割数)とついていて複数に分割されたggufのことです。

はじめて出会ったときは少々困惑するかもしれません。私も最初は「なに勝手なことしてくれとるねん!」ってなりました(笑)
本記事では、これの正しい扱い方を解説していきます。でも心配ありません、超簡単です。

分割GGUFの取り扱い方

結論から言います。
同じディレクトリに全部まとめて入れておいてください。そして「*-00001-of-00002.gguf」だけllama.cppに渡してあげれば、あとはllama.cppが勝手に残りを探して全部読み込んでくれます。
超簡単でしたね!
以上、終わり!

結び

ほとんど誰も言及しないので書いてみましたが…やっぱりわざわざ記事にするまでもありませんでしたね(こりゃ言及されないわけだ)
これだけではあまりにもあんまりなので、おまけとして分割の方法を書いておこうと思います。

おまけ:GGUF分割のやり方

「llama-gguf-split.exe」(旧名gguf-split.exe)を使って行います。HuggingFaceの鬱陶しい1ファイル50GB制限を回避するのに便利です(というか、ほぼそのためだけの機能だと思います)。
ただし、デフォルトでは128tensorずつの分割になっているので(誰得)、このtensorの上限を大幅に引き上げ、かわりに50GBずつに分割するようにします。
具体的には、前者は--split-max-tensors引数で、後者は--split-max-size引数に○○Gと渡して変更します。また、第一引数で分割するggufファイルを、第二引数で分割後の名前(拡張子は除く)与えます。

コマンドの具体例

「F:\Users\Public\Downloads\c4ai-command-r-plus\c4ai-command-r-plus-Q4_K_M.gguf」を50GBずつに分割する場合

.\llama-gguf-split.exe --split-max-tensors 1024 --split-max-size 50G "F:\Users\Public\Downloads\c4ai-command-r-plus\c4ai-command-r-plus-Q4_K_M.gguf" "F:\Users\Public\Downloads\c4ai-command-r-plus\c4ai-command-r-plus-Q4_K_M"

Discussion