🧠

オープンなLLMをDockerで動かす

2023/05/17に公開

次々と発表されるオープンな日本語大規模モデル

どうなっているの??という感じですよね。

https://www.itmedia.co.jp/news/articles/2305/17/news096.html

https://prtimes.jp/main/html/rd/p/000000042.000070041.html

我らがnpakaさんは、さっそくGoogle Colabで動かしていらっしゃいます。
https://note.com/npaka/n/n2185b422a2f2

https://note.com/npaka/n/ne4a38239f420

ただ、Google Colabだと毎回モデルのダウンロードが大変なので、ローカルでDocker使って手軽に動かせるといいな、ということでやってみました。

以下GitHubのリポジトリにDockerfileとサンプルプログラムをおいています。チャットっぽいことをできるようにしています。

https://github.com/karaage0703/ChatLLM

上記で、サイバーエージェントとリンナのLLMが両方動きます。

使用環境

前提となる環境です。使用しているPCのスペックは以下です。

項目 内容
CPU Intel Core i 7
メモリ 32GB
GPU NVIDIA RTX3060(12GB)

OSはLinuxです。WindowsのWSL2でも多分動くと思います。Linux/Windows(WSL2)のセットアップに関しては、以下記事参照ください。

https://zenn.dev/karaage0703/articles/0ca67e19aa772e

https://zenn.dev/karaage0703/articles/211d89cc0a29a1

CPUのみでも動かせます。メモリが不足気味でしたら、以下記事参考に最初に設定しておいてください。
https://zenn.dev/karaage0703/articles/d38e17bd6efbaa

Docker

事前準備

Docker/NVIDIA Dockerのセットアップは以下記事を参照ください。

https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

Dockerイメージを作ります。イメージは1度作成すればOKです。

$ cd && git clone https://github.com/karaage0703/ChatLLM
$ cd ~/ChatLLM
$ docker build -t ubuntu:ChatLLM .

Dockerでプログラムを動かす

イメージ作成したらDockerを走らせます。

GPUを使う場合は以下コマンドです。

$ cd ~/ChatLLM
$ docker run -it -v $(pwd):/root --gpus all ubuntu:ChatLLM

CPU使う場合は以下コマンドです。

$ cd ~/ChatLLM
$ docker run -it -v $(pwd):/root ubuntu:ChatLLM

あとはコンテナ内で以下コマンドを実行するだけです。

root@hostname:~# python3 chat_calm.py
root@hostname:~# python3 chat_rinna.py

chat_calm.pyでサイバーエージェントのLLM、chat_rinna.pyでリンナのLLMを動かせます。

初回のみモデルのダウンロードが必要で時間かかりますが、2回目以降は不要になります。

起動後 >とだけ表示されるので、好きな言葉(プロンプト)を入力してください。

使用例

CALM(サイバーエージェント)

サイバーエージェントのモデルは、対話はできず、後の文章を予想して出力するようなモデルになります。

3bモデルです(7bモデルは自分の環境では動かず…)

CALM2(サイバーエージェント)

CPUで動きました(GPUではOut of Memory)

りんな

りんなは、モデルが対話に対応していますが、結構Hallucination(間違い)が激しいです。

RWKV

以下参照ください。

https://zenn.dev/karaage0703/articles/d58d79d8e77ab8

Llama 2

以下参照ください。

https://zenn.dev/karaage0703/articles/d3893b551c68fa

Japanese StableLM Alpha

以下参照ください。

https://zenn.dev/karaage0703/articles/0a4cd88faf7819

Weblab-10B

以下参照ください。

https://zenn.dev/karaage0703/articles/4097ef3ac8f51b

7Bモデル

環境によってはRTX3060でも動くみたいです。

https://twitter.com/featherogs/status/1659790069857935366

まとめ

ローカルPCでLLMを手軽に動かす方法を紹介しました。

多分fastchatとかが対応すれば、もっと使いやすくなるのかな?とか思ったりします。きっとすぐでしょうね。それまではこれで我慢(?)してください。

GitHubへのPRとかも歓迎です!

https://github.com/karaage0703/ChatLLM

参考リンク

https://nowokay.hatenablog.com/entry/2023/05/17/144518

https://nowokay.hatenablog.com/entry/2023/05/17/182644

https://nikkie-ftnext.hatenablog.com/entry/setup-opencalm-3b-apple-silicon-cpu

https://note.com/npaka/n/ne4a38239f420

https://note.com/npaka/n/nf442fc9f9c8d

https://internet.watch.impress.co.jp/docs/column/shimizu/1503707.html

https://qiita.com/takaaki_inada/items/9a9c07e85e46ec0e872e

https://blog.nownabe.com/2023/06/25/rinna-instructgpt-on-wsl-using-gpu/

https://note.com/shi3zblog/n/nf0961eb7fdee

https://note.com/__olender/n/nf3cf77d96f57

https://note.com/__olender/n/n2a5d414cf78a

https://zenn.dev/kazuph/articles/84f5debf015e76

https://note.com/bbz662bbz/n/nb2f68451a2f0

https://blog.nownabe.com/2023/06/25/rinna-instructgpt-on-wsl-using-gpu/

https://note.com/bakushu/n/n0c783d4396ef

https://qiita.com/tsuno0821/items/e18a1bc6b7e1885f375c

https://zenn.dev/saldra/articles/201dd9e7d8c743

https://note.com/npaka/n/n1d99253ae2cf

https://zenn.dev/kaeru39/articles/1ea73bfa40c7df

https://github.com/llm-jp/awesome-japanese-llm

https://note.com/npaka/n/n1d99253ae2cf

Calm2

https://youtecha320u.hatenadiary.jp/entry/2024/01/20/151307

https://note.com/alexweberk/n/n0f5d76f8c556

https://note.com/alfredplpl/n/n5ed2ea2b78ec

https://developers.cyberagent.co.jp/blog/archives/45308/

Streamレスポンス

逐次出力が表示されるやつです。

https://www.bioerrorlog.work/entry/open-ai-gpt-stream

https://github.com/openai/openai-cookbook/blob/main/examples/How_to_stream_completions.ipynb

ベンチマーク

以下にまとめました。

https://zenn.dev/karaage0703/articles/43f3fa5aa9bf1f

関連記事

https://karaage.hatenadiary.jp/entry/2023/09/04/073000

https://zenn.dev/karaage0703/articles/718506a593fef0

変更履歴

  • 2023/08/11 Japanese StableLM Alphaリンク追加
  • 2023/07/19 少修正(リンク追記)
  • 2023/05/20 少修正(追記)
  • 2023/05/18 参考リンク追加

Discussion