2026-09-10,DeepSeek 发布了新架构家族中最小尺寸的成员 DeepSeek-V4.1-Flash552B 总参数 MoE、全新的 Causal-Encoder-Decoder(CED)非对称架构、输入侧仅激活 8B、输出侧激活 16B,并配套 1M tokens 上下文384K tokens 最大输出与原生多模态视觉理解。更关键的是它对本地部署者释放出的信号:KV Cache 每 token 约 890 bytes,相比 V4 Flash 的约 3514 bytes,HBM 需求降至上一代的 1/4、SSD 存储降至 1/8,相比初代 DeepSeek 缩小约 437 倍;同时官方明确表示将与开源社区密切合作推进 V4.1-Flash 的推理支持、探索更多部署选项,面向 2000 GPU + 存储集群的大规模部署可与官方洽谈合作。权重已在 Hugging Face 的 deepseek-ai/DeepSeek-V4.1-Flash 放出并附技术报告,国家超算互联网也于 2026-09-11 上线了 API 服务与权重文件。本文第一部分聚焦架构、显存账本、KV Cache 与长序列调度这四块「硬骨头」,把官方已公布的数据翻译成可落地的部署参数与代码骨架;第二部分再进入高并发服务编排与压测调优。

CED 非对称架构拆解:输入 8B / 输出 16B 激活如何改写 MoE 推理路径

传统 Decoder-only 大模型在每一层都对同一批 token 做同样的注意力与 MoE 路由,输入与输出的算力预算高度对称。DeepSeek-V4.1-Flash 的 Causal-Encoder-Decoder(CED)非对称架构打破了这种对称:输入侧(编码器角色)每个 token 仅激活 8B 参数,负责把上下文压缩成因果可用的表征;输出侧(解码器角色)每个新生成 token 激活 16B 参数,负责高质量的自回归生成。注意这里的「编码器」仍是因果的——它不能看到未来 token,只是把庞大上下文一次性读入并缓存成 KV,因此与检索式双向编码器有本质区别。

这套分工对推理路径的影响可以拆成三点:

  • 计算图不对称:Prefill 阶段走 8B 激活路径,计算密度低、显存带宽压力相对小,长 prompt 的吞吐更容易做高;Decode 阶段走 16B 激活路径,单 token 的算力与权重读取量更大,是延迟的主战场。工程上应把优化资源向 Decode 倾斜,例如对输出侧专家做更激进的量化与更细的专家并行切分。
  • 显存占用分轨:输入侧激活小而稳定,适合常驻;输出侧激活大且随 batch 增长,适合动态分配。若把两者混在同一显存池里用统一并行策略,很容易出现「Prefill 把 Decode 权重挤出去」的 OOM。
  • KV 生产的时序差:编码阶段一次性产出全序列 KV,解码阶段增量追加 KV。由于输出侧激活更高,Do 阶段每 token 的 KV 写入压力更大,缓存分块策略必须优先保证 Decode 的 KV 落盘带宽。

一句话总结:CED 让「读上下文」便宜、「写答案」昂贵。这直接决定了后文所有调度策略的优先级——凡是能减少 Decode 次数、提高输入复用率的优化,收益都会被放大。

552B 总参数 MoE 的显存账本:专家并行与权重分片在单机多卡上的落地

先纠正一个常见误区:552B 总参数不等于 552B 全量常驻显存。MoE 的稀疏激活意味着单 token 只走一小部分专家,但权重必须全部可寻址,所以显存账本要分「权重」「激活」「KV」「框架开销」四本账来算,且只能基于官方公布的 552B 与 8B/16B 激活做比例推演,不引入任何未公布参数。

权重账:总参数量 552B。若以 BF16(2 bytes/param)估算,全量权重约 1104 GB;若输出侧专家用 FP8(1 byte/param)、其余保留 BF16 的混合方案,可压到约 700~900 GB 量级。这就是为什么单机 8 卡即使每卡 80GB(合计 640GB)也需要 专家并行(EP)+ 张量并行(TP) 组合,而不是单纯 TP。经验做法:

  1. EP 优先:把不同专家切到不同卡上,All-to-All 只在路由命中的卡之间发生。专家数与卡数的整除关系决定负载均衡,建议 EP 度数与单层专家数成整数倍,避免热点卡。
  2. TP 兜底:注意力权重与共享层用 TP 切分,降低单卡常驻显存。TP 引入的 All-Reduce 会与 EP 的 All-to-All 争抢互联带宽,务必让二者在不同链路或不同时刻重叠。
  3. 权重分片(Sharding):非活跃专家可放到 pinned host memory 或 NVMe,配合预取。这里 SSD 1/8 的收益就体现出来了——权重与 KV 的落盘需求同步下降。

下面这段代码给出本地部署时最直接的显存预算探测:先向 deepseek-flash 发一个最小请求确认服务可达,再按官方激活比做本地显存分配估算。

import os
import requests

BASE = "https://api.deepseek.com"
KEY = "your-deepseek-api-key"
HEADERS = {
    "Authorization": f"Bearer {KEY}",
    "Content-Type": "application/json",
}

