見出し画像

200Kトークン対応34BモデルNous-Capybaraをローカルで試す

Nous-CapybaraはNous社によるYi 34Bのファインチューニングモデルだ。
RedditでGPT-4やGoliath120B(ゴリアテ)などとさまざまな比較が行われていて興味が出たので試してみた。

このスレ主はドイツのウルフラム・レイブンウルフ氏で、結論だけ言えば、さまざまな言語モデルを「ドイツ語の」専門的なデータセットによって試験した結果、1位がGPT-4 API、二位が2ビット量子化されたGoliath-120b-GGUF、三位がNous-Capybara-34B-GGUFの4ビット量子化モデルだったという。

彼によれば、2ビット量子化されたGoliath120Bは、4ビット量子化されたGoliath70Bよりも精度が高かったそう。ただし、Goliath120Bは、たとえ2ビット化しても速度が極めて遅く実用的には使えないという判断とのこと。

そう考えると、トータルでバランスが良かったのはNous-Capybara-34Bの4ビット量子化モデルで、これはGPT-4やGoliath 120Bと同等のスコアを達成しただけでなく、200Kトークンのコンテキストを実現できるということ。言うまでもなく最近バージョンアップしたGPT-4でも128Kトークンが限界ですから、トークン数だけならGPT-4を超えるということになる。

ちなみにドイツ語でトレーニングされたSauerkrautLM 70Bは、ドイツ語のテストにも関わらず最もスコアが低かったとのこと。このあたり、まだまだ色々ありそう。

というわけで、せっかく手元に80GB VRAMのGPUがあるので「かなり高性能」と言われたNousCapybara34Bの4ビット量子化版ではなく8ビット量子化版で試してみることにした。

ベースモデルはここ

GGUFはここ

https://huggingface.co/TheBloke/Nous-Capybara-34B-GGUF

このファイル(8ビット量子化)を使用。経験則的に8ビット量子化が最も性能劣化が少なく高速に推論できる(少なくとも現世代までは)
https://huggingface.co/TheBloke/Nous-Capybara-34B-GGUF/blob/main/nous-capybara-34b.Q8_0.gguf

推論にはllama.cppを使用。

$ ./main -m models/nous-capybara-34b.Q8_0.gguf -p 'USER:宮﨑駿の代表作を全てJSON形式で教えて ASSISTANT:{ "works" : [ {"title":'
 USER:宮﨑駿の代表作を全てJSON形式で教えて ASSISTANT:{ "works" : [ {"title": "風の谷のナウシカ", "year": 1984},
{"title": "天空の城ラピュタ", "year": 1986},
{"title": "もののけ姫", "year": 1997},
{"title": "神々の伝説", "year": 2001},
{"title": "アルゴンの森", "year": 2011}]}</s> [end of text]

知らないやつがある。ハルシネーションかな。
ちなみにドイツ語のテストは、関連する情報を与えた上で質問に答えさせるタイプのテストなのでハルシネーションについてはテストしてない。

もっと長いコンテキスト長でやってみよう。

$ ./main -m models/nous-capybara-34b.Q8_0.gguf -p 'USER:宮本茂の代表作を全てJSON形式で教えて ASSISTANT:{ "works" : [ {"title":' -c 8192
 USER:宮本茂の代表作を全てJSON形式で教えて ASSISTANT:{ "works" : [ {"title": "Super Mario Bros.", "release_year": 1985},
{"title": "The Legend of Zelda", "release_year": 1986},
{"title": "Super Mario Bros. 3", "release_year": 1988},
{"title": "Donkey Kong Country", "release_year": 1994},
{"title": "The Legend of Zelda: Ocarina of Time", "release_year": 1998},
{"title": "Super Mario Sunshine", "release_year": 2002},
{"title": "The Legend of Zelda: The Wind Waker", "release_year": 2002},
{"title": "Super Mario Galaxy", "release_year": 2007},
{"title": "Super Mario Galaxy 2", "release_year": 2010},
{"title": "The Legend of Zelda: Skyward Sword", "release_year": 2011}]}</s> [end of text]

合ってるね。
しかし妙に遅いと思っていたらGPU使ってなかった(と考えるとかなり速い)。
34Bなら量子化しなくても80GBに乗るか(たぶんフットプリント64GBくらい)

再度ダウンロードしてあとで本物を試してみよう