DeepSeek-R1-Distill-Qwen-14B/32Bをベースに日本語追加学習を行ったLLMを使う

モチベーション

しばらく、PINNsやそれに関連したOpenFOAMを勉強していたが、昨日LLM界隈で大きなニュースがあった。LLM界隈だけでなく株価にも影響するインパクトがあったDeep Seek-R1を使ってみることにした。そのままでは自分の環境では使えないので、量子化によりコンパクトされたLLMを使った。

今回、量子化モデルをOllamaとOpen WebUIを使ってブラウザから使うようにしたので、その内容をまとめる。

情報源

  1. ChatGPT超えの中国AI「DeepSeek-R1」の衝撃 - ascii.jpより。DeepSeek-R1の記事の一例として引用。
  2. サイバーエージェントからの発表 - DeepSeek-R1-Distill-Qwen-14B/32Bをベースに日本語データで追加学習を行ったLLMを公開したとのサーバーエージェントからの発表。
  3. mmnga/cyberagent-DeepSeek-R1-Distill-Qwen-14B-japanese-gguf - 上記のサイバーエージェント版を量子化されたモデル。HugginFaceに公開。
  4. Open WebUIをフロントエンドにしてollamaのLLMと会話する - 自分が2ヶ月前にまとめた内容であるが、すっかり忘れていて、思い出すのに苦労した。Open WebUIは、OllamaサーバとWebブラウザとの間をよしなに繋げてくれる。
  5. 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モデルを変更して質問する。以下は回答部分の抜粋。

Browser

まとめ

質問への回答の量にびっくりしたが、他の質問を投げてみたところ、比較的コンパクトな回答であった。

今話題のDeepSeek-R1のCyber Agentによる日本語版の量子化されたモデルを試した。2ヶ月までに構築したOllama、Open WebUIのシステムを使ったが、モデルへの組み込むや、起動手順など、忘れていることが多く、過去にまとめておいたことが助けになった。