# 1) 连通性与模型名确认:官方 API 模型名为 deepseek-flash
def probe():
    payload = {
        "model": "deepseek-flash",
        "messages": [{"role": "user", "content": "ping"}],
        "max_tokens": 8,
    }
    r = requests.post(f"{BASE}/chat/completions",
                      headers=HEADERS, json=payload, timeout=30)
    r.raise_for_status()
    return r.json()

# 2) 552B 总参数的本地权重显存预算
TOTAL_PARAMS = 552_000_000_000  # 官方公布总参数
BYTES = {"bf16": 2.0, "fp8_mix": 1.4}  # 混合精度等效字节系数

def weight_budget(n_gpus, per_gpu_gb, dtype="bf16"):
    total_gb = TOTAL_PARAMS * BYTES[dtype] / (1024 ** 3)
    capacity = n_gpus * per_gpu_gb
    return {
        "权重需求_GB": round(total_gb, 1),
        "集群容量_GB": capacity,
        "余量_GB": round(capacity - total_gb, 1),
        "是否可全常驻": capacity >= total_gb,
    }

if __name__ == "__main__":
    print(probe()["choices"][0]["message"]["content"])
    print(weight_budget(8, 80))     # 单机 8x80GB BF16
    print(weight_budget(16, 80, "fp8_mix"))  # 两机 16x80GB 混合精度

坑点提醒:不要把 8B/16B 激活当成显存需求,它们决定的是计算量而非常驻权重;MoE 的 All-to-All 在小 batch 下延迟占比极高,建议开启 continuous batching 并让 EP 通信与计算 overlap,否则 Decode 阶段的 16B 激活优势会被通信吃掉。

KV Cache 体积实测:890 bytes/token 与 HBM 1/4、SSD 1/8 的部署含义

这是本代最「反直觉」也最值得本地部署者欢呼的数据。官方发布帖给出:V4.1-Flash 每 token KV Cache 约 890 bytesV4 Flash 约 3514 bytes。按此测算,KV Cache 的 HBM 需求降至上一代的 1/4,SSD 存储降至 1/8,相比初代 DeepSeek 缩小约 437 倍

把这三个数字翻译成配置决策:

指标V4 FlashV4.1-Flash工程含义
KV 每 token 体积约 3514 bytes约 890 bytes单卡可容纳的并发上下文 token 数提升约 4 倍
KV 的 HBM 需求基准 1.00.25(降至 1/4)同等卡数可支撑约 4 倍 KV 常驻量,或用更少卡跑同并发
KV 的 SSD 存储基准 1.00.125(降至 1/8)长会话落盘成本大幅下降,1M 上下文的外溢缓存更可行
相较初代 DeepSeek缩小约 437 倍早期需高端集群承载的 KV,如今单机多卡即可规划

实测层面的意义:以 1M tokens 上下文为例,单序列 KV 约 890 bytes × 1,000,000 ≈ 890 MB(未计多序列放大);若 32 路并发各占 100K tokens,则约 32 × 100,000 × 890 bytes ≈ 2.85 GB。这意味着 KV 不再是把显存吃干的元凶,权重才是第一约束。因此本地部署的第一优先级从「省 KV」变成「省权重 + 高带宽互连」。

对应的服务端配置策略:

  • KV 分页块(block)可设大一些,减少页表管理开销,因为 890 bytes/token 让单块体积更温和。
  • HBM 中的 KV 池按 1/4 预估即可,把省下的显存让给输出侧 16B 激活权重。
  • SSD 侧按 1/8 规划容量,可大胆开启「长上下文会话全量落盘 + 冷热分层」。

下一段用官方 API 做一个「按 token 估算 KV 落盘量」的校验脚本,方便对照你的实际并发曲线:

import requests

BASE = "https://api.deepseek.com"
KEY = "your-deepseek-api-key"
HEADERS = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}

KV_BYTES_PER_TOKEN = 890          # 官方:V4.1-Flash 约 890 bytes/token
KV_V4_FLASH = 3514                # 官方:V4 Flash 约 3514 bytes/token

def estimate_kv(text: str, concurrency: int = 1):
    payload = {
        "model": "deepseek-flash",
        "messages": [{"role": "user", "content": text}],
        "max_tokens": 1,
    }
    r = requests.post(f"{BASE}/chat/completions",
                      headers=HEADERS, json=payload, timeout=60)
    r.raise_for_status()
    usage = r.json().get("usage", {})
    pt = usage.get("prompt_tokens", 0)
    kv_new = pt * KV_BYTES_PER_TOKEN / (1024 ** 2)
    kv_old = pt * KV_V4_FLASH / (1024 ** 2)
    return {
        "prompt_tokens": pt,
        "KV_MB_新": round(kv_new * concurrency, 2),
        "KV_MB_旧": round(kv_old * concurrency, 2),
        "压缩比": round(kv_old / kv_new, 2),  # 预期约 4.0
    }

if __name__ == "__main__":
    long_text = "部署测试。" * 2000
    print(estimate_kv(long_text, concurrency=32))

1M 上下文 + 384K 输出:长序列推理的 KV 管理与分块调度策略

