dshseek

seek://guides/deepinfer

DeepInfer:DeepSeek 生产推理框架,DSH 用户视角解读

2026年10月23日Intermediate← 全部教程

TL;DR

DeepSeek 2026-10-16 发布的 DeepInfer 包含什么、如何构建并跑通 DeepSeek-V4.1-Flash-1017 的离线推理、其中哪些属性对 agent 有用(batch-invariant 推理、确定性采样、结构化输出),以及那个诚实的缺口:没有 HTTP server,所以在 serving 入口落地之前,DeepSeek Harness 还无法把它当后端。

要点

  • 按其 README,DeepInfer 是支撑 DeepSeek 生产服务的高性能推理框架,最初主要基于 vLLM 构建;本次发布提供离线推理,支持一个模型 DeepSeek-V4.1-Flash,运行于 NVIDIA SM100 GPU 与华为昇腾 950 NPU
  • 构建只需一个环境变量加一个脚本:在空的 Python 3.12 环境里 `export DEEPINFER_ACCELERATOR=nvidia`(或 `ascend`,运行时保持导出),然后 `./build.sh`;前置条件为 Linux、GCC 13 及以上、CUDA 13(NVIDIA)或 CANN 9.2(昇腾)
  • `python examples/offline_inference.py` 首次运行会把默认 checkpoint `deepseek-ai/DeepSeek-V4.1-Flash-1017` 下载到 Hugging Face 缓存;`DEEPINFER_HF_MODEL_DIR` 可改指本地副本
  • 对 agent 重要的三个属性:batch-invariant 推理(`DEEPINFER_BATCH_INVARIANT=1`,仅 NVIDIA)让结果在不同 batch 组合下保持一致;确定性采样再加 `DEEPINFER_ENABLE_MTP_VARLEN=0` 与固定 `seq_seed`;结构化输出经 `so_args` 把生成约束到 regex、JSON schema 或 EBNF 语法
  • 没有 HTTP 或 OpenAI 兼容 server:按 examples/README.md,每个示例都是离线、benchmark、sweep 或困惑度脚本;README 把 KV cache 系统、VE/prefill/decode 分离与负载均衡列为完整服务所需、本次未包含
  • 对 DSH 而言,今天没有可供自定义提供方指向的东西;等 serving 入口落地,DSH 这一侧就是配置模型指南里的普通自定义提供方流程

2026-10-16,DeepSeek 以 Apache-2.0 协议公开了 DeepInfer——按其 README,这是支撑 DeepSeek 大规模生产服务的高性能推理框架,最初主要基于 vLLM 构建。对 DeepSeek Harness 用户来说,关键就在 checkpoint:DeepInfer 唯一支持的模型是 DeepSeek-V4.1-Flash,而 DSH v0.2.1-rc.2 在仓库出现次日新增了对 DeepSeek-V4.1-Flash-1017 的支持。本篇导读 README 与 examples/README.md(写作时抓取),并补上 DSH 视角:发布了什么、怎么跑、哪些属性对 agent 有用——以及在它能支撑 DSH 之前还缺什么。(harness 本身的背景见什么是 DeepSeek Harness?。)

本次发布包含什么

README 把发布范围限定为离线推理,附带规模化 serving 所需的核心特性。一口气过一遍:

  • 内核来自 DeepSeek 的其他开源仓库——FlashMLA、DeepGEMM、DeepEP、TileKernels、DeepSelect——外加仓库内自带的 TileLang 内核
  • 并行:Attention DP / balanced CP,以及带 EPLB 的 MoE EP
  • DSpark:用草稿 token 加速解码,按置信度调度验证(DEEPINFER_ENABLE_MTP_VARLEN=1;DEEPINFER_USE_NEXTN_DECODE 控制草稿长度上限,默认 5)
  • SWA bounded replay:把 decoder 的 prefill 裁剪为一段有界后缀(默认 V4.1 设置为 DEEPINFER_YOCO_PREFILL_TRUNCATION_MODE=compact、DEEPINFER_YOCO_PREFILL_KEEP_TOKENS=140)
  • 异步调度:CPU 批调度与设备执行重叠,默认开启
  • batch-invariant 推理、确定性采样、结构化输出——下文会回到这三个

