源DeepInfer:只支持一個(gè)模型,為什么還值得看)
10 月 20 日DeepSeek 把自家線上服務(wù)用的推理框架 DeepInfer 開(kāi)源了Apache 2.0 協(xié)議可以商用。同步放出來(lái)的還有 deepseek-recipe一個(gè) MIT 協(xié)議的 token 編解碼組件官方說(shuō)它的處理邏輯和 DeepSeek API 對(duì)得上。這條消息在知乎和 Reddit 的 r/LocalLLaMA 上都掛了幾天討論集中在兩件事顯存占用、部署成本以及“跟 vLLM、SGLang 比到底誰(shuí)快”。先把冷水潑在前面這個(gè)框架普通開(kāi)發(fā)者基本用不起來(lái)。它只支持 DeepSeek-V4.1-Flash 一個(gè)模型只支持離線推理硬件只認(rèn) NVIDIA SM100Blackwell和華為昇騰 950官方給出的最小高效生產(chǎn)單元是 64 張 prefill 卡加 64 張 decode 卡。沒(méi)有一個(gè)個(gè)人開(kāi)發(fā)者或者小團(tuán)隊(duì)會(huì)為跑一個(gè)模型去湊這個(gè)配置。那為什么還值得看因?yàn)樗且环莺币?jiàn)的、前沿實(shí)驗(yàn)室真實(shí)服務(wù)棧的完整剖面。這種東西平時(shí)只在論文的“實(shí)現(xiàn)細(xì)節(jié)”一節(jié)里出現(xiàn)三句話。一、開(kāi)源了什么沒(méi)開(kāi)源什么開(kāi)源的部分模型權(quán)重、TileLang 算子庫(kù)、推理引擎本體、編解碼組件。這條鏈路是完整的——從權(quán)重到算子到框架到 tokenizer 層一家公司線上服務(wù)需要的東西基本都在。沒(méi)開(kāi)源的部分官方說(shuō)得也挺直白KV cache 存儲(chǔ)系統(tǒng)、Prefill/Decode 分離P/D disaggregation、跨數(shù)據(jù)并行副本的負(fù)載均衡這三塊和內(nèi)部基礎(chǔ)設(shè)施耦合太深沒(méi)放出來(lái)。這意味著什么意味著你拿到的是一個(gè)能跑的引擎不是一個(gè)能直接對(duì)外提供服務(wù)的服務(wù)。想做成 OpenAI 兼容的在線 API還得自己補(bǔ) KV cache 管理、請(qǐng)求調(diào)度和網(wǎng)關(guān)。這些活 vLLM 和 SGLang 已經(jīng)替你干完了。所以看到“DeepSeek 開(kāi)源推理框架vLLM 要完了”這類標(biāo)題可以直接跳過(guò)。README 里寫得很清楚它最初就是基于 vLLM 起步的借鑒了 SGLang 和 TensorRT-LLM 的思路。它是站在這些項(xiàng)目肩膀上做極致優(yōu)化的產(chǎn)物不是替代品。二、真正的技術(shù)增量在哪我把官方 QA 和技術(shù)解讀看了一遍值得記的有三塊。第一塊Wide-EP 的工程結(jié)論。Attention 層用數(shù)據(jù)并行MoE 層用專家并行加一個(gè)專家負(fù)載均衡器EPLB。decode 階段在超節(jié)點(diǎn)內(nèi)跑 EP64 到 EP128prefill 階段用顯存夠用的最小 EP通常是 EP2 到 EP8。官方的性能曲線里有一張 EP8 對(duì) EP64 的對(duì)比圖結(jié)論是 EP64 在每個(gè) batch size 下都領(lǐng)先。這個(gè)結(jié)論對(duì)做 MoE 部署的人有參考價(jià)值專家并行的寬度不是夠用就行寬了確實(shí)更快代價(jià)是要有超節(jié)點(diǎn)。第二塊DSpark按置信度調(diào)度的投機(jī)解碼。常規(guī)投機(jī)解碼是草稿模型每步猜 N 個(gè) token然后全部送去驗(yàn)證。DSpark 加了一個(gè) Confidence Head預(yù)測(cè)每個(gè)草稿 token 的接受概率調(diào)度器只驗(yàn)證最有價(jià)值的那段前綴。官方數(shù)據(jù)是驗(yàn)證的草稿 token 量減少約 30%從 5.00 降到 3.2 到 4.4 之間浮動(dòng)而實(shí)際接受長(zhǎng)度幾乎沒(méi)變3.29 對(duì) 3.20。翻譯成人話同樣的產(chǎn)出少算了三成的驗(yàn)證量。這個(gè)思路不復(fù)雜但把“驗(yàn)證預(yù)算”當(dāng)成可調(diào)度資源來(lái)做是個(gè)挺實(shí)用的角度。第三塊SWA bounded replay?;瑒?dòng)窗口注意力的狀態(tài)在緩存命中時(shí)只需要重算最后 128 個(gè) token重算成本和上下文長(zhǎng)度解耦。官方說(shuō)在 decoder 層這能讓 prefill 的總計(jì)算量接近減半。長(zhǎng)上下文場(chǎng)景里這是個(gè)硬收益。131072 上下文的 benchmark 里prefill 在 4 張 SM100 上、每 rank 4096 token 時(shí)大約 6 萬(wàn)非緩存 token/s/GPU到 65536 token 時(shí)接近 9 萬(wàn)每步約 730 毫秒。decode 側(cè)的官方數(shù)字是EP64DP64、每 rank 256 個(gè)請(qǐng)求時(shí)單卡超過(guò) 25000 輸出 token/s單用戶接近 100 token/s請(qǐng)求數(shù)降到 8 時(shí)單用戶速度超過(guò) 300 token/s。單集群日處理 155 萬(wàn)億 token。這些數(shù)字都是自報(bào)的官方也標(biāo)了是自報(bào)看的時(shí)候心里打個(gè)折。三、對(duì)普通開(kāi)發(fā)者意味著什么分三種人說(shuō)實(shí)話。個(gè)人開(kāi)發(fā)者、小團(tuán)隊(duì)繼續(xù)用 vLLM 或 SGLang。不是 DeepInfer 不好是它壓根沒(méi)打算服務(wù)你。一個(gè)模型、兩種卡、離線推理這三條里任何一條都?jí)虬涯銚踉谕饷?。手上有一?4090 想本地跑模型的這篇新聞跟你無(wú)關(guān)別被標(biāo)題帶著去折騰。有昇騰集群的團(tuán)隊(duì)這是這次最實(shí)際的價(jià)值。國(guó)產(chǎn)卡跑大模型的軟件棧一直是短板能同時(shí)支持 NVIDIA SM100 和昇騰 950 的生產(chǎn)級(jí)框架不多。雖然門檻高構(gòu)建要求 Linux、GCC 13 以上、Python 3.12、CUDA 13 或 CANN 9.2但至少多了一個(gè)可評(píng)估的選項(xiàng)而且是 DeepSeek 自己在線上跑過(guò)的。做推理優(yōu)化的工程師值得把代碼讀一遍。三個(gè)點(diǎn)可以重點(diǎn)看wide-EP 下的專家負(fù)載均衡怎么做的、投機(jī)解碼的驗(yàn)證預(yù)算怎么調(diào)度、SWA 的 bounded replay 怎么把重算成本做成常數(shù)。這三個(gè)問(wèn)題不分模型換成別的 MoE 一樣存在。官方還提了一句開(kāi)源版的 FlashMLA decode 算子比內(nèi)部版慢 5% 到 10%端到端差距在 5% 以內(nèi)——這個(gè)差距本身也說(shuō)明框架層的優(yōu)化空間和算子層的優(yōu)化空間是兩回事。四、幾個(gè)容易踩的坑別指望它替代線上服務(wù)框架。缺 KV cache 系統(tǒng)和 P/D 分離你補(bǔ)這部分的工作量可能超過(guò)自己寫業(yè)務(wù)。別拿它和 vLLM 比通用性。一個(gè)支持 200 模型架構(gòu)、一個(gè)支持 1 個(gè)這個(gè)比較本身沒(méi)有意義。要比就比同一個(gè)模型、同一批卡、同樣的并發(fā)下的吞吐和延遲。注意“離線推理”這四個(gè)字。它是一批一批跑任務(wù)的形態(tài)不是接在網(wǎng)關(guān)后面等用戶請(qǐng)求的形態(tài)。想清楚你的場(chǎng)景再動(dòng)手。硬件清單先對(duì)照。SM100 和昇騰 950這兩樣都不是能隨便租到的卡。五、收尾這次開(kāi)源最有意思的地方不在性能數(shù)字在于一個(gè)做模型的公司在往基礎(chǔ)設(shè)施層延伸權(quán)重開(kāi)源了算子開(kāi)源了現(xiàn)在連跑權(quán)重的引擎也開(kāi)源了。對(duì)生態(tài)來(lái)說(shuō)是好事標(biāo)準(zhǔn)越透明后來(lái)者踩的坑越少對(duì)同行來(lái)說(shuō)也是壓力以后“我們線上是這么跑的”會(huì)變成一個(gè)必須回答的問(wèn)題。至于普通打工人看完這條新聞最該記住的可能是一句老話benchmark 是自報(bào)的架構(gòu)選擇是自己的。你怎么看評(píng)論區(qū)聊聊。