オープンなLLMをローカルで動かす

88.3K Views

July 19, 23

スライド概要

TechFeed Experts Night#23にて登壇

https://techfeed.io/events/techfeed-experts-night-23

profile-image

闇のエンジニア/変なデジカメ開発中/ディープラーニング芸人/Raspberry Piとからあげ大好き/はてなブログ書いてます

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

オープンなLLMをローカルで動かす TechFeed Experts Night #23 2023/07/19 からあげ @karaage0703 https://techfeed.io/events/techfeed-experts-night-23

2.

自己紹介 名前:からあげ(本名は内緒) 職業:エンジニア 家族:妻・娘・ネコ x 2 https://karaage.hatenadiary.jp @karaage0703 karaage0703 ブログ、各種SNSで情報発信しています

3.

主な著書・寄稿・協力 2021/01/08発売 2021/04/21 改訂版発売 寄稿・協力多数(ラズパイマガジン・日経Linux…)

4.

今日の議題 オープンなLLM(Large Language Model)の話 - ChatGPT以外のLLMの話です - ChatGPTのプロンプトエンジニアリングの話やAPIの話はな いです(ごめんなさい) - それなりのGPU・メモリがあるマシンを持っている人向け です(ごめんなさい)

5.

そもそもChatGPT以外のLLMって何 があるの?

6.

日本語が使えるLLM 引用元:W&B LLMのJGLUEによる日本語タスクベンチマーク https://wandb.ai/wandb/LLM_evaluation_Japan/reports/LLM-JGLUE--Vmlldzo0NTUzMDE2?accessToken=u1ttt89al8oo5p5j12eq3nldxh0378os9qjjh14ha1yg88nvs5irmuao044b6eqa

7.

日本語が使えるLLM GPT-4(ChatGPTに使われている)が最強 MosaicMLというアメリカの会社のmpt-7b rinnaさんも頑張っている サイバーエージェントさん(Open Calm)も頑張っている ここには載ってないけどRWKVというのもある 引用元:W&B LLMのJGLUEによる日本語タスクベンチマーク https://wandb.ai/wandb/LLM_evaluation_Japan/reports/LLM-JGLUE--Vmlldzo0NTUzMDE2?accessToken=u1ttt89al8oo5p5j12eq3nldxh0378os9qjjh14ha1yg88nvs5irmuao044b6eqa

8.

LLMの比較表 性能 モデルサイズ 学習データ ライセンス MPT rinna Open Calm RWKV ChatGPTの次に高 い MPTの次くらい? Rinnaとほぼ同等か? ChatGPTと同等? 7B 3.6B 1B/3B/7B 4B/7B/14B 日本語のWikipediaと Common Crawl Alpaca+ShareGPT+... などに対してファイ ンチューニング CC BY-SA 4.0 Apache-2.0 テキストとコード 日本語のCC-100、日本語の の1Tトークン C4、日本語のWikipediaの 約312.5Bトークン Apache-2.0 MIT ※ MetaのLLaMA系は商用不可でダウンロード許可制だったため除外 (7/19 に商用利用可能なLlama2が発表。今後注目) 手頃に動かせる rinna, OpenCALM RWKVを試します

9.

そもそもChatGPT以外の LLMを使う理由って何?

10.

オープンなLLMを使う理由 (現時点では) あんまりないです

11.

オープンなLLMを使う理由 あえていうなら以下 - Open AIの代替:トラブル、サービス変更、終了リスク ローカルで動かせる:ネットが使えない環境で使える ファインチューニングできる:(今日は扱いません) お金:Open AIのAPI費用が不要 楽しい:多分これが一番

12.

オープンなLLMの動かし方

13.

オープンなLLMの動かし方比較 項目 OpenAI API (ChatGPT) Google Colab + Open LLM ローカル + Open LLM 性能 高い ◎ API料金(1円/分) △ 低い〜そこそこ △ 無料 〜 課金 △ 低い〜そこそこ △ 無料 ◯ 無し ◯ 不要 ◯ あり(課金次第) △ 毎回必要 ☓ 無し ◯ 初回のみ必要 ◯ ネット環境 必要 ☓ 必要 ☓ 不要 ◯ セットアップ 簡単 ◯ 簡単 ◯ 難しい ☓ 利用料金 利用時間制約 モデルダウンロード 今回はローカルで動かします ※ Google Colabで動かしたい場合は npaka さんのnote参照

14.

LLMを動かすための 環境構築

15.

最初に Macは一旦忘れましょう

16.

PCを買いに行こう ゲーミングPCで有名なメーカー • • • • ドスパラ マウスコンピューター ツクモ パソコン工房 好きなところで買いましょう 私はパソコン工房にしました

