如何透過 ollama 在本地部署 deepseek-v3.1:Eastest 指南

CometAPI
AnnaDec 2, 2025
如何透過 ollama 在本地部署 deepseek-v3.1:Eastest 指南

DeepSeek-V3.1 是一個混合「思考/非思考」的 MoE 語言模型(總計 671B,每個 token 激活約 37B),如果使用合適的提供者/量化和工具,可以在本地運行。下面我將解釋 DeepSeek-V3.1 的定義、硬體/軟體需求、本地運行逐步教學(Ollama + llama.cpp 範例)以及如何 部署並使用思維模式 (“ <think>/</think> 您可以使用聊天範本 (http://www.microsoft.com/china/chattemplate) 複製/貼上程式碼範例。


什麼是DeepSeek-V3.1?

DeepSeek-V3.1 是 DeepSeek MoE(混合專家)系列的 v3.1 版本。它被設計為一種混合推理模型,支援兩種對話模板/模式—— 思維 不思考 ——透過更改聊天模板,從同一檢查點進行改進。該模型架構沿用了 DeepSeek-V3 MoE 設計(總共 671 億個參數;每個用於推理的 token 激活約 37 億個參數),並在工具使用、代理技能和長上下文處理方面增加了訓練後改進。

快速功能亮點

  • 雜交種 思考/非思考 模式(透過聊天模板標記切換)。
  • MoE 架構:總參數數量較大,但每個令牌啟動的參數數量有限(提高效率)。
  • 訓練後提升工具呼叫和代理工作流程(模型資產中記錄的工具呼叫格式和代理範本)。

我需要什麼才能在本地運行 DeepSeek-V3.1?

運行 充分 DeepSeek-V3.1(原始檢查點)是重量級的-訓練/檢查點的儲存和推理編排並非易事。但有一些切實可行的方法:

硬體

  • 完全分佈式推理(研究/集群):多個高記憶體 GPU(A100/H800 等級)或具有模型平行服務的 GPU 叢集(通常用於 600B+ 檢查點)。僅在運行生產研究集群時使用。
  • 實用的本地選項: 使用 啟動參數 視角(約 37B 已啟動)或量化 GGUF/1 位動態建構。社群量化(1 位元動態/GGUF)顯著降低了磁碟和記憶體需求——例如,社群貼文報告稱,量化版本將 720GB 的檢查點壓縮到約 170GB 的 GGUF。這使得資源充足的桌上型電腦/伺服器能夠進行本機單一伺服器 GPU 推理。

底線: 預計會有大型模型工作流程(量化工件需要數十到數百 GB 的磁碟);對於 GPU VRAM,使用量化變體並目標≥24–48GB VRAM 以獲得合理的吞吐量;否則使用 CPU+swap 並進行效能權衡。

軟體和工具

Python 3.10+(用於轉換器/標記器工具和自訂腳本)。

transformers (用於標記器和輔助函數)—模型卡展示了使用 transformers.AutoTokenizer.

一個或多個本地推理運行時:

  • 奧拉馬 (簡單的: ollama pull / ollama run 整合;Ollama 上的某些 DeepSeek 建置需要預發布版本,請查看 model/ollama 說明)。 Ollama 已成為社區模型的標準本地運行器。
  • llama.cpp / ggml 堆疊或 llama-server 適用於 GGUF 量化文件 — 非常適合直接執行 GGUF。
  • 文本生成推理 / Triton / FlashAttention 堆疊 用於更高效能的 GPU 推理(進階設定)。

磁碟:模型檔案的可用空間較大(根據量化,數十 → 數百 GB)。

模型工件(取得哪個檔案)

  • 官方安全張量 / BF16 / FP8 / GGUF 變體:Hugging Face 託管 V3.1 模型工件和多個量化。如果您需要 GGUF/量化文件 llama.cpp,尋找社區量化版本(或從 safetensors → GGUF 的轉換腳本)——模型卡列出了量化變體。

如何準備局部推理模型?

以下是建議的準備步驟,按從簡單到高級的順序排列。

步驟 1 — 選擇運行時(建議)

  • 初學者/快速測驗: Ollama — 最低配置:下載、執行模型、呼叫 API。注意:部分 DeepSeek-V3.1 版本指出,某些特定功能需要 Ollama v0.11.7 版本。
  • 高階/低階控制: llama.cpp + GGUF 量化(如果 GGUF 量化可用)。這為您提供直接的推理控制和集成 llama-server.

步驟 2 — 下載模型

如果您使用 Ollama:

# install ollama (see https://ollama.com/docs)

# Pull the model (this downloads the model to your machine)
ollama pull deepseek-ai/DeepSeek-V3.1
# or a specific tag: ollama pull deepseek-ai/DeepSeek-V3.1:quant-q4_0

(奧拉瑪的 run 如果不存在則會自動拉取; pull 讓您控制時間。 )

如果你使用 Hugging Face + llama.cpp:

# Example: download via huggingface-cli or hf_transfer

pip install huggingface_hub
hf_hub_download(repo_id="deepseek-ai/DeepSeek-V3.1", filename="DeepSeek-V3.1.gguf")
# or use a community quant file (gguf) referenced on the Hugging Face model page

Hugging Face 在模型卡上列出了模型工件、模板和量化。

步驟 3 — 轉換/量化(可選)

如果你只找到 safetensors 或 BF16 工件,但需要 GGUF llama.cpp,使用轉換腳本 llama.cpp (或使用社區工具)進行轉換 → 量化。社群中有一些工具可用於 1 位元動態量化,在保持精確度的同時縮小檔案大小;請參閱社群帖子,報告檔案大小縮減至約 170GB。


如何在本地實際運行 DeepSeek-V3.1? (實際運行教程)

我會展示 奧拉馬 (簡單,推薦)和 調用.cpp (GGUF)範例以及使用模型卡標記器助理的簡短 Python 範例。

A — 使用 Ollama 運行(快速啟動)

  1. 安裝 Ollama(按照官方說明)。
  2. 拉取並運行模型:
# pull model to disk (optional; run will pull automatically)

ollama pull deepseek-ai/DeepSeek-V3.1

# start an interactive session (runs model and exposes local API)

ollama run deepseek-ai/DeepSeek-V3.1
  1. 向本機 Ollama 伺服器發出 HTTP 請求:
# curl usage example (local Ollama server usually listens on port 11434)

curl -sS -X POST 'http://localhost:11434/api/generate' \
  -H 'Content-Type: application/json' \
  -d '{
    "model":"deepseek-ai/DeepSeek-V3.1",
    "prompt":"Explain the difference between thinking and non-thinking mode in DeepSeek.",
    "max_tokens":256
  }'

Ollama 的 CLI 和 API 模式設計得非常簡單: ollama run 如果需要,將會拉取並啟動模型伺服器。請參閱 Ollama 文件和模型頁面,以取得記憶體提示以及準確的模型名稱/標籤。

B — 透過 llama.cpp 運行量化的 GGUF

  1. 建構 llama.cpp 使用 CUDA(可選)或 CPU:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# for CUDA:

make clean && make LLAMA_CUBLAS=1
# or CPU only:

make
  1. 將模型GGUF檔案放在一個路徑下並運行:
./main -m /path/to/DeepSeek-V3.1.q4_K_M.gguf \
  -p "Explain how to enable thinking mode." \
  --temp 0.2 --n_predict 512
  1. 對於伺服器使用, llama-server (社群專案)可以公開一個 HTTP 端點:
llama-server -m /path/to/DeepSeek-V3.1.q4_K_M.gguf
# then POST to the server like:

curl -X POST "http://localhost:8080/api/v1/generate" -d '{"prompt":"Hello","max_tokens":200}'

使用社群 GGUF 量化(q4/q8/1 位元動態)以適應 GPU/CPU 預算; llama.cpp repo 提供轉換工具和指導。

使用標記器 + 聊天模板的 C — Python 範例

Hugging Face 模型卡提供了 tokenizer.apply_chat_template 助手並示範如何編碼對話 thinking=True。這是一個根據模型卡改編的最小 Python 範例:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-V3.1")

messages = [
    {"role": "system", "content": "You are a helpful assistant"},
    {"role": "user", "content": "Who are you?"},
    {"role": "assistant", "content": "<think>Hmm</think>I am DeepSeek"},
    {"role": "user", "content": "1+1=?"}
]

# apply thinking chat template

s = tokenizer.apply_chat_template(messages, tokenize=False, thinking=True, add_generation_prompt=True)
print(s)  # the template includes the special <think> token placement

然後,您可以根據您的堆疊將標記化的提示輸入到推理執行時(Ollama/llama.cpp/TGI)中。


思考模式如何運作以及如何在本地部署它?

DeepSeek-V3.1 用途 聊天模板 包含特殊思維標記(例如, <think> </think>)。 該 模板 確定模型處於思考模式或非思考模式:

  • 不思考 模板位置 </think> 在助手前綴中,它指示模型產生直接回應(非思考中支援工具呼叫格式)。
  • 思維 模板位置 <think> 在輔助前綴中,這使得模型輸出內部的思路鍊式中間訊號(模型被訓練使用該標記序列進行內部推理,並產生更高品質的多步驟答案)。 Hugging Face 模型卡記錄了這些精確的標記,以及 tokenizer.apply_chat_template(..., thinking=True) API。

程序化切換(範例)

A — 使用標記器(Python):

# thinking=True or thinking=False changes how the prompt is formatted

prompt_thinking = tokenizer.apply_chat_template(messages, thinking=True, add_generation_prompt=True)
prompt_non_thinking = tokenizer.apply_chat_template(messages, thinking=False, add_generation_prompt=True)

餵寵物用具 prompt_thinking 到你的推理運行時來獲取思考行為。

B — 使用原始提示(llama.cpp / 手冊):

插入 <think> 在助手輪到你時提示:

<|begin_of_sentence|>You are a helpful assistant<|User|>How to optimize this code?<|Assistant|><think>

(該精確的令牌框架位於模型卡中 - 如果您使用原始模板,則必須注意間距和特殊標記。)

C — 使用 Ollama(UI 切換):
DeepSeek 官方網頁示範和發行說明中提到了一個「DeepThink」切換按鈕,用於在託管 UI 中切換模式。在本地,Ollama 或您的應用程式應該透過切換聊天範本(即,在兩種標記化形式之間切換您發送到運行時的提示)來複製該行為。如果您透過 Ollama 運行 DeepSeek,則可以在應用程式中實現此功能,方法是維護兩個提示模板(思考型和非思考型),並透過 Ollama API 進行切換。


如何將思維模式部署為代理(工具呼叫、程式碼代理)?

DeepSeek-V3.1文檔 工具調用 代理人 模型資產中的範本。該模型要求工具以特定的 JSON/指令格式呈現,並支援在單次呼叫中連結多個工具呼叫(前提是您必須遵循模型卡中描述的包裝器令牌)。

範例:簡單的工具呼叫包裝器(偽)

該模型指定了一個工具描述符塊和一個嚴格的 tool_calls_begin / tool_call_begin 格式。一個最小的例子(概念):

## Tools

You have access to the following tools:

### web_search

Description: Query the web
Parameters: {"q": "string"}

<|begin_of_sentence|>{system prompt}

## Tools

...tool descriptions...

<|User|>Find the population of Tokyo<|Assistant|></think>
<|tool_calls_begin|><|tool_call_begin|>web_search<|tool_sep|>{"q":"population of Tokyo 2025"}<|tool_call_end|><|tool_calls_end|>

然後,工具輸出應在下一輪中按照模型規定的格式回饋給模型(參見 assets/search_tool_trajectory.html 在模型頁面上查看具體流程)。實作代理程式需要程式化的編排:呼叫工具 → 擷取結果 → 依照範本規定將結果重新註入聊天上下文 → 再次呼叫模型。


實用技巧、故障排除和安全注意事項(我該注意什麼?)

  • 令牌模板是嚴格的。 使用模型的 tokenizer.apply_chat_template 或複製精確的 <think>/</think> 如下圖所示的標記。不正確的間距或缺失的標記將改變模型行為。
  • 工具格式必須是有效的 JSON。 此模型將工具參數解析為 JSON - 無效的 JSON 將中斷工具呼叫。
  • 量化權衡。 1 位元動態/激進量化會縮減儲存空間和 RAM,但可能會略微改變數值保真度。請在您的工作負載上進行測試。社群中存在一些可降低 80% 磁碟使用率的量化方法(範例報告:720GB → ~170GB),但請務必根據提示進行驗證。
  • Ollama 相容性。 一些 DeepSeek 變體指出 Ollama v0.11.7 是預發布功能所必需的 - 請查看 Ollama 模型頁面並進行相應更新。

端到端範例:使用思考模式在本地運行 DeepSeek-V3.1(迷你演練)

  1. 安裝Ollama並拉取模型:
# install ollama per docs, then:

ollama pull deepseek-ai/DeepSeek-V3.1
ollama run deepseek-ai/DeepSeek-V3.1 &
  1. 使用 Python 標記器編寫思考提示:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-V3.1")

msgs = [
  {"role":"system","content":"You are a helpful assistant."},
  {"role":"user","content":"Plan a multi-step strategy to prototype a mobile app in 2 weeks."}
]
prompt = tokenizer.apply_chat_template(msgs, thinking=True, add_generation_prompt=True)

import requests
resp = requests.post("http://localhost:11434/api/generate", json={
    "model": "deepseek-ai/DeepSeek-V3.1",
    "prompt": prompt,
    "max_tokens": 400
})
print(resp.json())
  1. 如果模型以 toolcall 格式傳回工具調用,則解析 JSON 並執行該工具,然後根據模型卡範本將結果注入下一則訊息。

您應該如何選擇部署路徑?

  • 如果您想要最快的實驗路徑: 使用 奧拉馬 以及 Hugging Face 模型卡的範例。 Ollama 隱藏了許多基礎架構細節,並提供了本機 HTTP API。
  • 如果您需要更低的成本/更高的便攜性: 使用社區 GGUF量化 工件並運行 llama.cpp or llama-server。量化可以節省磁碟和內存,但會降低測試準確性。
  • 如果您正在建立代理或工具: 依照模型卡的 工具調用 代理人 模板正是如此;將工具輸出編排回模型上下文。

入門

CometAPI 是一個統一的 API 平台,它將來自領先供應商(例如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude、Midjourney、Suno 等)的 500 多個 AI 模型聚合到一個開發者友好的介面中。透過提供一致的身份驗證、請求格式和回應處理,CometAPI 顯著簡化了將 AI 功能整合到您的應用程式中的過程。無論您是建立聊天機器人、影像產生器、音樂作曲家,還是資料驅動的分析流程,CometAPI 都能讓您更快地迭代、控製成本,並保持與供應商的兼容性——同時也能充分利用整個 AI 生態系統的最新突破。

開發人員可以訪問 深尋V3.1 透過 CometAPI,列出的最新模型版本截至本文發布之日。首先,探索模型的功能 游乐场 並諮詢 API指南 以獲得詳細說明。造訪前請確保您已經登入CometAPI並取得API金鑰。 彗星API 提供遠低於官方價格的價格,幫助您整合。


結論

DeepSeek-V3.1 帶來了一個實用的混合推理理念(單檢查點 + 模板化思維行為),只要滿足聊天模板和工具要求,就能輕鬆進行鍊式推理和代理工具的使用實驗。首先使用 Hugging Face 模型卡和 DeepSeek 發行說明,選擇一個本地運行時(為簡單起見,選擇 Ollama, llama.cpp 用於控制),並測試量化建置以進行實際的本地部署。

SHARE THIS BLOG

一個 API 中超過 500 個模型

最高 20% 折扣