DeepSeek ローカルデプロイ完全ガイド:入門から実践まで
DeepSeekシリーズモデルのオープンソース化により、多くの開発者や企業がこれらの強力なAIモデルをローカル環境で実行したいと考えています。本ガイドでは、ゼロから3つの主流ローカルデプロイ方法を詳しく説明し、最適なアプローチの選択をサポートします。
なぜローカルデプロイを選ぶのか?
ローカルデプロイを決定する前に、そのコアメリットを理解しましょう。
データプライバシーとセキュリティ
ローカルデプロイでは、すべてのデータ(プロンプト、会話内容、ビジネス文書)がデバイスから外に出ません。金融、医療、法律など機密情報を扱う業界にとって、これはコンプライアンス要件の最適解です。データ転送中の漏洩リスクを心配する必要がなく、サードパーティのデータ処理契約に依存する必要もありません。
超低レイテンシー
ローカル推論はネットワークの往復遅延を排除します。API呼び出しは通常200-500msのネットワークオーバーヘッドがありますが、ローカル推論ではほぼ即時の応答が可能です。コード補完やチャットアシスタントなどのリアルタイムアプリケーションでは、この差は非常に顕著です。
長期的なコストメリット
初期のハードウェア投資は大きいですが、長期的には高頻度利用シナリオでローカルデプロイのコストはAPI呼び出しをはるかに下回ります。1日100万トークンの使用量で比較すると:
| ソリューション | 月額コスト | 年間コスト |
|---|---|---|
| DeepSeek API呼び出し | ~$300 | ~$3,600 |
| ローカル(RTX 4090) | ~$15(電気代) | ~$180 + ハードウェア初期投資 |
| ローカル(Mac Studio M4 Ultra) | ~$8(電気代) | ~$96 + ハードウェア初期投資 |
オフライン利用可能
ローカルデプロイにより、インターネットのない環境でもAI機能を利用できます——飛行機内、遠隔地、エアギャップネットワークでも問題ありません。
ハードウェア要件
モデルの規模によってハードウェア要件は異なります。以下は詳細な推奨構成です。
NVIDIA GPU
NVIDIA GPUは現在最も成熟したローカルデプロイエコシステムを持ち、CUDAの互換性に優れています。
| モデル | 最小VRAM | 推奨VRAM | 推奨GPU |
|---|---|---|---|
| DeepSeek-R1-1.5B (4-bit) | 2GB | 4GB | RTX 3060 |
| DeepSeek-R1-7B (4-bit) | 6GB | 8GB | RTX 4060 |
| DeepSeek-R1-8B (4-bit) | 6GB | 8GB | RTX 4070 |
| DeepSeek-R1-14B (4-bit) | 10GB | 12GB | RTX 4070 Ti |
| DeepSeek-R1-32B (4-bit) | 20GB | 24GB | RTX 4090 |
| DeepSeek-R1-70B (4-bit) | 40GB | 48GB | A6000 / 2x RTX 4090 |
| DeepSeek-V3 (4-bit) | 160GB | 192GB | 4x A100 80GB |
AMD GPU
AMD GPUはROCmを通じて大規模モデル推論をサポートしており、互換性は継続的に向上しています。
| 推奨GPU | VRAM | 適用モデル |
|---|---|---|
| RX 7900 XTX | 24GB | 7B-14B |
| MI250X | 128GB | 70B |
| MI300X | 192GB | V3フルモデル |
Apple Silicon
Apple Siliconのユニファイドメモリアーキテクチャは、LLM推論において独自の優位性を持っています——システムメモリ(最大512GB)をモデルのロードに使用できます。
| チップ | ユニファイドメモリ | 適用モデル | 予想速度 |
|---|---|---|---|
| M2/M3 Pro | 18-36GB | 7B-14B | 10-20 tokens/s |
| M2/M3 Max | 32-96GB | 14B-32B | 15-25 tokens/s |
| M4 Pro | 24-48GB | 14B-32B | 20-35 tokens/s |
| M4 Max | 36-128GB | 32B-70B | 25-40 tokens/s |
| M4 Ultra | 192-512GB | 70B-V3フル | 30-50 tokens/s |
メモリ(RAM)要件
GPU推論を使用する場合でも、モデルのロードとコンテキスト管理には十分なシステムメモリが重要です:
- 7Bモデル:最低16GB、推奨32GB
- 14B-32Bモデル:最低32GB、推奨64GB
- 70Bモデル:最低64GB、推奨128GB
方法1:Ollamaデプロイ(最も簡単)
Ollamaは現在最もシンプルなローカルLLMデプロイツールで、ワンクリックインストールとワンコマンドでモデルを実行できます。
Ollamaのインストール
macOS:
# Homebrew でインストール brew install ollama
Linux:
# ワンクリックインストールスクリプト curl -fsSL https://ollama.com/install.sh | sh
Windows:
ollama.com/downloadからインストーラーをダウンロードして実行します。
DeepSeekモデルのダウンロードと実行
# DeepSeek-R1 7Bを実行(入門推奨) ollama run deepseek-r1:7b # DeepSeek-R1 14Bを実行 ollama run deepseek-r1:14b # DeepSeek-R1 32Bを実行(24GB以上のVRAMが必要) ollama run deepseek-r1:32b # DeepSeek-R1 70Bを実行(48GB以上のVRAMまたは大容量メモリMacが必要) ollama run deepseek-r1:70b
Ollama APIの使用
Ollamaはデフォルトでlocalhost:11434にAPIサービスを提供し、OpenAI API形式に互換性があります:
import openai # クライアントを作成し、ローカルOllamaサービスを指定 client = openai.OpenAI( base_url="http://localhost:11434/v1", # Ollamaローカルアドレス api_key="ollama" # Ollamaは本物のAPI Keyは不要 ) # チャットリクエストを送信 response = client.chat.completions.create( model="deepseek-r1:7b", # モデル名を指定 messages=[ {"role": "system", "content": "あなたは親切なアシスタントです。"}, {"role": "user", "content": "Transformerアーキテクチャについて説明してください。"} ], temperature=0.7, # 出力のランダム性を制御 max_tokens=2048 # 最大出力長 ) # 回答内容を表示 print(response.choices[0].message.content)
Ollamaの一般的なコマンド
# ダウンロード済みモデルの一覧 ollama list # モデルの詳細情報を表示 ollama show deepseek-r1:7b # モデルを削除してスペースを解放 ollama rm deepseek-r1:7b # バックグラウンドでOllamaサービスを起動 ollama serve # モデルをコピーしてリネーム ollama cp deepseek-r1:7b my-deepseek # 実行中のモデルを表示 ollama ps
カスタムModelfile
Modelfileでモデルの動作をカスタマイズできます:
# Modelfileを作成 FROM deepseek-r1:7b # システムプロンプトを設定 SYSTEM """あなたはPythonとJavaScriptに精通したプロのプログラミングアシスタントです。""" # モデルパラメータを調整 PARAMETER temperature 0.3 PARAMETER top_p 0.9 PARAMETER num_ctx 8192
# Modelfileに基づいてカスタムモデルを作成 ollama create my-coding-assistant -f Modelfile # カスタムモデルを実行 ollama run my-coding-assistant
方法2:vLLMデプロイ(高性能推論)
vLLMはPagedAttention技術で効率的なメモリ管理を実現する高性能LLM推論・サービングフレームワークです。本番環境や高い同時実行シナリオに特に適しています。
vLLMのインストール
# 仮想環境を作成(推奨) python -m venv vllm-env source vllm-env/bin/activate # vLLMをインストール(NVIDIA GPU + CUDA 12.1以上が必要) pip install vllm
vLLM推論サーバーの起動
# OpenAI互換APIサービスを起動 python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9 \ --dtype auto \ --trust-remote-code
vLLMの高度な設定
# マルチGPUテンソル並列(大規模モデル向け) python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \ --tensor-parallel-size 2 \ --max-model-len 16384 \ --gpu-memory-utilization 0.95 \ --enable-prefix-caching \ --host 0.0.0.0 \ --port 8000 # 量子化モデルでVRAM使用量を削減 python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --quantization awq \ --max-model-len 8192 \ --host 0.0.0.0 \ --port 8000
vLLM APIの呼び出し
import openai # ローカルvLLMサービスに接続 client = openai.OpenAI( base_url="http://localhost:8000/v1", # vLLMローカルアドレス api_key="not-needed" # ローカルデプロイではAPI Key不要 ) # ストリーミング出力の例 stream = client.chat.completions.create( model="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", messages=[ {"role": "user", "content": "Pythonでクイックソートアルゴリズムを書いてください"} ], stream=True, # ストリーミング出力を有効化 temperature=0.3 ) # ストリーミング出力を逐次表示 for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)
vLLM vs Ollama 比較
| 特徴 | Ollama | vLLM |
|---|---|---|
| インストール難易度 | 非常に簡単 | 中程度 |
| パフォーマンス | 良好 | 優秀(+20-50%) |
| 同時実行サポート | 基本的 | 優秀(本番レベル) |
| メモリ効率 | 普通 | 優秀(PagedAttention) |
| Apple Silicon | 完全サポート | 非対応 |
| 最適な用途 | 個人利用、開発テスト | 本番環境、高い同時実行 |
方法3:Dockerデプロイ
Dockerデプロイは優れた環境分離と移植性を提供し、チームコラボレーションや本番デプロイに最適です。
Ollama Dockerイメージの使用
# Ollama公式Dockerイメージをプル docker pull ollama/ollama # CPUモードで実行 docker run -d \ --name ollama \ -v ollama_data:/root/.ollama \ -p 11434:11434 \ ollama/ollama # NVIDIA GPUモードで実行(nvidia-container-toolkitが必要) docker run -d \ --name ollama-gpu \ --gpus all \ -v ollama_data:/root/.ollama \ -p 11434:11434 \ ollama/ollama # コンテナに入ってモデルをダウンロード・実行 docker exec -it ollama-gpu ollama run deepseek-r1:7b
Docker Composeによるオーケストレーション
docker-compose.ymlファイルを作成します:
version: '3.8' services: # Ollama推論サービス ollama: image: ollama/ollama:latest container_name: deepseek-ollama ports: - "11434:11434" volumes: - ollama_data:/root/.ollama # モデルデータの永続化 deploy: resources: reservations: devices: - driver: nvidia count: all # 利用可能なすべてのGPUを使用 capabilities: [gpu] restart: unless-stopped # Open WebUI - Webチャットインターフェースを提供 open-webui: image: ghcr.io/open-webui/open-webui:main container_name: deepseek-webui ports: - "3000:8080" environment: - OLLAMA_BASE_URL=http://ollama:11434 # Ollamaサービスに接続 volumes: - webui_data:/app/backend/data depends_on: - ollama restart: unless-stopped volumes: ollama_data: # モデルストレージボリューム webui_data: # WebUIデータボリューム
# すべてのサービスを起動 docker compose up -d # サービスの状態を確認 docker compose ps # ログを表示 docker compose logs -f ollama # サービスを停止 docker compose down
vLLM Dockerデプロイ
# vLLM公式Dockerイメージを使用 docker run -d \ --name vllm-deepseek \ --gpus all \ -v huggingface_cache:/root/.cache/huggingface \ -p 8000:8000 \ vllm/vllm-openai:latest \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --max-model-len 8192 \ --gpu-memory-utilization 0.9
量子化バージョンの選択
量子化はモデルサイズとメモリ要件を削減するための重要な技術です。異なる量子化精度は、品質とリソース消費の間で異なるトレードオフを提供します。
量子化精度の比較
| 精度 | モデルサイズ(7B) | VRAM使用量 | 品質低下 | 推論速度 | 適用場面 |
|---|---|---|---|---|---|
| FP16(オリジナル) | ~14GB | ~16GB | なし | ベースライン | 品質重視、VRAM十分 |
| 8-bit (INT8) | ~7GB | ~9GB | 極小 | +10-20% | バランス重視 |
| 4-bit (Q4_K_M) | ~4GB | ~6GB | 小さい | +30-50% | VRAM不足時の推奨 |
| 4-bit (Q4_0) | ~3.8GB | ~5.5GB | 小さい | +40-60% | 極限のVRAM制約 |
| 3-bit | ~2.8GB | ~4.5GB | 顕著 | +50-70% | 非推奨 |
| 2-bit | ~2GB | ~3.5GB | 深刻 | +60-80% | テスト用のみ |
どう選ぶべきか?
推奨戦略:
- VRAM >= モデルFP16サイズの1.2倍 → FP16で最高品質を獲得
- VRAMが厳しいがINT8モデルサイズより大きい → 8-bit量子化
- VRAMが限られている → 4-bit量子化(Q4_K_M)、最もコスパの良い選択
- 極限シナリオ → Q4_0、わずかな品質低下を許容
Ollamaでの量子化選択
# Ollamaはデフォルトでq4_K_M量子化を使用(ほとんどのシナリオに適合) ollama run deepseek-r1:7b # 量子化バージョンを指定 ollama run deepseek-r1:7b-q8_0 # 8-bit量子化 ollama run deepseek-r1:7b-q4_K_M # 4-bit量子化(デフォルト) ollama run deepseek-r1:7b-fp16 # FP16オリジナル精度
パフォーマンスベンチマーク
以下は、異なるハードウェア構成でDeepSeekモデルを実行した際の実測パフォーマンスデータ(tokens/s、生成速度)です。
DeepSeek-R1-7B(4-bit量子化)
| ハードウェア | 初回トークンレイテンシー | 生成速度 | 備考 |
|---|---|---|---|
| RTX 3060 12GB | ~150ms | 35-45 tokens/s | エントリーレベルGPU |
| RTX 4060 8GB | ~120ms | 45-55 tokens/s | コスパ最良 |
| RTX 4070 Ti 12GB | ~80ms | 60-75 tokens/s | 推奨構成 |
| RTX 4090 24GB | ~50ms | 90-110 tokens/s | トップパフォーマンス |
| M3 Pro 18GB | ~200ms | 18-25 tokens/s | MacBook Pro |
| M4 Pro 24GB | ~150ms | 28-35 tokens/s | 最新Mac |
| M4 Max 48GB | ~100ms | 35-45 tokens/s | ハイエンドMac |
DeepSeek-R1-32B(4-bit量子化)
| ハードウェア | 初回トークンレイテンシー | 生成速度 | 備考 |
|---|---|---|---|
| RTX 4090 24GB | ~200ms | 25-35 tokens/s | ギリギリ収まる |
| A6000 48GB | ~150ms | 35-45 tokens/s | プロフェッショナルGPU |
| 2x RTX 4090 | ~180ms | 40-55 tokens/s | デュアルGPU並列 |
| M4 Max 64GB | ~300ms | 18-25 tokens/s | ユニファイドメモリの優位性 |
| M4 Ultra 192GB | ~200ms | 30-40 tokens/s | Mac最強構成 |
DeepSeek-R1-70B(4-bit量子化)
| ハードウェア | 初回トークンレイテンシー | 生成速度 | 備考 |
|---|---|---|---|
| 2x RTX 4090 48GB | ~500ms | 12-18 tokens/s | VRAMギリギリ |
| A100 80GB | ~300ms | 25-35 tokens/s | データセンターグレード |
| 2x A100 80GB | ~200ms | 40-55 tokens/s | 高同時実行推奨 |
| M4 Ultra 192GB | ~400ms | 15-22 tokens/s | 1台のMacで70B |
Apple Silicon(M4 Ultra)でのパフォーマンス
Apple M4 Ultraは、現在個人ユーザーが入手できる最も強力なローカル推論プラットフォームの一つです。192GBのユニファイドメモリにより、70Bクラスのモデルを実行でき、完全なDeepSeek-V3のロードも試みることができます。
M4 Ultraの独自の優位性
- ユニファイドメモリアーキテクチャ:CPUとGPUがメモリを共有し、データコピー不要で、モデルロード効率が極めて高い
- 大容量メモリ帯域幅:M4 Ultraは最大819.2 GB/sのメモリ帯域幅を提供し、推論速度を大幅に向上
- 優れた電力効率:システム全体の消費電力はわずか60-150Wで、NVIDIA GPUソリューションをはるかに下回る
- 静音動作:Mac Studioはほぼ無音で動作し、オフィスや家庭環境に最適
- すぐに使える:OllamaがMetalをネイティブサポートし、CUDA設定不要
M4 Ultraベンチマーク結果
テスト環境:Mac Studio M4 Ultra, 192GB ユニファイドメモリ, macOS 15.4
DeepSeek-R1-7B (Q4_K_M):
├── ロード時間: 1.2s
├── 初回トークン: ~80ms
├── 生成速度: 42 tokens/s
└── メモリ使用量: ~5GB
DeepSeek-R1-32B (Q4_K_M):
├── ロード時間: 8.5s
├── 初回トークン: ~200ms
├── 生成速度: 32 tokens/s
└── メモリ使用量: ~20GB
DeepSeek-R1-70B (Q4_K_M):
├── ロード時間: 25s
├── 初回トークン: ~400ms
├── 生成速度: 18 tokens/s
└── メモリ使用量: ~42GB
DeepSeek-V3-671B (Q4_K_M, 実験的):
├── ロード時間: ~5min
├── 初回トークン: ~3s
├── 生成速度: 2-4 tokens/s
└── メモリ使用量: ~170GB
M4 Ultraデプロイの推奨事項
# Ollamaをインストール(Metal加速をネイティブサポート済み) brew install ollama # 推奨の32Bモデルを実行(M4 Ultraの最適バランスポイント) ollama run deepseek-r1:32b # 192GBメモリがあれば70Bも試せる ollama run deepseek-r1:70b # 並列数を設定してM4 Ultraの計算能力を最大限活用 OLLAMA_NUM_PARALLEL=4 ollama serve
API呼び出しとのコスト比較
シナリオ1:個人開発者(1日約5万トークン)
| ソリューション | 月額コスト | 年間コスト | 備考 |
|---|---|---|---|
| DeepSeek API | ~$22 | ~$264 | 従量課金、柔軟 |
| Ollama + RTX 4060 | ~$5(電気代) | $60 + $300(ハードウェア) | 初年度$360、以降年$60 |
| Ollama + M4 Pro Mac | ~$3(電気代) | $36 + $2,399(ハードウェア) | 長期的にはコスパ良好 |
結論:個人の軽い利用では、APIの方がコスパが良い。
シナリオ2:小規模チーム(1日約50万トークン)
| ソリューション | 月額コスト | 年間コスト | 備考 |
|---|---|---|---|
| DeepSeek API | ~$220 | ~$2,640 | 安定、メンテナンス不要 |
| vLLM + RTX 4090 | ~$15(電気代) | $180 + $1,600(ハードウェア) | 1年以内にROI達成 |
| vLLM + A6000 | ~$20(電気代) | $240 + $4,500(ハードウェア) | より大きなモデル、より良い同時実行 |
結論:高頻度利用では、ローカルデプロイが1年以内にハードウェアコストを回収。
シナリオ3:エンタープライズ(1日約500万トークン)
| ソリューション | 月額コスト | 年間コスト | 備考 |
|---|---|---|---|
| DeepSeek API | ~$2,200 | ~$26,400 | レート制限の可能性 |
| vLLM + 4x A100 | ~$200(電気代) | $2,400 + $60,000(ハードウェア) | 2年以内にROI、完全な制御 |
| クラウドGPU(オンデマンド) | ~$3,000 | ~$36,000 | 柔軟、ハードウェアメンテナンス不要 |
結論:エンタープライズレベルの高頻度利用では、自前の推論クラスターが長期的に最もコスパが良い。
コスト判断ツリー
1日あたりのトークン使用量は?
├── < 1万トークン → APIを使用、ローカルデプロイは不要
├── 1-10万トークン → プライバシー要件次第
│ ├── プライバシー必要 → ローカルデプロイ(Ollama + コンシューマーGPU)
│ └── プライバシー不要 → APIの方が便利
├── 10-100万トークン → ローカルデプロイにコストメリット
│ ├── 個人/小規模チーム → Ollama + RTX 4090
│ └── 高同時実行が必要 → vLLM + プロフェッショナルGPU
└── > 100万トークン → ローカルデプロイを強く推奨
├── 中程度の予算 → vLLM + マルチGPUコンシューマー構成
└── 十分な予算 → vLLM + A100/H100クラスター
よくある問題のトラブルシューティング
問題1:モデルのダウンロードが遅い
# Ollamaのミラーソースを設定(中国のユーザー向け) export OLLAMA_HOST=https://ollama.mirrors.example.com # または手動でモデルをダウンロードしてインポート ollama create deepseek-r1:7b -f /path/to/Modelfile
HuggingFaceのモデルファイルがある場合、Modelfileでローカルのggufファイルパスを指定することもできます。
問題2:CUDAメモリ不足(OOM)
# GPU VRAM使用率を下げる python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --gpu-memory-utilization 0.8 \ # 0.9から0.8に下げる --max-model-len 4096 # コンテキスト長を短くする # またはより積極的な量子化を使用 ollama run deepseek-r1:7b-q4_0 # Q4_K_Mの代わりにQ4_0を使用
問題3:Apple Siliconでの速度が遅い
# Metal加速が使用されていることを確認(Ollamaではデフォルトで有効) # GPUが正しく使用されているか確認 ollama run deepseek-r1:7b --verbose # 他のメモリを消費するアプリを閉じて、モデル用のユニファイドメモリを解放 # アクティビティモニタでメモリプレッシャーを確認 # OllamaのGPUレイヤー数を増やす OLLAMA_NUM_GPU=999 ollama run deepseek-r1:7b
問題4:DockerコンテナがGPUにアクセスできない
# NVIDIA Container Toolkitをインストール sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker # GPUが利用可能か確認 docker run --rm --gpus all nvidia/cuda:12.1-base nvidia-smi # まだ問題がある場合、Dockerデーモンの設定を確認 sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
問題5:モデルの出力品質が悪い
- 量子化精度を確認:低すぎる量子化(2-bitなど)を使用すると品質が著しく低下します。少なくともQ4_K_Mを使用してください
- 温度パラメータを調整:コードタスクは0.1-0.3、会話は0.5-0.7、クリエイティブライティングは0.8-1.0
- システムプロンプトを確認:システムプロンプトが明確で具体的であることを確認
- コンテキスト長を増やす:一部のタスクにはより長いコンテキストウィンドウが必要
問題6:マルチユーザー同時利用時のレスポンス低下
# Ollamaの並列数を設定 OLLAMA_NUM_PARALLEL=4 ollama serve # vLLMは効率的な同時実行処理を内蔵 # GPU数を増やすことで同時実行能力を向上可能 python -m vllm.entrypoints.openai.api_server \ --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \ --tensor-parallel-size 2 \ --max-num-seqs 32 # 最大同時シーケンス数
まとめ
| 方法 | 最適な対象 | 難易度 | パフォーマンス | おすすめ度 |
|---|---|---|---|---|
| Ollama | 個人開発者、初心者 | 非常に簡単 | 良好 | 強くおすすめ |
| vLLM | 本番環境、高同時実行 | 中程度 | 優秀 | おすすめ |
| Docker | チームコラボ、標準化デプロイ | 簡単〜中程度 | とても良い | おすすめ |
初心者の推奨パス:まずOllamaで素早く体験 → より高いパフォーマンスが必要になったらvLLMに移行 → 標準化デプロイが必要ならDockerでラップ。
DeepSeekモデルのローカルデプロイは複雑ではありません。適切なアプローチを選べば、数分でデバイス上に強力なAIモデルを動かすことができます。ローカルAIの旅を始めましょう!