ローカル環境(MacBook Pro)でDeepSeekを動かしたメモ
はじめに
今話題になっているDeepSeekをローカルで動かしたメモ。
ローカルで動かす理由は、プライバシーが漏れないようにするため。
動かした感想は、Intel最終版のMacではモデルによって非常に処理が遅い。
使用した環境
- MacBook Pro Intel Core i7
- 16GB RAM
- MacOS 15.2
今回使用したollamaの詳細は以下のURLを参照。
DeepSeekについては次のリンクを参照。
ollamaのインストール
Macでターミナルを起動して次のコマンドを実行してollamaをインストール。
$ brew install Ollama
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
:
:
==> Running `brew cleanup ollama`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
ollamaのファイルパスを確認
$ which ollama
/usr/local/bin/ollama
ollamaのバージョンを確認
まだサーバが起動されていないので、Warningが表示される。
$ ollama --version
Warning: could not connect to a running Ollama instance
Warning: client version is 0.5.7
ollamaサーバの起動
$ ollama serve
初回起動時はキーペアを生成する。
2回目以降の起動時にはこのメッセージは表示されなくなる。
Couldn't find '/Users/xxx'. Generating new private key.
Your new public key is:
:
:
Ollamaのデフォルトポートは11434
APIを利用するにはこのポートにアクセスする。
モデルのダウンロードと起動
command+nで別のターミナルを開いて次のコマンドを実行。
指定したモデルがローカルにない場合はダウンロードが始まる。
これは大規模モデル(14B)の例で、サイズは約9GB。
他のモデルをダウンロード/起動する場合は、以下の14b の部分を1.5b や7bとする。
それぞれのサイズは1.5bが1.1GB、7bが4.7GB。
$ ollama run deepseek-r1:14b
pulling manifest
:
:
verifying sha256 digest
writing manifest
success
>>> 您好!请问有什么可以帮助您的?如果您有任何问题或需要信息,请随时告诉我。
ダウンロードが完了すると >>> のプロンプトに続いて上記の中国語が表示される。
意味は「こんにちは! どうされましたか? ご質問や情報が必要な場合は、お気軽にお知らせください。」
ollamaクライアントのhelp
$ ollama run モデル名
で起動が完了すると>>>
のプロンプトが表示される。
このプロンプトに対して/?
と入力すると使用できるコマンドが表示される。
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
Use """ to begin a multi-line message.
>>> Send a message (/? for help)
>>>
>>>
モデルのリスト
現在インストールされているモデルの表示。
下記は3つののモデルをダウンロードした場合の例。
$ ollama list ~
NAME ID SIZE MODIFIED
deepseek-r1:1.5b a42b25d8c10a 1.1 GB About an hour ago
deepseek-r1:7b 0a8c26691023 4.7 GB About an hour ago
deepseek-r1:14b ea35dfe18182 9.0 GB 2 hours ago
モデルのディレクトリ
モデルは ~/.ollama/models
にダウンロードされる。
$ cd ~/.ollama/models
$ ls
blobs/ manifests/
質問例
>>>
のプロンプトに「日本語はできるか?」の質問を入力してみた。
>>> 日本語はできるか?
<think>
Alright, the user just asked if I can speak Japanese. They wrote "日
本語はできるか?", which means "Can you do Japanese?".
Since my primary language is Chinese and I have a good
understanding of English, but limited knowledge in Japanese, I need
to respond appropriately.
I should let them know that while I can understand some basic
Japanese, it's not something I'm fully proficient in. Maybe suggest
they switch to English for better assistance.
I'll make sure the response is friendly and clear, offering help in
other ways if needed.
</think>
はい、日本語もできますが、限ります。できるだけお手伝いしますが、英語
や中国語での対応の方がスムーズかもしれません。どのようなお手伝いが必
要ですか?
>>>
どうも、日本語は苦手らしい。
<think>から</think>の間はモデルの思考過程が表示される。
今回は<think>から</think>までが英語で表示されたが、中国語で表示される場合もある。
クライアントの終了は>>>
のプロプトに対してCTRL-Dを入力する。
モデルの違い(DeepSeek自身の回答)
DeepSeek-R1の1.5B、7B、14bモデルは、それぞれのパラメータ数(つまり「
サイズ」)が異なり、特徴もさまざまです。以下にそれぞれの特徴を簡単に
説明します。
1. DeepSeek-R1-1.5B
-
特徴:
- 1.5B(約1.5億件のパラメータ)と比較的小型なモデル。
- 性能は優れていますが、リソース消費量が少なく、動作速度が比較的速
い。 - 多様なタスクに対応できますが、特にシンプルなアプリケーションや中
小規模のプロジェクトに向いています。 - 複雑な文脈や高度に専門的な質問への対応能力はやや限られます。
2. DeepSeek-R1-7B
-
特徴:
- 7B(約7億件のパラメータ)と中規模のモデル。
- 性能が向上し、より高度なタスクや複雑な文脈に対応できます。
- 特定の専門分野での推理能力が強く、中小企業や研究機関での活用に向
いています。 - 資源消費量は増加しますが、DeepSeek-R1-1.5Bに比べて安定感と精度が
あります。
3. DeepSeek-R1-14B
-
特徴:
- 14B(約14億件のパラメータ)と大型なモデル。
- 最も高度な性能を持ち、非常に複雑なタスクや専門的な質問にも対応可
能です。 - 大企業や研究機関での高度なAIアプリケーションに適しています。
- 資源消費量が大きく、安定した 컴퓨팅リソースを必要とします。
総じて:
- 1.5B: 小型で軽量。基本的なタスクに向いています。
-
7B: 中途半端なサイズでバランスが良く、幅広い用途に対応できます
。 -
14B: 最大のサイズで最高の性能を誇りますが、リソース消費が大きい
点に注意が必要です。
それぞれのモデルは、用途やリソースによって選択することが重要です。
API利用サンプルコード
ollamaサーバが待ち受けているローカルホストの11434ポートにpythonでアクセスするサンプルコード
# ローカルのollamaサーバのAPIにアクセスするサンプルコード
# Feb.2nd 2025 IoT101
import requests
import json
from datetime import datetime
# 使用するモデル名
MODEL = 'deepseek-r1:14b'
# MODEL = 'gemma2'
# プロンプト
# PROMPT = 'What is the deepseek'
PROMPT = 'なぜ、空は青いか?'
# OllamaサーバのURL
ollama_url = "http://127.0.0.1:11434/api/generate"
starttime = datetime.now()
print("Start time: ", starttime.strftime('%Y-%m-%d %H:%M:%S'))
# POSTリクエストを送信
response = requests.post(
f"{ollama_url}",
json={"model": MODEL, "prompt": PROMPT},
stream=True
)
# レスポンスの確認
if response.status_code == 200:
print("Request successful:")
for line in response.iter_lines():
if line:
try:
decoded_line = line.decode('utf-8')
json_response = json.loads(decoded_line)
print(json_response['response'], end='')
except json.JSONDecodeError as e:
print("JSONDecodeError:", e)
else:
print("Error:", response.status_code, response.text)
endtime = datetime.now()
print("\nEnd time: ", endtime.strftime('%Y-%m-%d %H:%M:%S'))
print("Process time:", endtime - starttime)
実行結果
Start time: 2025-02-02 20:19:29
Request successful:
<think>
嗯,为什么天空是蓝色的呢?这个问题听起来很简单,但其实背后涉及不少科学知识。我记得以前老师提到过光的散射现象,可能和这个有关。
首先,阳光是由多种颜色组成的,也就是我们看到的彩虹七色:红、橙、黄、绿、蓝、靛、紫。每种颜色对应不同的波长,红色波长较长,紫色较短。
当太阳光进入地球的大气层时,会发生散射现象。散射是指光线碰到空气中的分子或其他微粒后改变方向的现象。这里主要涉及的是瑞利散射,这是由英国物理学家瑞利勋爵提出的理论。
根据瑞利散射的原理,散射的程度与光波长的四次方成反比。也就是说,波长越短的颜色被散射得越多。紫色和蓝色的波长较短,所以它们的光会被更多地散射到各个方向。然而,我们看到天空是蓝色而不是紫色,这是因为人眼对蓝色光更为敏感,而紫色光虽然也被大量散射,但由于其波长短,散射效率略低于蓝色。
另外,大气中的气体分子主要是氮气和氧气,这些分子的大小远小于可见光的波长,因此瑞利散射在这种情况下非常有效。如果大气中存在更多的较大颗粒,比如灰尘或水滴,那么米氏散射就会起作用,这时天空的颜色可能会发生变化,比如在日出或日落时分,由于阳光穿过更厚的大气层,较长的红色和橙色波长更容易被散射,使得天空呈现这些颜色。
总结一下,天空之所以呈蓝色,主要是因为太阳光中的蓝色成分在大气中被大量散射,而人眼对蓝色更为敏感。这种现象是由瑞利散射所决定的,散射的程度与光波长的四次方成反比,导致蓝色光在整个天空中更为显著。
</think>
空の青さは、太陽光が地球の大気層で起こる「瑞利散乱」(レライ散乱)現象によって生じます。太陽光は赤、橙、黄、緑、青、靛、紫などの七色の光を含み、それぞれ異なる波長を持っています。
**1. 光の散乱**
- 太陽光が大気層に入ると、空気中の分子(主に窒素(N₂)と酸素(O₂))や小さな微粒に出会います。
- これらの粒子は太陽光を「散乱」させます。この散乱は「瑞利散乱」と呼ばれます。
**2. 波長の関係**
- 瑞利散乱の特性は、光の波長に関連しています。短い波長(青や紫)の光は長い波長(赤や橙)の光よりも多く散乱されます。
- 具体的には、散乱される光の量は波長の4乗に反比例します。つまり、波が半分になると、散乱される光は16倍になります。
**3. 青色光の優占**
- 赤い光は比較的長い波長を持ち、あまり散乱されません。
- 青い光は短い波長を持っているため、大量に散乱されます。しかし、人間の目が青よりも紫や紫外線を感知するのに比べてずっと敏感であるため、空は青く見えます。
**4. 日没時分の色違い**
- 日没時には太陽が地平線近くまで下り、光がより厚い大気層を通ります。
- これにより、青よりも赤や橙色の光が多く散乱され、空はこれらの色に変わります。
**要約:**
天空が青い理由は、瑞利散乱による青色光の大量な散乱と人眼の特性です。太陽光のスペクトル中、青色光が他の色よりも多く散乱され、それが私たちが見ている空の青さとなります。
End time: 2025-02-02 20:38:22
Process time: 0:18:52.353055
上記のように、モデルをdeepseek-r1:14bにした場合、MacBook Pro Intel Core i7 16GB RAMでProcess time: 0:18:52.353055となり、約19分ほど掛かった。
おわりに
ollamaクライアントは>>>
のプロンプトに対してCTRL-Dで終了することができる。
サーバはCTRL-Cで終了することができる。
MシリーズのMacではどれぐらい時間がかかるのか、ぜひ、レポートをお願いします。
Discussion