モチベーション
しばらく、PINNsやそれに関連したOpenFOAMを勉強していたが、昨日LLM界隈で大きなニュースがあった。LLM界隈だけでなく株価にも影響するインパクトがあったDeep Seek-R1を使ってみることにした。そのままでは自分の環境では使えないので、量子化によりコンパクトされたLLMを使った。
今回、量子化モデルをOllamaとOpen WebUIを使ってブラウザから使うようにしたので、その内容をまとめる。
情報源
- ChatGPT超えの中国AI「DeepSeek-R1」の衝撃 - ascii.jpより。DeepSeek-R1の記事の一例として引用。
- サイバーエージェントからの発表 - DeepSeek-R1-Distill-Qwen-14B/32Bをベースに日本語データで追加学習を行ったLLMを公開したとのサーバーエージェントからの発表。
- mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-14B-japanese-gguf - 上記のサイバーエージェント版を量子化されたモデル。HugginFaceに公開。
- Open WebUIをフロントエンドにしてollamaのLLMと会話する - 自分が2ヶ月前にまとめた内容であるが、すっかり忘れていて、思い出すのに苦労した。Open WebUIは、OllamaサーバとWebブラウザとの間をよしなに繋げてくれる。
- ollamaを使ってローカル環境でLLMを動かす - 上記の投稿の前日の記事で、OllamaをDockerで動かす内容である。
手順
モデルのダウンロード
情報源3.で公開されている量子化モデルで、4-bitの「Q 4_K_M」を以下のコマンドでダウンロードした。
$ wget https://huggingface.co/mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-gguf/resolve/main/cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-Q4_K_M.gguf
Ollamaサーバへの組み込み
先ずは、情報源5.の「docker-compose.ymlを作成」で示している通り、ollamaを起動する。
$ sudo docker compose up -d
次に、「LLMモデルを(ダウンロードし)実行」の通り、上記で起動したollamaコンテナに入る。
$ sudo docker exec -it ollama /bin/bash
以下は、コンテナ内での操作である。
# cd /root/.ollama
# ls -l
total 8777476
-rw-rw-r-- 1 1000 1000 68 Jan 28 05:20 Modelfile
-rw-rw-r-- 1 1000 1000 8988110464 Jan 28 05:19 cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-Q4_K_M.gguf
# cat Modelfile
FROM ./cyberagent-DeepSeek-R1-Distill-Qwen-14B-Japanese-Q4_K_M.gguf
上記の通り、ダウンロードしたモデル(.gguファイル)とModelfileをコンテナから参照できるように準備しておく。ここまで準備が出来たら、以下のコマンドで、ollamaサーバに組み込む。
# ollama create cyberagent-DS-14b-japanese -f Modelfile
組み込みの部分は、情報源5.の「ggufファイルをモデルとして組み込む」も併せて参照されたい。
Open WebUIを起動
$ ls -l
drwxrwxr-x 5 kenji kenji 4096 11月 23 11:19 data
-rw-rw-r-- 1 kenji kenji 243 11月 26 08:33 docker-compose.yml
$ cat docker-compose.yml
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
environment:
- OLLAMA_BASE_URL=http://192.168.11.4:11434
volumes:
- ./data:/app/backend/data
ports:
- 3000:8080
$ sudo docker compose up -d
Open WebUI起動の部分は、情報源4.の「Open WebUIを起動」も併せて参照されたい。
Webブラウザから接続
ここまでの操作で、Ollamaサーバ、Open WebUIがそれぞれ立ち上がっているので、手元のブラウザから「http://192.168.11.8:3000/」と入力すると、Open WebUIの起動画面が表示される。名前、メールアドレス、パスワードを入力すると、質問を受け付ける画面となる。
接続したら、左上の部分で、LLMモデルを変更して質問する。以下は回答部分の抜粋。
まとめ
質問への回答の量にびっくりしたが、他の質問を投げてみたところ、比較的コンパクトな回答であった。
今話題のDeepSeek-R1のCyber Agentによる日本語版の量子化されたモデルを試した。2ヶ月までに構築したOllama、Open WebUIのシステムを使ったが、モデルへの組み込むや、起動手順など、忘れていることが多く、過去にまとめておいたことが助けになった。