DeepSeek 同一天开源 3 个底层仓库:模型之下,正在长出一层'国产算力抽象层'

昨天(9 月 10 日)DeepSeek 发布 V4.1 Flash,满屏都在讲"新模型更强还更便宜、Pro 四天后下线"。但真正让内核程序员眼皮跳的,是同一时刻挂出来的另外三样东西——不是模型权重,是三个内核级仓库:
- 9/8 建仓的 DeepJIT(206★,C++20):一个头文件级的 xPU 内核 JIT 运行时,同一套
compile / load / launch接口,同时编译、缓存、加载 NVIDIA CUDA 和华为昇腾 NPU 的算子; - 9/9 建仓的 DeepSelect(233★,CUDA):DeepSeek 稀疏注意力(DSA)用的 TopK 内核,官方 README 标注被 V3.2 / V4 / V4.1 使用,比
torch.topk快 2~20 倍; - 9/10 建仓的 deepseek-recipe(212★,Rust):V4 与 V4.1 的对话渲染与 token 编码适配层。
三个仓库,9 月 8 号到 10 号三天内接连上线,紧贴新模型发布日期。模型当天发,支撑它的底层工程栈同一天全开出来。
这已经不是"发布模型顺便开源几个库",这是 DeepSeek 从"开源权重"走向"开源整套推理软件栈“的一次明确表态。
一个 JIT,两头吃
先看最值得琢磨的那个——DeepJIT。
它是头文件级(header-only)C++20 库,意思是你不用编译它、不用链接它,#include 进来就能用。它解决一个很具体的痛点:写大模型算子的团队,过去给英伟达写一套 CUDA 内核,换到华为昇腾就得用 CANN/Bisheng 那套工具链重写一遍。两套工具链的编译、加载、启动逻辑完全不同。
DeepJIT 做的事情是:把"编译内核源码 → 缓存产物 → 加载到设备 → 启动"这套流程抽成公共层,CUDA 和 Ascend 两个后端共用同一份缓存、同一套懒加载、同一个 deep_jit::Runtime<T> 接口。
|
|
换一行模板参数,同一个扩展库就能在另一块芯片上跑。内核源码和编译选项仍各自私有(CUDA 走 NVCC、昇腾走 Bisheng + ld.lld),但基础设施完全共享——运行时配置、源文件与头文件的哈希缓存、内存缓存、磁盘缓存、懒初始化,全部一份。

这意味着什么?意味着以后 DeepSeek 家族任何新算子,写一遍就能同时出 CUDA 版和昇腾版。它不是某个模型的自救,是一层可移植的算力抽象——开发者面对的是"DeepSeek 芯片"这个统一的逻辑设备,底下是英伟达还是昇腾,由编译目标决定。
为什么值得盯这三行代码
你可能觉得:不就一个 JIT 库吗?真跑服务的又不动它。
错。把它放进整个上下文里看就懂了。
过去一个月,DeepSeek 干了一件让社区炸锅的事:8 月中旬给 V4 Pro 涨价,最高 11 倍,搞了峰谷定价,开发者骂声一片。9 月 9 号突然宣布 Flash 降价,缓存命中价砍 60%。大家以为是"良心发现”。
结果 9 月 10 号谜底揭开——是新模型把成本真打下来了。
V4.1 Flash 用了一个关键改动:非对称的 Causal-Encoder-Decoder 结构。输入阶段每 token 只激活 8B 参数,输出阶段激活 16B。为什么敢这么设计?因为 Agent 时代的负载是典型的"读多写少"——一个 agent 跑任务,要读海量代码、文档、工具返回,真正自己写出来的没多少。既然读不需要那么"聪明",就用小脑子读、大脑子写,成本自然掉下来。
配合 KV Cache 的暴力压缩:每 token 从上一代压到 890 字节,对 HBM 的需求降到 1/4、SSD 降到 1/8,比 DeepSeek 初代模型缩小了 437 倍。Agent 反复读同一段上下文,这部分缓存费用以前是账单大头,现在基本白送。
所以那个"划算"不是营销话术,是工程上真的算得过来账。而把成本打下来的这套底层能力——非对称结构、稀疏注意力、KV Cache 压缩、运行时内核 JIT——全部对应到那三个开源仓库里:
- DeepJIT 管运行时内核的编译与缓存;
- DeepSelect 管稀疏注意力里最贵的 TopK 选择(DSA 的"闪电索引器"先用它粗筛最相关的键,再做细粒度注意力,复杂度从 O(L²) 降到近似 O(L));
- deepseek-recipe 管 API 协议和对话格式的适配。
模型负责"变聪明",这几个仓库负责"变便宜"。 你把权重开源了,别人不一定复刻得出来这套效率;把效率栈也开源了,才是真把底牌亮出来。
也泼一盆冷水
别急着高潮。三个仓库目前的 star 都还只有 200 出头——这说明它们是真内核工程,不是拿来给开发者点赞的玩具。
三个现实约束你得知道:
第一,DeepJIT 支持昇腾,不等于 V4.1 已经跑在昇腾上。它提供的是"同一套代码能出两个后端"的能力,具体某个算子有没有真在昇腾上验证、性能多少,得看仓库里的集成测试和你的实际硬件。网上传的"V4 全面迁移昇腾"是 4 月的旧闻(关于 V4 而非 V4.1 Flash),别混为一谈。
第二,这套栈是给"写算子的人"用的,不是给"调 API 的人"用的。如果你只是 curl 一发调 deepseek-flash 接口,那三个仓库跟你没关系。它们的目标读者是那些要自己写 FlashAttention、写 MoE 路由、做长上下文推理引擎的工程团队——以及想"看懂 DeepSeek 到底怎么把成本打下来"的人。
第三,性能数字要按 README 原文为准。DeepSelect 的"2~20 倍 vs torch.topk",DeepJIT 的多级缓存,都是有明确边界条件的(特定的 batch、特定的硬件、特定的数据排布)。拿到自己机器上,数据形状不对,加速比会缩水。
明天能试的一件事
如果你在做推理侧或者长上下文相关的事,这三件事是今天就能动手的:
-
盯 DeepJIT 的共享缓存。它支持多个进程、多个节点共享同一个磁盘缓存目录(
DJ_JIT_CACHE_DIR),编译一次、全集群复用。如果你团队在跑批量推理、内核反复重编,这个缓存命中率就是白省的成本。 -
替换掉你的
torch.topk。做稀疏注意力或采样器,直接试pip installDeepSelect,跑一下你的真实数据形状。官方说 2~20 倍,你只需要确认在你的 batch 和 vocab 下有没有收益——有就用,没有就删,一小时的事。 -
读 deepseek-recipe 的对话渲染。如果你在给 V4/V4.1 写 agent 工具链、要精确复刻官方对话编码(多轮、图像占位符、thinking 模式),别自己瞎猜格式,直接用这个 Rust crate 或参考它的渲染逻辑。
三年前,DeepSeek 开源 DeepSeek-V3 权重,全球 70+ 企业接入,靠的是"模型开源";昨天,它把模型底下那层别人看不见的工程也摊开了。对写内核的人来说,这比一个 552B 的权重值钱得多——因为它意味着:不管最后用的是英伟达还是昇腾,DeepSeek 已经替你把这层墙砌好了,就差你来填算子了。