官方给出 1M tokens 上下文最大 384K tokens 输出。这两个数字组合起来意味着单次请求可能承载约 1.38M tokens 的 KV 生命周期,若按 890 bytes/token 估算,峰值约 1.2 GB/序列。多序列并发下,KV 的分配、复用与回收成为调度系统的核心。

推荐的分块调度策略:

  1. 前缀分块与共享:把 system prompt、工具定义、长文档按固定块切分并计算哈希,相同前缀直接复用 KV,命中即省下整段 Prefill。注意官方定价中「缓存命中输入」空闲 0.02 元 / 高峰 0.04 元,而「缓存未命中输入」空闲 1 元 / 高峰 2 元,命中与否差价 50 倍,本地服务同样应把前缀缓存命中率作为一级指标。
  2. 滑动窗口 + 分段 Checkpoint:对超长输入,按块保存 KV checkpoint,被截断或回滚时可从最近 checkpoint 恢复,避免全量重算。
  3. 输出侧分段流控:384K 输出不可能一次生成完毕,应按段设置停止条件与重试边界,防止单请求长期占用 Decode 资源,影响其他并发。
  4. 冷热分层:活跃会话 KV 留 HBM,低频会话下沉 SSD(按 1/8 容量规划),配合预取掩盖 IO 延迟。

工程坑:长上下文的 Prefill 是 8B 激活,本身不贵,但KV 写入与页表维护会随块数增长而线性恶化。务必设置最大块数上限与 LRU 淘汰,否则内存碎片会把有效显存吃光。另一个坑是位置编码外推——1M 上下文下若不校准 RoPE 缩放,长距离注意力会明显退化,建议在部署配置中显式声明目标上下文长度并做一致性校验。

思考强度 low/high/max 三档:非思考与思考模式的推理预算分配

官方设定:思考模式为默认,强度分 low / high / max 三档,同时保留非思考模式。这三档不是「开关」,而是推理预算档位,直接作用于 CoT 长度与 Decode 次数,而 Decode 恰恰是 16B 激活路径的高成本环节,因此档位选择等于延迟与质量的直接权衡。

模式/档位典型延迟输出长度倾向资源占用适用场景
非思考最低短、直接分类、抽取、格式化、FIM 代码补全
思考 low低—中中等 CoT常规问答、简单工具编排
思考 high中—高长 CoT较高复杂推理、多步工具调用
思考 max最高最长 CoTGPQA/数学/竞赛级难题、Agent 长链规划

选型建议:把非思考模式用于所有「确定性任务」——JSON 抽取、意图分类、代码 FIM 补全;把思考档位留给「不确定性任务」。在服务编排中应按请求动态路由:可在网关层根据 prompt 特征(是否含「证明/推导/多步」)或上游意图分类器的输出决定档位,并对 max 档做并发限流。官方并发限制为 2500,max 档单请求占用时间长,建议单独留出一个受限队列,避免拖垮整体 SLA。注意思考模式默认开启,如果你的客户端不显式关闭思考,短任务会莫名其妙变慢——这是接入方最常见的性能投诉来源。

原生多模态视觉理解接入:图片链接、base64 与 Files API 三种路径

V4.1-Flash 支持原生多模态视觉理解,图片输入有三种路径:图片链接base64Files API。三者在本地服务中的预处理与缓存设计差异很大。

  • 图片链接:服务端从 URL 拉取。优点是请求体小、便于复用;坑点是外网可达性与防盗链,且同一 URL 内容可能变化,不能把 URL 直接当缓存键,应结合 ETag 或内容哈希。本地部署若出网受限,需要自建代理拉取并落盘再转 base64。
  • base64:自包含、无外部依赖,适合内网与离线场景;代价是请求体膨胀约 33%,且大量重复图片会反复传输。应在网关层做图片内容哈希去重,命中后替换为引用 ID。
  • Files API:先上传再引用,最适合大图与多轮复用。工程上应实现「上传即登记」的资源表,记录文件 ID、哈希、TTL,并在会话维度做引用计数,避免文件泄漏。

缓存设计要点:把图像特征(而非原始字节)视为可复用对象,同图不同提问优先命中视觉编码结果;同时注意多模态输入的 KV 同样落在 890 bytes/token 的账本内,长图 + 长上下文的组合要提前做预算。视觉请求建议走非思考或思考 low 档,除非任务本身需要深度视觉推理,否则 max 档会造成明显的延迟浪费。

JSON Output、Tool Calls 与 Responses API:结构化输出的工程实现

V4.1-Flash 支持 JSON Output、Tool Calls、Responses API、Anthropic API,以及对话前缀续写与 FIM(仅非思考)。对本地服务编排来说,真正的分水岭是「谁负责保证结构正确」。

  1. JSON Output:适合抽取与数据管道,应在服务端做 schema 校验与失败重试,禁止把未校验的 JSON 直接写库。建议用严格 schema(必填字段 + 枚举约束)而不是自由格式描述。
  2. Tool Calls:由模型决定调用哪个工具,服务端必须做工具白名单 + 参数 schema 校验 + 超时熔断三件套,防止模型虚构工具名或参数。多步工具链建议限制最大轮数,并与思考档位绑定(复杂链路上 high,简单链路 low)。
  3. Responses API:比传统 chat 更贴近「一次请求一个结构化响应」的范式,适合把多步编排收敛到单次调用;对本地网关来说,响应对象的状态机更简单,利于做幂等与重放。
  4. Anthropic API:为已有 Anthropic 生态客户端提供兼容接入,本地服务可同时暴露两套协议,由网关做协议归一化,避免业务侧改造成本。

