---
title: オープンなLLMをローカルで動かす
tags: 
author: [からあげ](https://convert.docswell.com/user/karaage0703)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KE424ZNZ71.jpg?width=480
description: TechFeed Experts Night#23にて登壇  https://techfeed.io/events/techfeed-experts-night-23
published: July 19, 23
canonical: https://convert.docswell.com/s/karaage0703/Z38EP1-2023-07-19-201446
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KE424ZNZ71.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L71M4R5DJG.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/G7W3X15872.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4JZV6PN973.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YE652M8DJV.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GE5Y2Z98E4.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/972G4R2V7R.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/DJYVMDYQJM.jpg)

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を試します


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V7NMW6P2E8.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YJ9NXL3DJ3.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GJ8K2XM5ED.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LJLZ28337R.jpg)

オープンなLLMの動かし方


# Page. 13

![Page Image](https://bcdn.docswell.com/page/47MV86DM7W.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/P7R25P4LJ9.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/PJXDK3Z6EX.jpg)

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


# Page. 16

![Page Image](https://bcdn.docswell.com/page/3JKX5Y8GED.jpg)

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


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LE35K925J5.jpg)

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


# Page. 18

![Page Image](https://bcdn.docswell.com/page/8EDD3GZYEG.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/V7PX43D2E8.jpg)

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


# Page. 20

![Page Image](https://bcdn.docswell.com/page/2JVLX41X7Q.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/5EGXV12RJL.jpg)

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


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4JQ86DPY7P.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/K7424ZYZJ1.jpg)

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


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LJ1M4R6DEG.jpg)

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）


# Page. 25

![Page Image](https://bcdn.docswell.com/page/GJW3X1W8J2.jpg)

Dockerビルド・ラン
Dockerビルド
$ cd &amp;&amp; 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
ビルドしてランするだけ


# Page. 26

![Page Image](https://bcdn.docswell.com/page/4EZV6P59J3.jpg)

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


# Page. 27

![Page Image](https://bcdn.docswell.com/page/Y7652M9DEV.jpg)

オープンな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
- 小さいモデルを使った、特定の少量のプロンプトで確認した動作例です
- 本来はモデルに合わせたプロンプトエンジニアリングも必要です
- 条件も揃えていません。結果はあくまで雰囲気として理解してください


# Page. 28

![Page Image](https://bcdn.docswell.com/page/G75Y2ZN874.jpg)

模範演技：ChatGPT


# Page. 29

![Page Image](https://bcdn.docswell.com/page/9J2G4R5VJR.jpg)

模範演技：ChatGPT


# Page. 30

![Page Image](https://bcdn.docswell.com/page/DEYVMDKQEM.jpg)

模範演技：ChatGPT


# Page. 31

![Page Image](https://bcdn.docswell.com/page/VJNMW6R278.jpg)

模範演技：ChatGPT


# Page. 32

![Page Image](https://bcdn.docswell.com/page/YE9NXLMDE3.jpg)

rinnaの動作例


# Page. 33

![Page Image](https://bcdn.docswell.com/page/GE8K2XL57D.jpg)

rinnaの動作例


# Page. 34

![Page Image](https://bcdn.docswell.com/page/LELZ28L3JR.jpg)

rinnaの動作例


# Page. 35

![Page Image](https://bcdn.docswell.com/page/4JMV86MMJW.jpg)

Open Calmの動作例


# Page. 36

![Page Image](https://bcdn.docswell.com/page/PJR25PVLE9.jpg)

Open Calmの動作例


# Page. 37

![Page Image](https://bcdn.docswell.com/page/PEXDK3W67X.jpg)

Open Calmの動作例


# Page. 38

![Page Image](https://bcdn.docswell.com/page/3EKX5YVG7D.jpg)

RWKVの動作例


# Page. 39

![Page Image](https://bcdn.docswell.com/page/L735K9M5E5.jpg)

RWKVの動作例


# Page. 40

![Page Image](https://bcdn.docswell.com/page/87DD3G6Y7G.jpg)

RWKVの動作例


# Page. 41

![Page Image](https://bcdn.docswell.com/page/VJPX43Y278.jpg)

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


# Page. 42

![Page Image](https://bcdn.docswell.com/page/2EVLX4GXJQ.jpg)

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


# Page. 43

![Page Image](https://bcdn.docswell.com/page/57GXV18REL.jpg)

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


# Page. 44

![Page Image](https://bcdn.docswell.com/page/4EQ86D9YJP.jpg)

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


# Page. 45

![Page Image](https://bcdn.docswell.com/page/KJ424ZXZE1.jpg)

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


# Page. 46

![Page Image](https://bcdn.docswell.com/page/LE1M4RND7G.jpg)

おまけ：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


# Page. 47

![Page Image](https://bcdn.docswell.com/page/GEW3X148E2.jpg)

Llama2動作例


# Page. 48

![Page Image](https://bcdn.docswell.com/page/47ZV6P29E3.jpg)

Llama2動作例


# Page. 49

![Page Image](https://bcdn.docswell.com/page/YJ652MVD7V.jpg)

Llama2動作例


# Page. 50

![Page Image](https://bcdn.docswell.com/page/GJ5Y2ZD8J4.jpg)

Llama2動作例


# Page. 51

![Page Image](https://bcdn.docswell.com/page/LE35K9MGJ5.jpg)

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


