DeepSeek-V3.1 是一种混合“思考/非思考”MoE 语言模型(总计 671B,≈每个 token 激活 37B),只要采用合适的提供方/量化方式与工具链,即可在本地运行。下面我将说明 DeepSeek-V3.1 是什么、硬件/软件要求、本地运行的分步教程(Ollama + llama.cpp 示例),以及如何部署并使用思考模式(<think>/</think> 对话模板),并提供可直接复制/粘贴的代码示例。
DeepSeek-V3.1 是什么?
DeepSeek-V3.1 是 DeepSeek 的 MoE(专家混合)家族的 v3.1 版本。它被设计为混合推理模型,通过更换对话模板即可在同一个检查点上支持两种会话模式——思考与非思考。模型架构基于 DeepSeek-V3 MoE 设计(总参数 671B;推理时每个 token 约激活 ≈37B 参数),并在后训练阶段增强了工具使用、智能体技能和长上下文处理能力。
速览特性
- 混合 思考 / 非思考 模式(通过对话模板的分词切换)。
- MoE 架构:总参数量巨大,但每个 token 的激活参数有限(提升效率)。
- 后训练增强工具调用与智能体工作流(工具调用格式与智能体模板在模型资产中有文档)。
本地运行 DeepSeek-V3.1 需要什么?
运行完整 DeepSeek-V3.1(原始检查点)非常重量级——训练/检查点存储与推理编排都不简单。但也有可行路径:
硬件
- 完整分布式推理(研究/集群):多块高显存 GPU(A100/H800 等级)或通过模型并行的 GPU 集群(适用于 600B+ 检查点)。仅在你运行生产级研究集群时使用。
- 实用的本地选项:采用“激活参数”视角(≈37B 激活)或使用 GGUF/1-bit dynamic 量化构建。社区量化(1-bit dynamic / GGUF)可显著降低磁盘与内存占用——例如,社区帖子报告将 720GB 检查点压缩到 ~170GB GGUF 的量化变体。这让单机/单服务器的本地 GPU 推理在高性能台式机/服务器上变得可行。
结论: 预期为大模型工作流(量化工件占用几十到数百 GB 磁盘);VRAM 方面建议使用量化变体并以 ≥24–48GB VRAM 为目标以获得合理吞吐;否则可用 CPU+swap,但需接受性能折衷。
软件与工具链
Python 3.10+(用于 transformer/分词器工具与自定义脚本)。
transformers(用于分词器与辅助函数)——模型卡展示了使用 transformers.AutoTokenizer 的示例。
一个或多个本地推理运行时:
- Ollama(简便:
ollama pull/ollama run集成;部分 DeepSeek 构建在 Ollama 上需要预发布版本,请查看模型/Ollama 说明)。Ollama 已成为社区模型的标准本地运行器。 - llama.cpp / ggml 技术栈或用于 GGUF 量化文件的
llama-server——适合直接执行 GGUF。 - text-generation-inference / Triton / FlashAttention 技术栈用于更高性能的 GPU 推理(高级部署)。
磁盘:为模型文件准备充足空间(按量化不同为几十 → 数百 GB)。
模型工件(获取哪个文件)
- 官方 safetensors / BF16 / FP8 / GGUF 变体:Hugging Face 托管了 V3.1 的模型工件及多种量化。如果你需要
llama.cpp用的 GGUF/量化文件,请查找社区量化发布(或使用从 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
(Ollama 的 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 工件但需要 llama.cpp 的 GGUF,请使用 llama.cpp 中的转换脚本(或社区工具)进行转换 → 量化。社区存在 1-bit dynamic 量化工具,可在缩小体积的同时尽量保留精度;参见社区帖子,体积可降至 ~170GB。
实际如何在本地运行 DeepSeek-V3.1?(实战教程)
我将展示 Ollama(简单、推荐)与 llama.cpp(GGUF)示例,以及一个使用模型卡分词器辅助的简短 Python 示例。
A —— 使用 Ollama 运行(快速开始)
- 安装 Ollama(按官方说明)。
- 拉取并运行模型:
# 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
- 向本地 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
- 使用 CUDA(可选)或仅 CPU 构建
llama.cpp:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# for CUDA:
make clean && make LLAMA_CUBLAS=1
# or CPU only:
make
- 将模型 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
- 如需服务器模式,
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-bit dynamic)以适配你的 GPU/CPU 预算;llama.cpp 仓库提供了转换工具与指南。
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 使用包含特殊思考 token(例如 <think> 与 </think>)的对话模板。是否启用思考模式由模板决定:
- 非思考模板在助手前缀放置
</think>,指导模型直接生成回答(非思考模式支持工具调用格式)。 - 思考模板在助手前缀放置
<think>,促使模型输出内部链式思考风格的中间信号(模型经过训练,会使用该 token 序列进行内部推理并产生更高质量的多步答案)。Hugging Face 模型卡记录了这些确切的 token 以及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>
(具体的 token 框架在模型卡中——如果使用原始模板,必须严格遵守空格与特殊标记。)
C —— 使用 Ollama(UI 切换):
DeepSeek 官方 Web 演示与发布说明提到了用于切换模式的“DeepThink”按钮/开关。在本地,Ollama 或你的应用应通过切换对话模板来复制该行为(即在传给运行时的提示之间切换两种分词后的形式)。若通过 Ollama 运行 DeepSeek,你可在应用中维护两套提示模板(思考 vs 非思考),并在向 Ollama API 发起请求时进行切换。
如何将思考模式部署为智能体(工具调用、代码智能体)?
DeepSeek-V3.1 在模型资产中记录了工具调用与智能体模板。模型要求以特定的 JSON/指令格式呈现工具,并且如果遵循模型卡中描述的严格包装 token,可以在单次轮次中串联多次工具调用。
示例:简单的工具调用包装(伪)
模型定义了工具描述块,以及严格的 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 以了解完整流程)。实现智能体需要程序化编排:调用工具 → 捕获结果 → 按模板精确注入回对话上下文 → 再次调用模型。
实用提示、故障排查与安全注意事项(需要关注什么?)
- Token 模板很严格。 建议使用模型的
tokenizer.apply_chat_template,或严格复现<think>/</think>token。如有空格或标记缺失,模型行为会发生变化。 - 工具格式必须为合法 JSON。 模型会将工具参数解析为 JSON——无效 JSON 会导致工具调用失败。
- 量化的权衡。 1-bit dynamic / 激进量化可缩小存储与内存占用,但可能略微影响数值保真。请在你的任务上进行测试。社区量化可将磁盘占用降低约 80%(示例报告:720GB → ~170GB),但务必用你的提示进行验证。
- Ollama 兼容性。 一些 DeepSeek 变体注明特定功能需要 Ollama v0.11.7——请检查 Ollama 模型页面并按需更新。
端到端示例:在本地运行带思考模式的 DeepSeek-V3.1(迷你演练)
- 安装 Ollama 并拉取模型:
# install ollama per docs, then:
ollama pull deepseek-ai/DeepSeek-V3.1
ollama run deepseek-ai/DeepSeek-V3.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())
- 如果模型按工具调用格式返回了工具调用,请解析 JSON 并运行工具,然后按模型卡模板在下一条消息中注入结果。
应如何选择你的部署路径?
- 若想最快上手实验: 使用 Ollama 与 Hugging Face 模型卡示例。Ollama 隐藏了大量基础设施细节,并提供本地 HTTP API。
- 若需更低成本/更强可移植性: 使用社区 GGUF 量化工件并通过
llama.cpp或llama-server运行。量化能节省磁盘与内存,但请针对你的任务验证精度。 - 若在构建智能体或工具: 严格遵循模型卡的工具调用与智能体模板;将工具输出编排回模型上下文。
入门
CometAPI 是一个统一的 API 平台,将来自领先提供方的 500+ AI 模型(如 OpenAI 的 GPT 系列、Google 的 Gemini、Anthropic 的 Claude、Midjourney、Suno 等)聚合到单一、对开发者友好的接口中。通过提供一致的身份认证、请求格式与响应处理,CometAPI 极大地简化了将 AI 能力集成到应用中的流程。无论你在构建聊天机器人、图像生成器、音乐创作工具,还是数据驱动的分析管线,CometAPI 都能帮助你更快迭代、控制成本、保持供应商无关,同时利用 AI 生态的最新突破。
开发者可通过 DeepSeek V3.1 访问 CometAPI,文章发表时列出的为最新模型版本。开始之前,请在 Playground 中探索模型能力,并参考 API guide 获取详细说明。在访问之前,请确保你已登录 CometAPI 并获得 API key。CometAPI 提供远低于官方价格的方案,帮助你集成。
结论
DeepSeek-V3.1 通过务实的混合推理理念(单一检查点 + 模板化思考行为),让你在遵守对话模板与工具链要求的前提下,轻松开展链式思考风格的推理与智能体工具使用。将 Hugging Face 模型卡与 DeepSeek 发布说明作为首选参考,选择本地运行时(简便用 Ollama,控制用 llama.cpp),并测试量化构建以实现切实可行的本地部署。
