【悲報】日本語ローカル LLM がアホすぎる件
ChatGPT を活用した Chatbot 制作の話はよく聞くのだが、それならローカル LLM でも作れるんじゃないかと思ってやってみた話。
ローカル LLM の世界
ローカルで動作する LLM は色々あるっぽいけど今回は Meta 社が作っている Llama 2 系で実験することにした。
Llama 2 は gpt-3.5 レベルの性能があるらしい。
しかし、日本語対応してないので東工大が作っている Swallow を使うことにした。 詳しいドキュメント: Zenn - Swallow: LLaMA-2 日本語継続事前学習モデル
ローカル LLM の実行
Swallow の README にあるように Python でコードを書いてローカル LLM を動かしても良いのだが、 少々煩雑だと思う。
できれば Web API の形で呼び出したい。調べたらちょうどよいのがあった。
これは Llama 2 系のローカル LLM を Chatbot として動くように少々手を加えたもの。
実質内部で使っているのは
なので、詳しくなってきたらこの辺を直接使うつもり。 似たようなプロジェクトで Ollama というのもある。
TinyLLM (llama-cpp-python) を動かすための準備
TinyLLM (というか llama-cpp-python ) でモデルを使うために Swallow のリポジトリから gguf ファイルを作る必要がある。
変換器を作ってくれている人がいたのでこれを使うことにした。
- cherry-py の convert_hf_to_gguf.py
pip install gguf numpy torch sentencepiece
python convert_hf_to_gguf.py ../Swallow-7b-hf/ 0
みたいな感じで動かすことができる。
TinyLLM (llama-cpp-python) を動かす
llama-cpp-python を動かす用の docker-compose.yml を書いたりしてよしなに動かした。
TinyLLM には chat.py という動作確認用のファイルが用意されているのでこれを日本語にして使うことにした。
で、実行結果がこちら:
いや、2 ちゃんねるじゃねぇか。。。
事前にベースのプロンプトとして次の文字を入れてある。
"あなたの名前はポピンズです。あなたは非常に知的なアシスタントです。
回答は簡潔かつ正確に答えてください。現在時刻は2024年02月09日です。"
その上で、 あなたの名前はなんですか?
と聞いた際の回答が上記なのでひどすぎる。。。 会話になってないし。
今回使用している Swallow-7b-hf は一番頭が悪いモデルではあるものの、この結果はちょっと残念すぎる。。。 もう少しまともに動いてほしかった。
というか思いっきり 2 ちゃんねるの ID とか投稿日とか見えてるけどいいのかこれは。。。
色々と思うことがあるけど残念な気持ちだ。
次はどうするか
- 一番頭のいいモデルである Swallow-70b-hf を試す予定
- 動作が早くなるらしいので vLLM も試したい
- Python に詳しくないので JavaScript から実行するのも試したい
一覧に戻る