README 要求的环境:

NVIDIA 昇腾
硬件 SM100 GPU 昇腾 950 NPU
工具链 CUDA 13 CANN 9.2
DEEPINFER_ACCELERATOR nvidia ascend
通用 Linux、GCC ≥ 13、Python 3.12 Linux、GCC ≥ 13、Python 3.12

性能一节报告的 prefill 在 4 张 SM100 GPU 上测得、decode 在 64 张上测得——均在同一 scale-up 域内——复现脚本在 examples/sweep/ 下。

构建并跑通离线推理

按 README,构建是「一个环境变量加一个脚本」,在一个空的 Python 3.12 环境里进行:

git clone https://github.com/deepseek-ai/DeepInfer.git
cd DeepInfer
python3.12 -m venv .venv && source .venv/bin/activate  # 按 README:空的 Python 3.12 环境
export DEEPINFER_ACCELERATOR=nvidia   # 或:ascend——运行 DeepInfer 的环境里要保持导出
./build.sh
python examples/offline_inference.py

首次运行会把默认 checkpoint deepseek-ai/DeepSeek-V4.1-Flash-1017 下载到 Hugging Face 缓存;要改用本地副本,把 DEEPINFER_HF_MODEL_DIR 指过去即可。入口示例之外,examples/README.md 还记录了测吞吐/延迟的 benchmark.py,以及复现 README pareto 图的 sweep 脚本——这就是它的全部入口:每个入口都是离线推理、benchmark、sweep 或困惑度脚本。

agent 构建者该注意的三个属性

Batch-invariant 推理

DEEPINFER_BATCH_INVARIANT=1(仅 NVIDIA)让模型结果在不同 batch 组合下保持一致——同一个 prompt,与一个请求同批还是与一百个同批,答案相同。对在同一引擎后面成规模跑 agent 的人来说,这正是让会话行为不取决于巧合流量的那个属性。

确定性采样

再加上 DEEPINFER_ENABLE_MTP_VARLEN=0 与 SamplingParams 里固定的 seq_seed,相同输入 token 加相同采样参数就产生相同输出。这是运行级别的可复现:同样的任务、prompt 与种子逐 token 重放——可重复 agent 评测的基础。README 自己的变量里也写着一层取舍:确定性要求 MTP 关闭,所以 DSpark 的草稿 token 加速与确定性采样无法在同一次运行中兼得。

结构化输出

SamplingParams 上的 so_args 在解码开始前就把生成约束到 regex、JSON schema 或 EBNF 语法——工具调用或状态交接的载荷无需修复环节即可信赖。具体的 schema_type 标识符见 examples/_structured_output.py。

在它能支撑 DSH 之前还缺什么

README 点了三样完整推理服务所需、本次发布未包含的东西:KV cache 系统;VE/prefill/decode 分离(并注明大部分所需引擎功能已经实现);以及 prefill 与 decode 两侧跨数据并行副本的负载均衡。第四个缺口是 DSH 直接感受到的:没有 HTTP 入口,也就没有可注册的 OpenAI 兼容端点。

落到今天,选项分三条道:

  • 让 DSH 用官方 DeepSeek API——受支持路径,不因本次发布而改变
  • 在受支持硬件上离线运行 DeepInfer——测试引擎、做测量,或直接利用 batch-invariant/确定性/结构化输出这三个属性
  • 盯着仓库等 serving 组件;端点落地后,DSH 这一侧就是配置模型指南里的普通自定义提供方流程——基础 URL、协议、凭据、一个模型——没有任何 DSH 特有的东西

与站内其他位置的关系

官方参考