下面给出一个带 JSON schema 校验与工具白名单的最小实现:

import json
import requests

BASE = "https://api.deepseek.com"
KEY = "your-deepseek-api-key"
HEADERS = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"}

ALLOWED_TOOLS = {"get_weather", "search_docs"}
SCHEMA = {"name": str, "score": (int, float)}  # 期望的结构化字段

def call_json(prompt: str):
    payload = {
        "model": "deepseek-flash",
        "messages": [{"role": "user", "content": prompt}],
        "response_format": {"type": "json_object"},
        "max_tokens": 1024,
    }
    r = requests.post(f"{BASE}/chat/completions",
                      headers=HEADERS, json=payload, timeout=120)
    r.raise_for_status()
    text = r.json()["choices"][0]["message"]["content"]
    try:
        data = json.loads(text)
    except json.JSONDecodeError:
        return {"ok": False, "reason": "invalid_json"}
    for k, typ in SCHEMA.items():
        if k not in data or not isinstance(data[k], typ):
            return {"ok": False, "reason": f"bad_field:{k}"}
    return {"ok": True, "data": data}

def validate_tool_calls(msg):
    calls = msg.get("tool_calls") or []
    for c in calls:
        name = c.get("function", {}).get("name")
        if name not in ALLOWED_TOOLS:
            raise ValueError(f"tool not allowed: {name}")
    return calls

if __name__ == "__main__":
    print(call_json("输出一个 JSON,含 name 与 score 字段"))

坑点:JSON Output 与思考模式叠加时,CoT 可能污染结构字段,务必按官方能力边界使用响应格式并做后校验;Tool Calls 的参数若含嵌套对象,建议逐层校验而非只看顶层类型。

对话前缀续写与 FIM:仅非思考模式下的代码补全链路搭建

官方明确:对话前缀续写与 FIM 仅支持非思考模式(FIM 明确标注「仅非思考」)。这是一个硬约束,意味着你的代码补全链路必须显式关闭思考,否则请求会被拒绝或行为不符预期。

本地代码补全链路的实现要点:

  • 模式锁定:在补全服务的请求构造层强制非思考,禁止从上层透传思考参数,从架构上消除误用。
  • 上下文裁剪:补全请求讲究「前后文窗口」而非「全量文件」。建议按语法块裁剪,保留光标前约若干行与光标后少量行,控制 prompt 长度以压低延迟。
  • FIM 模板一致:FIM 依赖固定的前后缀占位约定,客户端与服务端必须使用同一套模板,否则补全质量会断崖式下降。
  • 前缀续写做约束生成:对话前缀续写适合「给定开头强制续写」,可用于生成固定格式的代码片段或配置项。
  • 缓存复用:同一文件的历史补全 KV 可按前缀哈希复用,命中缓存后输入成本可降到空闲 0.02 元 / 高峰 0.04 元每百万 tokens 的档位,这在 IDE 高频触发场景下是决定性的成本优化。

延迟预算上,补全体验要求首 token 尽快返回,因此必须走非思考 + 短输出,并配合流式返回。到这里,架构、显存、KV、长序列、思考档位、多模态、结构化输出与补全链路已经铺开,下一部分将进入高并发服务的编排、并发限制 2500 下的排队与限流设计、定价与高峰/空闲策略的成本核算(高峰为周一至五 9:00-12:00、14:00-18:00,空闲价为高峰一半;缓存命中输入空闲 0.02 元/高峰 0.04 元、未命中输入空闲 1 元/高峰 2 元、输出空闲 4 元/高峰 8 元),以及从 API 到本地部署的迁移路径与压测方法。

在上半部分中,我们已经把 DeepSeek-V4.1-Flash 的 552B MoE 与 CED 非对称架构(输入侧激活 8B、输出侧激活 16B)、1M 上下文与 384K 最大输出、以及 KV Cache 体积从 V4 Flash 的约 3514 bytes/token 降到约 890 bytes/token 这条存储与显存主线梳理清楚了。接下来这一段,我们把视角从模型本身搬到服务侧:模型名与并发、路由切换、定价与错峰、基准解读、权重落地、生态接入,以及那些只有真正上线过才会踩到的迁移坑。

deepseek-flash 模型名与 2500 并发:API 兼容路由与旧名迁移

第一件事是把模型名锁定。DeepSeek-V4.1-Flash 的 API 模型名就是 deepseek-flash,官方给出的并发限制为 2500。这个数字对高级读者意味着什么?它不是一个孤立的 QPS 指标,而是你要用来反推客户端连接池、重试队列和限流器阈值的上限约束。生产环境建议把本地信号量设置在 2200~2400,留出约 4%~12% 的余量给健康检查、灰度探针和运维调用的突发流量。

