[オタク機器日記] 我が家で稼働中の人工知能(LLM)はフリーザ様のデスビームを知っていた件
最近はクラウドの向こうにある超大規模GPUクラスタに頼らずとも、社内とか自宅に設置されたマシンでローカル生成AI(LLM)が使い物になりつつある。大きくは数百Bパラメータ版の汎用型と数Bパラメータ版の目的特化型の二系統に分かれているが、我が家で稼働しているCommand R Plus 104B版の場合は、何も教えなくてもフリーザ様のデスビームを知っていることが判明した。
今回は「なんでそんなことを聞いているのか?」とか、どうして二系統が存在するのかを解説させて頂くことにしたい。
(退屈な話) 数百Bパラメータ版の汎用型LLM
NVIDIAのGTC 2024という毎年開催されるイベントのCEO基調講演で紹介されていたけど、GPT-4は1.8TパラメータのMoE(Mixture of Experts)である。約220Bぱらためーた程度のLLM(Large Language Model)を8つ組み合わせて構成されている。
https://www.reddit.com/r/singularity/comments/1bi0x89/gptmoe_18t_parameters_could_it_be_gpt4/
LLMという通りテキストデータだから、そりゃ約220Bパラメータだと相当な知識を保有している。ちなみに当方の書いた2万字の小説が43KBである。ちなみに我が家でテスト稼働しているCohere社のCommand R Plus 104B版を本気で動かす場合、GPUのVRAM必要量は軽く200GBを超える。NVIDIAのH100(80GBのVRAM搭載)は500万円を軽く超えているから、3枚で1,500万円… とんでもない金が動く話になる。それさえも凌駕する約220Bパラメター版 x 8 = 約1.76Tパラメータだから、賢くて当然なのかもしれない。少なくとも当方よりは賢い。
で、このCommand R Plusを4bit量子化により、出来るだけ品質を落とさずにダイエットしたものが我が家で稼働している。Hugging Fraceからダウンロードするだけで60GBを超えるのだから、自宅インターネット回線が600Mbpsを出せることに感謝している。(それでも数十分は必要)
ちなみに動かすだけならば、64GBのCPUメモリと12GBのGPUメモリだけでも可能である。64GBのCPUメモリだけでも動くことは動くけれども、若干挙動が怪しくなる。60GBにOSが稼働する領域に加えて、LLMに指示を与えるプロンプト領域となると、仮想メモリをフル活用しても厳しい。最近のPCはSATAでなくてNVMeのSSDを使っているからマシだけれども、10年前のPCでは耐えられない。
ちなみにElyazaのCEOは70Bパラメータ版あたりを提唱しているようだが、それならば64GBのCPUメモリでなんとかなる。量子化しなくても約140GB… NVIDIA H100 x 2 枚だから、けっこう現実的な話になってくる。
(退屈な話) 数Bパラメータ版の目的特化型LLM
先のITmedia誌記事で曽根岡さんが指摘しているけれども、いきなり社内に70Bパラメータ版をそのまま動かす環境を作るのは勇気が必要だ。GPUだけで1,000万円を超えるコンピュータの構築や運用チームの確保 … そうなると汎用性は諦めて、「数Bパラメータ版をギンギンに鍛えて、特定の目的だけで使用」という選択肢が生まれて来る。
「日本最先端のローカルLLMコミュニティ」を見ていると、こちらも進化型マージだとかいった最新技術などを駆使して、VTuber向けLLMなどが脚光を浴びている。高校生がお小遣いの範囲で頑張って、日本語の会話能力ではトップクラスを出したりしている。
7Bパラメータ版であればGPUなしで動かすことも夢ではない。あとは鍛え方次第であり、現時点のハードウェア環境を考えると、少なくとも数年は通用するだろう。
で、フリーザ様のデスビーム?
で、ようやく本題に入ると、実は『フリーザ様のデスビーム』は、実は偶然の産物に過ぎない。
先に2万字の小説原稿と書いたように、今は自分の書いた小説原稿の批評に生成AIを活用しようと考えている。そのために数十B版レベルの目的特化型では無理がある。少なくとも70Bパラメータ版以上で、日本語にも強いLLMが欲しくなって来る。Command R Plusは日本語特化型LLMではないけれども、日本語には強い。それでどこまで使い物になるか、試させて頂こうとしている。(他にも候補は幾つか存在する)
そんな折に自宅環境が壊れた。復旧させたので、稼働確認してみた。
その時にCommand R Plus 104B版に投げたのが、「ドラゴンボールの孫悟空の弱点を教えてください」というプロンプトだった。
なぜドラゴンボールに拘るのかというと、昔から世界的な知名度が高いからだ。Command R plusが多国語版であり、別に日本向けにチューニングされていない。だから孫悟空のことくらいは知っているだろうと思って復旧後の動作確認をしたら、ベジータのギャリック砲やフリーザ様のデスビームを言及して来たという訳だ。
いやいや正直、ここまでの回答が出て来るとは予想していなかった。なお環境は第8世代Intel i5のメモリ64GBにIntel Arc A770 GPUの16GBメモリなので、最大のボトルネックはメモリ不足(によるディスクアクセス負荷)だった。M.2スロットはあるけれどもNVMeはサポートしていないので、ディスク交換して性能比較できないのが残念だ。
llama_print_timings: load time = 226951.67 ms
llama_print_timings: sample time = 144.47 ms / 554 runs ( 0.26 ms per token, 3834.81 tokens per second)
llama_print_timings: prompt eval time = 256221.71 ms / 20 tokens (12811.09 ms per token, 0.08 tokens per second)
llama_print_timings: eval time = 1174229.79 ms / 553 runs ( 2123.38 ms per token, 0.47 tokens per second)
llama_print_timings: total time = 1431051.13 ms / 573 tokens
Log end
0.5トークン/秒… ただの質問への回答ならば、せめて2トークン/秒は欲しいところだ。ちなみにIntel GPUを使用しているので、実行コマンドは次の通り。
build\bin\main.exe -m models\command-r-plus-Q4_K_M-00001-of-00002.gguf -f prompt.txt -ngl 12 -s 0 -sm layer -c 16000
ちなみに現在はIntel Arc A770を追加購入し、二枚刺しにして性能改善をテストしてみたいと考えている。
しめくくり (業務への適用)
とりあえずCommand R Plusが日本語会話に優れている7B版クラスとは異なり、知識量も豊富であることが分かった。当方のようにコンサルティング的な仕事をする者は非定型業務が多いので、その場合はCommand R Plusを商用利用するという選択肢になるだろうか。プロンプトを工夫すれば、知恵を出すことはやってくれそうだ。
それから小説原稿を使っているけれども、業務用の知識をプロントの冒頭部分に記述して、それから作業をお願いするという使い方もありそうだ。
最近はRAGという知識DBを使ってLLMを補完する技法が人気だけれども、知識DBの代わりにプロンプトの中に前提知識を埋め込んでしまうのである。実行するたびにプロンプトを取り込むので時間を要してしまうけれども、前提知識がコロコロと変わるとか、常に最新情報を元に分析したい場合には有効かもしれない。(応用としてはURLを指定して参考データとして取り込んで分析して貰うという方法もありそうだ)
… という仕事的な話はさておき、ベジータのギャリック砲はさておき(さておいて良いのか?)、フリーザ様のデスビームまで知っていることには驚かされた。一体どんなデータで学習したのだろうか。Cohere社の中の人に会う機会があったら、ぜひ一度伺ってみたいところだ。OpenAIのようにYoutube動画で学習していたりするのだろうか。
それでは今回は、この辺で。ではまた。
------
記事作成:小野谷静(オノセー)