← logs

OllamaでDeepSeek-R1をローカルで動かしてみた

2025年2月3日

MacBook Air M3 上で Ollama を使って DeepSeek-R1 を動かし、Open WebUI でローカルLLM環境を作った記録

tags: AI, LLM, Docker

Ollamaを使って、DeepSeek-R1をローカルで動かしてみた。

目的は、手元のMacでLLMを動かす流れを確認することだった。 ついでに、Open WebUIを使ってChatGPTのようなUIから触れる状態も作った。

この記事は、成功手順というより、ローカルLLMを触ったときの検証ログである。

前提

試した環境は以下である。

machine:
  MacBook Air M3
  memory: 24GB

runtime:
  Ollama

models:
  llama3.2
  deepseek-r1
  DeepSeek-R1-Distill-Qwen-14B-Japanese gguf

ui:
  Open WebUI
  Docker Compose

強いGPUを持っている環境ではない。 そのため、速度や快適さはかなり控えめである。

やりたかったこと

やりたかったことは次の3つである。

1. Ollamaを入れる
2. DeepSeek-R1をローカルで動かす
3. Open WebUIからブラウザで使う

ローカルLLMは、API keyなしで手元だけで試せるのが良い。 一方で、モデルサイズ、メモリ、CPU/GPU性能の影響を強く受ける。

まずは動くところまで確認することにした。

Ollamaを入れる

OllamaはHomebrewで入れた。

brew install --cask ollama

versionを確認すると、最初はOllama instanceに接続できないというwarningが出た。

ollama --version
Warning: could not connect to a running Ollama instance
Warning: client version is 0.5.7

clientは入っているが、Ollamaのserver側がまだ動いていない状態である。

llama3.2で動作確認する

まずはDeepSeek-R1ではなく、llama3.2 でOllama自体が動くか確認した。

ollama run llama3.2

初回はmodelのpullが走る。

pulling manifest
pulling dde5aa3fc5ff... 100%
verifying sha256 digest
writing manifest
success

日本語で簡単に話しかけると、応答は返ってきた。

>>> こんにちは
こんにちは!どういたしまして?何か相談することがあれば、ぜひお聞きください。

この時点で、Ollama自体は動いていると判断した。

ただし、試しに大学の学科について聞くと、内容はかなり怪しかった。 固有名詞や学科名が混ざり、正確な情報源としては使えない出力だった。

ローカルで動いたことと、回答が正しいことは別問題である。

DeepSeek-R1を動かす

次にDeepSeek-R1を試した。

ollama run deepseek-r1

初回はmodelのpullが走る。

pulling manifest
pulling 96c415656d37... 100%
verifying sha256 digest
writing manifest
success

日本語で話しかけると、<think> を含む出力が返ってきた。

>>> こんにちは
<think>

</think>

greeting! How can I assist you today?

日本語で聞いても、返答には英語や不自然な多言語混在が出た。

大阪工業大学(大阪府立大学)の情報科学部は、学部制の学科です。
信息科学部は、情報技術や情報 managedefg technologies...

この出力は、検証ログとしては面白い。 しかし、回答内容をそのまま信頼できる状態ではなかった。

少なくともこの環境・このmodelでは、日本語の事実確認用途には注意が必要である。

日本語向けmodelも試す

日本語向けの量子化modelも試した。

ollama run hf.co/bluepen5805/DeepSeek-R1-Distill-Qwen-14B-Japanese-gguf:Q5_K_M

日本語応答を期待するなら、こうした日本語向けmodelを選ぶ方が自然である。

ただし、手元のMacBook Air M3では、快適に使えるほど速いとは言いにくかった。

強いGPUを持っていない環境では、ローカルLLMの体験はmodelサイズにかなり左右される。

Open WebUIでブラウザから使う

CLIだけではなく、ChatGPTのようなUIで触るためにOpen WebUIも動かした。

Docker Composeは次のようにした。

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - open-webui:/app/backend/data
    environment:
      - WEBUI_AUTH=False
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: always

volumes:
  ollama:
  open-webui:

open-webui を使うと、ブラウザからローカルのOllamaを触れる。

CLIよりも会話ログを見やすく、modelを触る体験としてはかなり分かりやすい。

ただし、WEBUI_AUTH=False は手元検証用の設定である。 外部公開する環境では認証なしにしない方がよい。

分かったこと

今回分かったことは以下である。

Ollamaを使うとローカルLLMの起動はかなり簡単である
modelのpullから実行までの流れは分かりやすい
Open WebUIを使うとブラウザUIで触れる
日本語応答の品質はmodel選択に強く依存する
手元のMacBook Air M3では大きめのmodelは重い

特に大事なのは、ローカルで動いたことと、実用的に速いこと、回答が正しいことは別問題だという点である。

残っている課題

残っている課題は以下である。

日本語で安定して使えるmodelの選定
量子化modelごとの速度比較
CPU / GPU / memory使用量の確認
Open WebUIを安全に公開する場合の認証設定
RAGやローカル文書検索との組み合わせ

今回は「動かす」ことを優先した。 次にやるなら、modelごとの応答品質と速度を同じpromptで比較するのがよい。

まとめ

Ollamaを使うと、DeepSeek-R1のようなmodelをローカルで試すところまではかなり簡単である。

一方で、手元のMacBook Air M3では大きめのmodelを快適に動かすのは難しかった。 出力も、特に日本語の事実確認では不自然な混在が出た。

そのため、今回の結論はこうである。

ローカルLLMの検証環境としては面白い
CLIだけでなくOpen WebUIを使うと触りやすい
回答品質と速度はmodel選択と実行環境に強く依存する

強い環境を持っていないので、体感としてはChatGPT-4が出たての頃のような、少し待ちながら使う感覚だった。

参考

関連ログ