同时要注意旧名的生命周期。旧的 deepseek-v4-flashdeepseek-v4-flash-vision-exp 已经下线,目前是兼容路由——也就是说,请求打到旧名不会立刻 404,而是被透明转发到 V4.1-Flash。这既给了你平滑迁移的窗口,也埋了一个隐患:你的调用链里可能还残留旧名,错误不会暴露,直到兼容路由被彻底移除的那一天集体爆掉。工程上的正确做法是:把模型名收敛到一个配置项(环境变量或配置中心),同时在网关上打印一条包含旧名的 warn 日志,用「旧名命中率」这个指标驱动迁移进度。

视觉能力这次是原生多模态视觉理解,支持图片链接、base64、Files API 三种输入形态。过去 V4-Flash-Vision-Exp 是独立模型名,现在统一收敛到 deepseek-flash 之后,你的路由层不再需要按「文本/视觉」分叉,只需要在 content 数组里放不含 image_url 就是纯文本请求。这简化了架构,但也意味着同一把限流闸门要同时承载文本和视觉流量,视觉请求的 token 放大效应必须单独做配额。

import os
import asyncio
import httpx

API_KEY = os.environ.get("DEEPSEEK_API_KEY", "your-deepseek-api-key")
BASE_URL = "https://api.deepseek.com"
MODEL = "deepseek-flash"
MAX_CONCURRENCY = int(os.environ.get("DS_MAX_CONCURRENCY", "2200"))

sem = asyncio.Semaphore(MAX_CONCURRENCY)

async def call_flash(client, messages, thinking="high"):
    body = {
        "model": MODEL,
        "messages": messages,
        "max_tokens": 8192,
        "thinking": {"type": "enabled", "effort": thinking},
        "stream": False,
    }
    async with sem:
        for attempt in range(5):
            try:
                resp = await client.post(
                    f"{BASE_URL}/chat/completions",
                    headers={"Authorization": f"Bearer {API_KEY}"},
                    json=body,
                    timeout=httpx.Timeout(180.0, connect=10.0),
                )
                if resp.status_code == 429:
                    await asyncio.sleep(min(2 ** attempt, 30))
                    continue
                resp.raise_for_status()
                return resp.json()
            except (httpx.ConnectError, httpx.ReadTimeout):
                await asyncio.sleep(min(2 ** attempt, 30))
        raise RuntimeError("deepseek-flash exhausted retries")

