SVX日記
2024-08-19(Mon) ハスに構えつつAIを動かしてみる
先日「仕事で既存の生成AIに問い合わせる仕組みを作っている」と書いたが、そのすぐ横で後輩が「手元で生成AI動きました」なんて報告を上げてきた。え、マジッ!?
聞くとちゃんとコンテナで上げていて、普通にコンソールから日本語で質問を与えられる状態になっていて驚愕。なにかがうまくいってなくて「こんにちは」の応答に数分かかるようだが、とりあえず動くということだけでスゴい。自分的に、同僚からこういう刺激を与えられるのって、すごく嬉しい。滅多になかったことだ。
ollamaという流行りの仕組みを使っているらしい。調べると、それほどの手数を要さずに動くようだ。それほどの超弩級スペックも必要ないっぽい。こういう、同僚からの嬉しい刺激に報いる一番の方法は、すぐに追いついて一緒になって取り組むことだ。
services:
ollama:
image:
docker.io/ollama/ollama
container_name:
ollama-alpha
ports:
- "11434:11434"
volumes:
- pv:/root/.ollama
volumes:
pv:
driver: local
# データを永続的に保持する領域として
# mkdir -pv pv しておくこと
driver_opts:
type: none
o: bind
device: $PWD/pv
ollamaコンテナを上げたら、日本語の言語モデルの導入が必要になる。どの言語モデルを導入するのが適当かわからないので、ググって出てきたサイトのお勧めをそのまま試す。また、Modelfileという定義を書いて初期設定をする必要があるのだが、それもよくわからないので同サイトのお勧めをそのまま試す。
/root/docker/ollama # cd pv
/root/docker/ollama/pv # mkdir llm-jp-13b-instruct
/root/docker/ollama/pv # cd llm-jp-13b-instruct
/root/docker/ollama/pv/llm-jp-13b-instruct # wget llm-jp-13b-instruct-full-ac_001_16x-dolly-ichikara_004_001_single-oasst-oasst2-v2.0-Q4_K_M.gguf
/root/docker/ollama/pv/llm-jp-13b-instruct # vi Modelfile
/root/docker/ollama/pv/llm-jp-13b-instruct # cat Modelfile
FROM ./llm-jp-13b-instruct-full-ac_001_16x-dolly-ichikara_004_001_single-oasst-oasst2-v2.0-Q4_K_M.gguf
PARAMETER temperature 0.7
PARAMETER top_p 0.95
PARAMETER repeat_penalty 1.05
PARAMETER stop "<EOD|LLM-jp>"
TEMPLATE """{{ if .System }}{{ .System }}{{ end }}{{ if .Prompt }}
### 指示:
{{ .Prompt }}{{ end }}
### 応答:
{{ .Response }}<EOD|LLM-jp>"""
SYSTEM """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"""
/root/docker/ollama/pv/llm-jp-13b-instruct # cd ../..
/root/docker/ollama # docker_exec
# INTO [ollama-alpha].
root@aef3abf257e5:/# cd root/.ollama/llm-jp-13b-instruct
root@aef3abf257e5:~/.ollama/llm-jp-13b-instruct# ollama create llm-jp-13b-instruct -f Modelfile
root@aef3abf257e5:~/.ollama/llm-jp-13b-instruct# ollama list
NAME ID SIZE MODIFIED
llm-jp-13b-instruct:latest bb43f78e1cbd 8.3 GB 7 seconds ago
root@aef3abf257e5:~/.ollama/llm-jp-13b-instruct# exit
/root/docker/ollama # docker exec -it ollama-alpha ollama run llm-jp-13b-instruct
>>> こんちは。
こんにちは。
>>> Send a message (/? for help)
/root/docker/ollama # docker stats
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS CPU TIME AVG CPU %
aef3abf257e5 ollama-alpha 390.81% 14.72GB / 16.53GB 89.06% 6.952kB / 978B 8.959GB / 2.052GB 30 7m59.065034s 114.62%
ちょうど1年半前くらいにChatGPTで遊んでみていたが、手元で動くのはもっと先だと思っていたわ。まぁ、アーケード版に対するファミコン版かもしれんけど、それでも手元で動くのは夢がある。
/root/docker/ollama # docker exec -it ollama-alpha ollama run llm-jp-13b-instruct
>>> 1980年台の傑作アーケードゲームを5つ挙げてください。
1980年代のアーケード・ビデオゲームの傑作には以下のようなものがある:
ギャラガ
スペースインベーダー
ドンキーコング
パックマン
フロッガー
>>> ドンキーコングとはどんなゲームですか?
ドンキー・コング』は、1982年にナムコが開発・発売したアーケード・コン
ピュータ・ゲーム。プレイヤーはアーケード版『キングコング』(1980年)を
基にしたゲームで、アーケード版ドンキーコングのスピンオフ作品。
プレイヤーはアーケード版キングコングのキャラクターであるドンキーコング
を操作し、アーケード版キングコングの敵役であるアーケード版キングコング
のキャラクターであるコングを避けながら、バナナを集め、できるだけ長く生
き残ることを目指す。
>>> Send a message (/? for help)