GPT級のAIをローカルで使用！今話題のDeepSeekを使ってみた

# 本記事の目的
皆さん、AI使ってますか？？
AIをあまり使ってない方はおそらく、
**情報流出が怖い！プライバシー無くなりそう！**
と思って、AIに抵抗感があることでしょう。
そこで！
本記事では、そういった心配をせずに使えるようにAIを**ローカル**で、すなはち
**ネットに繋げずに使える!**
ような方法を紹介して、実際の使用感を伝えていきます。


**本当に簡単なのでぜひこの記事でAIデビューしてください！！**

# 使用モデル
今話題のDeepSeek-R1をローカルで使ってみました。
このDeepSeekというモデルは推論タスク全体で OpenAI-o1 に匹敵するパフォーマンスを実現するモデルで、以下のように複数のタスクにおいて、o1を超えるような性能を有しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/80641487-a454-dc0a-fab3-bf898e91e435.png)

参照
https://huggingface.co/deepseek-ai/DeepSeek-R1


# 方法
以下に方法をローカルでの使用方法を記します。
## 使用条件

・Mac Air M3 メモリ16GB

:::note warn
OSはWindows,Linuxでも可能
:::

・Docker Desktopがインストールされていること

:::note 
手順３以降で必要。手順２まででもモデルは使用可能
:::


Dockerのインストール方法は下記を参照してください
https://www.docker.com/ja-jp/

### 手順１　Ollamaのインストール
以下のサイトからOllamaをダウンロードしてください
https://ollama.com/download/mac
![スクリーンショット 2025-01-23 1.33.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/4b2f9e00-d751-1041-427e-32fd2c88d3f1.png)
ダウンロードが終了したら、Ollamaの指示に従ってインストールしてください

### 手順２　DeepSeekのダウンロード
以下のコマンドをターミナルで実行してください
```shell
ollama run deepseek-r1:8b
```
これを実行すると以下の画像のような出力が出てくると思います。
![スクリーンショット 2025-01-23 1.54.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/3719f07c-7aa4-0ef2-5aa8-ef96ab8052de.png)

Successというメッセージが出たら完了です！！
<details><summary>エラーが出る場合</summary>
    実行エラーが発生する場合は

```shell
ollama serve
```
を実行して、ollamaを起動してから、ollama run deepseek-r1:8bを実行しましょう。
</details>

実はこれでもう使えるようになっています！
例えば、ターミナル上で「おはよう」と打つと以下のように返答してくれます。
![スクリーンショット 2025-01-23 2.03.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/48ee9953-e5b3-4870-54b9-08821d737f79.png)


ですが、ターミナル上だと少し使いづらいと思うのでWebブラウザ上で使えるようにします。
ここで使うのが**Docker**になります。
（近々Dockerの説明記事も書こうと思いますが、ここでは説明は省略。）

## 手順3　Docker Composeファイル作成
まずはインストール済みのDocker Desktopを開きます。
次にWebブラウザ(Open Web UI)を立ち上げるための設定ファイルを作成します。
以下のようなdocker-compose.ymlファイルを作成してください。

```yaml:docker-compose.yml
version: '3.8'

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "127.0.0.1:3000:8080"
    volumes:
      - open-webui:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"

volumes:
  open-webui:
```

## 手順4 Docker Composeでコンテナを起動
先ほどdocker-compose.ymlファイルを作成した場所で以下のコマンドを実行します。

```shell
docker compose up -d
```


起動したら下記のようなログが出ます。
![スクリーンショット 2025-01-23 2.23.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/81cb76cc-37c6-0a0d-1398-5e337a7503a3.png)


## 手順5 Webブラウザを開く

手順4がクリアできたら、ブラウザで以下のURLにアクセスしてOpen WebUIを開いてください。

http://localhost:3000/

初回アクセス時にはAdminの

ユーザー名
メールアドレス(@~.comの形式の必要あり)
パスワード
の入力が求められますが、任意の文字を入力して問題ありません。
筆者も以下のように適当に入力しました。
![スクリーンショット 2025-01-23 2.29.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/e4275d2c-7f04-5e9d-be74-cf89be3b43bb.png)


入力が完了したら、すぐにDeepseek R1とのチャットが開始できます。

![スクリーンショット 2025-01-23 2.32.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/2a510217-4c61-889d-33a7-86122091fda0.png)

せっかくなので、AIのベンチマークに使われるAIMEの2024年の問題を解かせてみました。
https://mathlog.info/articles/fA5Hi3FJiWbRjfRFh8qz

```
AliceとBobがゲームを行います．はじめにn個の石の山があり，Aliceを先手として交互に
1個または4個の石を山から取り除きます．最後の石を取り除いた方が勝ちです．
Aliceの行動にかかわらず，Bobが必ず勝てるような
2024以下のnの個数を求めてください．
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3795703/20437061-c110-dab5-d551-d0ff896021ef.png)

出力が中国語になってしまいました笑
ここら辺はちゃんと指定しないと、自動で中国語になってしまうかもしれません。
そして推論結果は、
```
石の数が 5 の倍数の場合、アリスは先手として勝つことができず、ボブがゲームに勝ちます。石の数が 5 の倍数でない場合、アリスは適切な戦略を講じることで勝つことができます
```


一方GPTに解かせると
```
2024以下の整数 n のうち、Bobが必ず勝てる（負け状態）数は 810個 です。
```
と一つに絞る結果となりました。
ちなみに答えは809個となるので、GPTの方がこの問題に関しては近しい結果となることが分かりました。
### 使用感
結果は正解に辿り着けなかったものの、考察過程などはDeepSeekはとても丁寧に出力しており、推論の様子はよく分かりましたね。
しかし一つ問題があるとするならば、時間がかかることですかね。この問題の推論結果を出すのに10分ほど要しました。おそらく使用するモデルやPCスペックにもよりますが、今後使用する上での課題に感じました。

とはいえ、
ローカルで高性能AIを使えるのは非常に便利なのでぜひ使ってみてください！！


また、以下の記事はより丁寧に説明しているので是非参考にしてください。
参考になるサイト

https://zenn.dev/m2/articles/621cf648fc2bcd

https://note.com/cppp_cpchan/n/n3c1039c80dd0