DeepSeek DeepInfer 部署指南:环境要求、构建命令与服务组件
一、DeepInfer 是什么
DeepInfer 是 DeepSeek 用在自家线上服务里的推理框架,10 月 20 日以 Apache 2.0 许可证开源。README 的定位是“离线推理加规模化服务所需的核心功能”。
它最早主要基于 vLLM 构建,借鉴了 SGLang 和 TensorRT-LLM 的思路,并使用 DeepSeek 此前开源的 FlashMLA、DeepGEMM、DeepEP 等内核库。配套的 deepseek-recipe 库(Rust 编写,提供 Python 接口)负责把对话请求转换成模型输入,行为与官方接口对齐。
二、硬件和软件要求
2.1 支持范围
| 项目 | 要求 |
|---|---|
| 模型 | 仅 DeepSeek-V4.1-Flash |
| 英伟达 GPU | SM100 架构(计算能力 10.0),CUDA 13 |
| 华为 NPU | 昇腾 950,CANN 9.2 |
| 系统 | Linux,GCC ≥ 13,Python 3.12 |
SM100 是英伟达数据中心级 Blackwell 显卡所用的架构。Hopper 及更早的英伟达架构不在列表里。
2.2 一键预检脚本
把下面的脚本保存为 precheck.sh,执行 bash precheck.sh:
#!/usr/bin/env bash
ok() { echo "[通过] $*"; }
warn() { echo "[注意] $*"; }
gcc_major=$(gcc -dumpversion 2>/dev/null | cut -d. -f1)
if [ -n "$gcc_major" ] && [ "$gcc_major" -ge 13 ]; then ok "GCC $gcc_major"; else warn "需要 GCC >= 13"; fi
py=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])' 2>/dev/null)
[ "$py" = "3.12" ] && ok "Python $py" || warn "需要 Python 3.12,当前:${py:-未安装}"
if command -v nvidia-smi >/dev/null 2>&1; then
nvidia-smi --query-gpu=index,name,compute_cap --format=csv,noheader | while IFS=, read -r idx name cap; do
cap=$(echo "$cap" | tr -d ' ')
[ "$cap" = "10.0" ] && ok "GPU $idx:$name SM100" || warn "GPU $idx:$name 计算能力 $cap,不在支持范围"
done
fi
三、构建与运行
3.1 构建
git clone https://github.com/deepseek-ai/DeepInfer.git
cd DeepInfer
python3.12 -m venv .venv && source .venv/bin/activate
export DEEPINFER_ACCELERATOR=nvidia # 昇腾平台用 ascend
./build.sh
3.2 离线推理
# 可选:使用本地权重
export DEEPINFER_HF_MODEL_DIR=/path/to/DeepSeek-V4.1-Flash-1017
python examples/offline_inference.py
3.3 功能开关
| 功能 | 环境变量或参数 | 说明 |
|---|---|---|
| 投机解码 | DEEPINFER_ENABLE_MTP_VARLEN=1 | 草稿长度上限由 DEEPINFER_USE_NEXTN_DECODE 控制,默认 5 |
| 预填充裁剪 | DEEPINFER_YOCO_PREFILL_TRUNCATION_MODE=compact、DEEPINFER_YOCO_PREFILL_KEEP_TOKENS=140 | 只重算有限长度的尾部 |
| 批次无关推理 | DEEPINFER_BATCH_INVARIANT=1 | 仅英伟达 |
| 确定性采样 | 上一项加 DEEPINFER_ENABLE_MTP_VARLEN=0,并传固定 seq_seed | 仅英伟达 |
| 结构化输出 | SamplingParams(so_args={...}) | 支持正则、JSON Schema、EBNF |
四、本次没有开源的部分
README 写明,完整推理服务还需要以下组件,本次未包含:
- KV 缓存系统:官方使用专用存储集群,缓存保留时间为智能体请求 3 天、聊天请求 7 天。
- 预填充 / 解码分离编排:预填充一次处理整段输入,主要吃算力;解码每步只生成一个词,计算量小,但要反复读取模型权重和 KV 缓存,主要吃显存带宽。两者混在同一批卡上会互相拖慢,所以 DeepSeek 把它们放在不同机器上。引擎侧大部分功能已实现,编排没有放出。
- 数据并行副本间的负载均衡:预填充和解码各有一套策略。
官方解释是这部分和内部基础设施耦合紧密。

五、部署规模与网络要求
5.1 规模
部署问答给出的最小高效单元是 64 卡预填充加 64 卡解码。README 的性能测试则用了 4 张 SM100 做预填充、64 张做解码,均在同一高速互联域内,可以用examples/sweep/run_sweep.sh 复现。
这两组配置对应不同用途,不能直接等同:64 + 64 是部署问答给出的线上部署建议规模;4 + 64 是 README 分别测试预填充和解码性能时用的配置,只说明性能图怎么测出来,不代表 4 张卡就能撑起线上预填充。
DeepSeek-V4.1-Flash 是混合专家模型,由许多“专家”子网络组成。专家并行就是把专家分散到多张卡上;部署问答说,卡数越多,每张卡每一步要读取的专家权重越少,所以解码要用 64—128 张卡的大规模专家并行。
5.2 网络
- 解码的大规模专家并行依赖同一高速互联域。这里的“高速互联域”指通过显卡间高速总线直接连在一起的一组卡(即超节点),卡与卡之间不经过普通网络。
- KV 缓存换入走 RDMA 网卡直写显存,数据不经过 CPU,也不占用显卡的计算单元;
- 预填充和解码分属不同数据中心时,每 8 张卡约需 400Gbps 互联带宽。
六、常见问题
能在 H100 上跑吗? README 只列出 SM100 和昇腾 950,Hopper 不在支持范围。
部署后是现成的接口服务吗? README 只给出离线推理示例,没有给出服务启动命令。线上服务需要自己补齐上面三块组件。
官方的性能数据能参考吗? 都是 DeepSeek 在英伟达硬件、超大规模集群上测得的,小规模部署不能直接套用。
七、总结
DeepInfer 开源了 DeepSeek 推理引擎的核心部分,但当前发布内容并不是一套可直接启动的完整线上服务。先用预检脚本确认硬件,再跑离线示例;是否自建线上服务,取决于你能否补齐 KV 缓存、分离编排和负载均衡,以及有没有足够的卡和网络。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)