17.

PCを選ぼう 項目 内容 CPU Intel Core i 7 メモリ 32GB GPU NVIDIA RTX3060(12GB) ストレージ SSD x 2 重要なのはGPUとメモリ(GPU/CPU)

18.

GPUは重要(特にメモリ) 貧者(?)のGPU RTX3060 ※ 冗談なので本気にしないでください

19.

セットアップしよう ブログ記事: Windows PCに安定したネイティブLinux環境を 構築する方法 Windows環境とLinux環境両方あると便利 SSDに開発環境を丸ごと(OS含む)入れてSSDからブート

20.

スワップメモリを確保しよう(Windows) .wslconfigファイルに(なければ作る) C:\Users\[ユーザ名]\.wslconfig こう書く [wsl2] memory=32GB swap=128GB メインメモリの容量が最大 スワップメモリ容量 とりあえずバカでかスワップを確保

21.

スワップメモリを確保しよう(Linux) こんな感じ。32GBの例ですが、もっと増やしてOK $ sudo fallocate -l 32G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile とりあえずバカでかスワップを確保(2回目)

22.

DockerでのLLMの動かし方 - Dockerインストール - Dockerビルド - Dockerラン + 実行 3ステップでOK

23.

Dockerを使う理由 - セットアップが楽になる(場合もある) - CUDAインストール不要(NVIDIA Docker) - GPU/CPUを簡単に切り替えられる

24.

Dockerインストール CPUのみ $ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/installdocker.sh | /bin/bash GPU使う $ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/installnvidia-container-toolkit.sh | /bin/bash ワンライナーでインストールできるスクリプトを準備 (ダメだったら/不安だったら公式サイトへGo)

25.

Dockerビルド・ラン Dockerビルド $ cd && git clone https://github.com/karaage0703/ChatLLM $ cd ~/ChatLLM $ docker build -t ubuntu:ChatLLM . Dockerラン CPUの場合は --gpus all を消すだけ $ cd ~/ChatLLM $ docker run -it -v $(pwd):/root --gpus all ubuntu:ChatLLM ビルドしてランするだけ

26.

Dockerで動かしてみる コンテナ内でのコマンド root@hostname:/# root@hostname:~# root@hostname:~# root@hostname:~# cd /root python3 chat_calm.py python3 chat_rinna.py python3 chat_rwkv.py これで動かせます (1回目だけはモデルダウンロードがあるので時間かかります)

27.

オープンなLLMを動かしてみる 使用モデル ChatGPT:GPT-4(リファレンス) rinna:rinna/japanese-gpt-neox-3.6b-instruction-sft Open Calm: cyberagent/open-calm-3b RWKV:RWKV-4-World-3B-v1-20230619-ctx4096.pth - 小さいモデルを使った、特定の少量のプロンプトで確認した動作例です - 本来はモデルに合わせたプロンプトエンジニアリングも必要です - 条件も揃えていません。結果はあくまで雰囲気として理解してください

28.

模範演技:ChatGPT

29.

模範演技:ChatGPT

30.

模範演技:ChatGPT

31.

模範演技:ChatGPT

32.

rinnaの動作例

33.

rinnaの動作例

34.

rinnaの動作例

35.

Open Calmの動作例

36.

Open Calmの動作例

37.

Open Calmの動作例

38.

RWKVの動作例

39.

RWKVの動作例

40.

RWKVの動作例

41.

text-generation-webui - GUIがあり入力しやすい - モデルに合わせたプロンプトが 作れる - 設定が豊富 ブログ記事: text-generation-webuiをDockerで動かす

42.

text-generation-webuiで動かしてみる

43.

text-generation-webuiで動かしてみる

44.

オープンなLLMの課題 - 大きなモデル・計算リソースが必要 - 出力が安定していない(突然暴走しがち) - 性能はChatGPTには遠く及ばない(ただし、 今回は小さ目のモデルでの検証) 課題は色々あるけど時間が解決してくれそうではある

45.

まとめ 以下について学びました - オープンなLLMの概要説明 - オープンなLLMの動かし方 - オープンなLLMを動かした結果 オープンなLLMを楽しみましょう!

46.

おまけ:Llama2を動かしてみた 引用: https://huggingface.co/meta-llama モデル: llama-2-7b-chat.ggmlv3.q8_0.bin 参考:Llama.cpp で Llama 2 を試す (npaka神) https://note.com/npaka/n/n0ad63134fbe2

47.

Llama2動作例

48.

Llama2動作例

49.

Llama2動作例

50.

Llama2動作例

51.

ご静聴ありがとうございました