async def main():
    limits = httpx.Limits(max_connections=MAX_CONCURRENCY,
                          max_keepalive_connections=MAX_CONCURRENCY // 2)
    async with httpx.AsyncClient(limits=limits, http2=True) as client:
        tasks = [
            call_flash(client, [{"role": "user", "content": f"审计片段 {i}"}])
            for i in range(50)
        ]
        results = await asyncio.gather(*tasks, return_exceptions=True)
        ok = sum(1 for r in results if isinstance(r, dict))
        print(f"ok={ok} failed={len(results) - ok}")

if __name__ == "__main__":
    asyncio.run(main())

2026-09-14 路由切换:deepseek-v4-pro 请求按 Flash 计费的应对策略

第二个必须写进变更通告窗口的事件是:北京时间 2026-09-14 12:00 起,deepseek-v4-pro 的请求全部路由到 V4.1-Flash,并按 Flash 价计费,直到 V4.1-Pro 上线。这条策略对成本是利好,但对行为一致性是风险。

为什么说是风险?因为 V4 Pro 和 V4.1-Flash 虽然能力基准非常接近(下文会给出具体对比),但在思考模式默认值、输出长度分布、工具调用触发偏好上并不必然一致。如果你的业务逻辑里写了「若模型返回 X 则走分支 A」这类脆弱判断,路由切换当天就可能出现分支漂移。

  • 计费口径要重新对账:过去按 Pro 价预算的账单,切换后会按 Flash 价结算。财务侧的成本模型要同步更新,否则会出现「预算消耗异常低」的误报。
  • 能力回归测试要提前做:在 2026-09-14 之前,把 Pro 的线上样本回放到 deepseek-flash,比对输出长度、工具调用次数、JSON 合法性三个维度。
  • 不要绑定版本号做业务判断:用 response 里的模型字段做逻辑分支是典型的反模式,路由期它会直接变化。
  • 思考强度要显式指定:V4.1-Flash 默认走思考模式,强度分 low/high/max 三档。Pro 请求迁移过来如果没显式降档,可能在高并发场景下平白拉高延迟。

一个务实的灰度策略是:把 Pro 流量按业务线切片,先切 5% 到 deepseek-flash 并显式设置思考强度为 high,观测 P99 延迟与失败率,再阶梯放大到 25%、50%、100%。由于切换是官方侧统一执行的,你能控的只有「显式指定模型名」和「显式指定思考强度」这两件事,所以务必在 12:00 之前把这两项写进配置。

定价模型与高峰/空闲调度:缓存命中与未命中的成本优化

V4.1-Flash 的定价自北京时间 2026-09-10 12:00 生效,单位为每百万 tokens。高峰时段为周一至周五 9:00-12:00 与 14:00-18:00,空闲价格为高峰的一半。相对 V4 Flash,缓存命中降价 60%,未命中降价约 33.3%,输出降价约 11.1%。

计费项空闲时段(元/百万 tokens)高峰时段(元/百万 tokens)优化杠杆
缓存命中输入0.020.04前缀复用、系统提示词固定化
缓存未命中输入12上下文裁剪、检索结果去重
输出48思考强度降档、max_tokens 收紧

这张表揭示了一个非常反直觉的结论:缓存命中与未命中之间是 50 倍的关系(0.02 对 1),而不是常见的 10 倍。也就是说,成本优化的主战场是让输入尽可能落在缓存里,而不是去抠输出。一条命中缓存的输入,几乎等于免费。

基于此,调度策略可以这样组织:

  1. 把稳定的前缀做到极致:系统提示词、工具定义、少样本示例、固定的格式约束,全部前置且字节级不变。任何一处空格改动都会导致缓存前缀失效。
  2. 把可变内容全部后置:用户问题、检索片段、会话历史放在前缀之后,避免污染缓存。
  3. 用对话前缀续写代替重放:V4.1-Flash 支持对话前缀续写,多轮交互时用续写而不是把整段历史重新发一遍,可以同时降低未命中输入量和输出量。
  4. 把非实时任务错峰到空闲时段:批量摘要、数据标注、离线评测、代码仓库索引这类任务,挪到晚间或周末,单位成本直接减半。空闲价 0.02 元/百万 tokens 的缓存命中输入,意味着千万级 token 的离线批处理成本可以压到个位数量级。
  5. 思考强度按任务分档:低复杂度分类任务用 low,常规 Agent 用 high,只有复杂推理与长链路规划才用 max。思考强度直接放大输出 token,而输出在高峰期是 8 元/百万 tokens,是最贵的一档。

另一个容易被忽略的点是 KV Cache 的存储成本。V4.1-Flash 的 KV Cache HBM 需求降至上一代的 1/4、SSD 存储降至 1/8,相比初代 DeepSeek 缩小约 437 倍。这意味着如果你自己托管推理服务,缓存命中率可以做得比以往更高——因为同样的显存可以放下更多会话的前缀缓存。自建场景下,把这个优势转化成更高的命中率,是本地部署的核心收益之一。

官方基准解读:GPQA Diamond 90.9、Codeforces 3471 与 Agent 基准对比

官方基准是选型决策的第一手证据。V4.1-Flash 公布的数字包括:GPQA Diamond 90.9Codeforces 评级 3471MathArena Apex 65.6Terminal-Bench 2.1 得分 90.6CyberGym 88.1。官方发布帖还给出了四项 Agent 基准:Terminal-Bench 3.0 得分 30.0DeepSWE v1.1 得分 74.2CyberGym 88.1Automation-Bench 54.8

基准V4.1-FlashV4 Pro解读
GPQA Diamond90.9研究生级科学问答,接近饱和区间
Codeforces 评级3471竞赛编程顶级水平
MathArena Apex65.6高难数学,仍是非饱和指标
Terminal-Bench 2.190.687.9终端 Agent 任务,领先 2.7 分
CyberGym88.183.3网络安全攻防,领先 4.8 分
Terminal-Bench 3.030.0更新更难的版本,分数天然更低,不要跨版本比较
DeepSWE v1.174.2软件工程 Agent 综合能力
Automation-Bench54.8自动化流程任务,是当前的能力天花板所在

解读这份表格要抓住三点。第一,V4.1-Flash 在 Terminal-Bench 2.1 和 CyberGym 上分别以 90.6 对 87.9、88.1 对 83.3 明确超过 V4 Pro,这解释了为什么官方敢把 Pro 流量直接路由过来——它不是「降级替代」,而是「升级替代」。第二,Terminal-Bench 3.0 的 30.0 和 Automation-Bench 的 54.8 才是真实的能力边界信号,做 Agent 产品时应该用这两个数字做预期管理,而不是用 90.6 去承诺交付成功率。第三,GPQA Diamond 90.9 已经进入饱和区,继续拿它做模型选型区分度很低,应该看 MathArena Apex 65.6 这类非饱和指标。

工程上建议把这套基准转化成你的私有回归集:从线上真实流量里采样 200~500 条,覆盖 JSON Output、Tool Calls、长上下文(接近 1M tokens 的极端样本要单独留几条)、多模态图片理解,每条给出可自动判定的期望结果。官方基准告诉你「能做什么」,私有回归集告诉你「在你的业务上退化没有」。

Hugging Face 权重落地:从 deepseek-ai/DeepSeek-V4.1-Flash 到本地推理服务

权重已经在 Hugging Face 放出,仓库为 deepseek-ai/DeepSeek-V4.1-Flash,并附有技术报告。这是一个关键信号:官方明确表示将与开源社区密切合作推进 V4.1-Flash 推理支持、探索更多部署选项。对高级读者来说,本地部署的价值不在「省 API 费」,而在数据不出域、可做定制化量化、可离线批处理、可做私有数据上的持续评测

此外,国家超算互联网已于 2026-09-11 上线 DeepSeek V4.1 Flash 模型 API 服务与权重文件,开发者可以一键调用 API 或下载权重开展二次开发与本地部署。这提供了一条官方渠道之外的第二条路径。

路径来源优势适用场景
A:托管 APIapi.deepseek.com(deepseek-flash)或国家超算互联网 API零运维、并发上限 2500、按量计费、随版本自动更新快速上线、流量波动大、无 GPU 资源
B:本地权重部署Hugging Face deepseek-ai/DeepSeek-V4.1-Flash 或国家超算互联网权重下载数据不出域、可量化、可定制、无 token 计费敏感数据、离线批处理、深度定制

路径 B 的落地步骤建议这样组织:

  1. 先读技术报告再动手。CED 是非对称架构(输入侧激活 8B、输出侧激活 16B),这意味着预填充与解码阶段的算力需求不对称,显存与算力的规划不能按对称模型的老经验来。
  2. 按 KV Cache 特性做容量规划。890 bytes/token 是官方给出的每 token 体积,用它乘以目标并发会话的上下文长度,就能估算 SSD 侧的缓存池大小。这就是 1/4 HBM、1/8 SSD 这两个数字的工程意义。
  3. 长上下文要单独压测。1M tokens 上下文、384K 最大输出是能力上限,不是经济性配置。实际服务里要对长上下文请求单独建队列,否则一个超长请求会拖垮整个批处理窗口。
  4. 多模态走统一入口。原生视觉理解支持图片链接、base64、Files API。base64 会显著放大请求体,网关层要放宽 body size 限制并对 base64 请求做单独限流。
  5. FIM 只在非思考模式可用。如果你要把模型接进 IDE 做代码补全,必须显式关闭思考模式,否则 FIM 请求会失败。

下面是一个用 Responses API 做本地服务健康校验与能力探针的最小 JSON 示例,可直接作为 CI 里的冒烟测试用例。

{
  "model": "deepseek-flash",
  "base_url": "https://api.deepseek.com",
  "auth": {
    "header": "Authorization",
    "value": "Bearer your-deepseek-api-key"
  },
  "probe_cases": [
    {
      "name": "json_output",
      "request": {
        "model": "deepseek-flash",
        "response_format": { "type": "json_object" },
        "thinking": { "type": "enabled", "effort": "low" },
        "messages": [
          { "role": "user", "content": "返回一个 JSON:字段 ok 为 true,字段 tier 为 flash" }
        ],
        "max_tokens": 128
      },
      "assert": { "json_field": "ok", "equals": true }
    },
    {
      "name": "tool_calls",
      "request": {
        "model": "deepseek-flash",
        "thinking": { "type": "enabled", "effort": "high" },
        "tools": [
          {
            "type": "function",
            "function": {
              "name": "get_storage",
              "description": "查询 SSD 缓存池剩余容量",
              "parameters": {
                "type": "object",
                "properties": { "pool": { "type": "string" } },
                "required": ["pool"]
              }
            }
          }
        ],
        "messages": [
          { "role": "user", "content": "查一下 pool=kv-ssd 的剩余容量" }
        ],
        "max_tokens": 256
      },
      "assert": { "has_tool_call": "get_storage" }
    },
    {
      "name": "fim_non_thinking",
      "request": {
        "model": "deepseek-flash",
        "thinking": { "type": "disabled" },
        "fim": { "prompt": "def fib(n):\n    if n < 2:\n        return n\n    ", "suffix": "\n\nprint(fib(10))" },
        "max_tokens": 64
      },
      "assert": { "non_empty_text": true }
    }
  ]
}

生态接入与大规模部署:WorkBuddy、OpenCode 与 2000 GPU 集群合作

官方合作伙伴 WorkBuddy(含 CodeBuddy)与 OpenCode 已全量接入 V4.1-Flash。这对自建团队的启示是:如果你的场景是 IDE 内代码补全、Agent 式任务执行、自动化工作流,这两家的接入实践可以作为参考实现——它们在 Tool Calls、对话前缀续写、FIM 这些能力上的工程处理方式,基本覆盖了 V4.1-Flash 的主要 API 面。

对于真正的大规模场景,官方开放了合作通道:面向 2000 GPU + 存储集群的大规模部署可与官方洽谈合作。这个量级通常对应的是「私有化部署 + 高并发推理服务」的形态,涉及的不只是权重,还包括推理引擎适配、KV Cache 分层存储、批处理调度、以及多副本一致性。官方的表态是会与开源社区密切合作推进推理支持、探索更多部署选项,意味着推理侧的优化空间还会持续释放。

选型上给一个实用判断:日请求量在百万级以内、且没有强数据驻留要求,优先走托管 API;只有当你的场景涉及敏感数据、需要自定义量化、或者离线批处理量级足够大(比如千万级 token 的日常批处理)时,本地部署的 Total Cost 才可能反超。别为了「自主可控」的直觉去做一件成本更高的工程。

本地部署工程坑:旧模型下线、C 端入口整合与版本兼容排查

迁移期最常见的坑,几乎全都来自「你以为旧的东西还在」。逐条列出并给出排查方法:

  • V4 Flash 与 V4-Flash-Vision-Exp 已停止服务。当前 deepseek-v4-flash 与 deepseek-v4-flash-vision-exp 是临时兼容路由到 V4.1-Flash。排查方法:在网关按模型名打点,统计每天命中旧名的请求量,非零就说明还有未迁移的调用方。
  • 旧名兼容路由会掩盖真实错误。请求不会 404,响应结构也可能「差不多」,但细节会变。排查方法:对旧名请求强制加一个响应头标记,让调用方在日志里能一眼看到自己还在用旧名。
  • C 端三入口已整合。App/Web 端原来的「快速响应 / 专业咨询 / 图像识别」三个对话入口,现在整合为单一交互界面。如果你的自动化脚本或 RPA 依赖了这三个入口的 UI 路径,升级后会直接失效。排查方法:把 UI 自动化用例里的选择器从入口级改为功能级。
  • 视觉能力不再是独立模型名。原先按 deepseek-v4-flash-vision-exp 分叉的路由逻辑要删掉,统一用 deepseek-flash,靠消息结构区分是否含图像。
  • FIM 与思考模式的互斥。FIM 仅非思考模式可用,若你的 IDE 插件默认开着思考模式,补全请求会失败。排查方法:在插件层强制为 FIM 请求设置思考关闭。
  • 并发 2500 被多路共享。当文本、视觉、FIM 流量共用一个模型名时,它们共享同一个并发额度。排查方法:按业务线分配本地信号量子配额,避免单一业务打满 2500 导致其他业务排队。
  • 思考模式默认开启带来的延迟突变。V4.1-Flash 默认走思考模式,从 Pro 迁过来的请求如果没显式降档,延迟分布会整体右移。排查方法:对延迟敏感的接口显式指定 effort 为 low,并观测 P99。

建议在 2026-09-14 12:00 的路由切换窗口前,完成一次全链路模型名审计:客户端 SDK、网关、服务端配置、定时任务、CI 冒烟测试、监控告警规则里的模型名,全部 grep 一遍。这个动作花不了半天,但能避免切换当天的手忙脚乱。

总结与最佳实践

  • 锁模型名:统一使用 deepseek-flash,base_url 为 https://api.deepseek.com;旧名 deepseek-v4-flash 与 deepseek-v4-flash-vision-exp 只在兼容路由期存在,用「旧名命中率」指标驱动清零。
  • 管并发:并发上限 2500,本地信号量建议设在 2200~2400,并按业务线分配子配额,避免文本/视觉/FIM 互相挤占。
  • 备路由切换:北京时间 2026-09-14 12:00 起 deepseek-v4-pro 请求全部路由到 V4.1-Flash 并按 Flash 价计费,直至 V4.1-Pro 上线;提前做能力回归测试,不绑定版本号做业务分支,显式指定思考强度。
  • 抠缓存:缓存命中输入空闲 0.02 元、高峰 0.04 元;未命中输入空闲 1 元、高峰 2 元;输出空闲 4 元、高峰 8 元。命中与未命中是 50 倍差,把稳定前缀做到字节级不变,可变内容全部后置。
  • 错峰跑批:高峰为周一至周五 9:00-12:00 与 14:00-18:00,空闲价为高峰一半;批量摘要、数据标注、离线评测挪到空闲时段,单位成本直接减半。
  • 控输出:输出是最贵的一档(高峰 8 元/百万 tokens),按任务分档思考强度 low/high/max,收紧 max_tokens,多轮用对话前缀续写而非重放历史。
  • 看对基准:GPQA Diamond 90.9、Codeforces 3471、MathArena Apex 65.6、Terminal-Bench 2.1 90.6、CyberGym 88.1;对比 V4 Pro 的 Terminal-Bench 2.1 87.9 与 CyberGym 83.3;Agent 侧看 Terminal-Bench 3.0 的 30.0、DeepSWE v1.1 的 74.2、Automation-Bench 的 54.8,用它做预期管理。
  • 选路径:托管 API(含国家超算互联网 2026-09-11 上线的 API 服务)适合快速上线;Hugging Face 仓库 deepseek-ai/DeepSeek-V4.1-Flash 附技术报告,适合数据不出域与深度定制。
  • 用 KV Cache 优势:每 token 约 890 bytes(V4 Flash 约 3514 bytes),HBM 降至上一代 1/4、SSD 降至 1/8,相比初代 DeepSeek 缩小约 437 倍;自建时用这个空间换更高缓存命中率。
  • 守能力边界:上下文 1M tokens、最大输出 384K tokens 是上限不是经济配置;多模态支持图片链接、base64、Files API;FIM 仅非思考模式可用;JSON Output、Tool Calls、Responses API、Anthropic API 按需选用。
  • 接生态:WorkBuddy(含 CodeBuddy)与 OpenCode 已全量接入,可作为参考实现;面向 2000 GPU + 存储集群的大规模部署,直接与官方洽谈合作。
  • 做审计:V4 Flash 与 V4-Flash-Vision-Exp 已停止服务、C 端三入口已整合为单一界面;上线前对 SDK、网关、配置、定时任务、冒烟测试、告警规则做一次全链路模型名与入口路径审计。