今天小編分享的科學經驗:4090單卡跑滿血版DeepSeek-R1,清華團隊開源項目再破大模型推理門檻,歡迎閱讀。
DeepSeek-R1 火遍海内外,但推理伺服器頻頻宕機,專享版按 GPU 小時計費的天價成本更讓中小團隊望而卻步。
而市面上所謂 " 本地部署 " 方案,多為參數量縮水 90% 的蒸餾版,背後原因是 671B 參數的 MoE 架構對顯存要求極高——即便用 8 卡 A100 也難以負荷。因此,想在本地小規模硬體上跑真正的 DeepSeek-R1,被認為基本不可能。
但就在近期,清華大學 KVCache.AI 團隊聯合趨境科技發布的KTransformers開源項目公布更新:
支持 24G 顯存在本地運行 DeepSeek-R1、V3 的 671B 滿血版。預處理速度最高達到286 tokens/s,推理生成速度最高能達到14 tokens/s。
其實早在 DeepSeek-V2 時代,這個項目就因 " 專家解除安裝 " 技術而備受關注——它支持了 236B 的大模型在僅有 24GB 顯存的消費級顯卡上流暢運行,把顯存需求砍到 10 分之一。
△HuggingFace 的開源負責人的點贊
随着 DeepSeek-R1 的發布,社區的需求迅速激增,在 GitHub 蓋起上百樓的 issue,呼籲對其進行支持。
版本更新發布後,不少開發者也紛紛用自己的 3090 顯卡和 200GB 内存進行實測,借助與 Unsloth 優化的組合,Q2_K_XL 模型的推理速度已達到 9.1 tokens/s,真正實現了千億級模型的 " 家庭化 "。
此外,KTransformers 團隊還公布了 v0.3 預覽版的性能指标,将通過整合 Intel AMX 指令集,CPU 預填充速度最高至 286 tokens/s,相比 llama.cpp 快了近 28 倍。對于那些需要處理上萬級 Token 上下文的長序列任務(比如大規模代碼庫分析)來說,相當于能夠從 " 分鍾級等待 " 瞬間邁入 " 秒級響應 ",徹底釋放 CPU 的算力潛能。
另外,KTransformers 還提供了兼容 Hugginface Transformers 的 API 與 ChatGPT 式 Web 界面,極大降低了上手難度。同時,其基于 YAML 的 " 模板注入框架 " 能夠靈活切換量化策略、内核替換等多種優化方式。
目前,KTransformers 在 localLLaMa 社區持續位居熱榜第一,有上百條開發者的讨論。
項目背後的技術細節,團隊也給出了詳細介紹。
利用 MoE 架構的稀疏性
DeepSeek-R1/V3 均采用了 MoE(混合專家)架構,這種架構的核心是将模型中的任務分配給不同的專家模塊,每個專家模塊專注于處理特定類型的任務。MoE 結構的模型具有很強的稀疏性,在執行推理任務的時候,每次只會激活其中一部分的模型參數。
因此,MoE 架構需要大量的存儲空間,但是并不需要很多的計算資源。
基于此,團隊采用了 GPU/CPU 的異構計算劃分策略:僅将非 Shared 部分的稀疏 MoE 矩陣放在 CPU/DRAM 上并使用 llamafile 提供的高速算子處理,剩餘稠密部分放在 GPU 上使用 Marlin 算子處理。
在這樣的情況下,同樣使用 4bit 量化,GPU 上的參數只需要 24GB 的顯存環境,這樣的消耗只需要一張 4090 就能滿足。
此外通過這樣的組合,還能夠大幅度提升整個推理的性能,達到 286 token/s 的預填充和 14 token/s 的生成速度,比 llama.cpp 快 28 倍。
具體到技術實現中,團隊采用了基于計算強度的 offload 策略、高性能的 CPU 和 GPU 算子、CUDA Graph 加速的多種方式來加速推理速度。
基于計算強度的 offload 策略
在 Attention 的核心,DeepSeek 引入了一種新的 MLA 算子,它能夠充分利用顯卡算力,能夠很大程度提升效率。然而,MLA 運算符在官方開源的 v2 版本中,是将 MLA 展開成 MHA 進行的計算,這個過程不僅擴大了 KV cache 大小,還降低了推理性能。
為了真正發揮 MLA 的性能,在 KTransformers 推理框架中,團隊将矩陣直接吸收到 q_proj 和 out_proj 權重中。因此,壓縮表示不需要解壓縮來計算 Attention。
這種調整顯著減少了 KV 緩存大小,并增加了該運算符的算術強度,這非常顯著地優化了 GPU 計算能力的利用率。
在計算中,MLA 和 Expert 的計算強度相差數千倍。因此,團隊通過計算強度來決定劃分策略,優先将計算強度高的放入 GPU(MLA > Shared Expert > Routed Expert),直到 GPU 放不下為止。
引入 CPU 和 GPU 的高性能算子
在 CPU 算子中,團隊使用 llamafile 作為 CPU 内核,使用 expert 并行和其他優化,組成高性能算子框架 CPUInfer。此外增加多線程、任務調度、負載均衡、NUMA 感知等優化。
在 GPU 算子的使用上,團隊引入 Marlin 算子作為 GPU 計算的内核,它能夠非常高效地進行量化後的矩陣計算,和 torch 這些計算量化後的矩陣乘法的庫相比,使用 Marlin 算子完成在 GPU 上面的計算大概可以達到 3.87 倍的理想加速效果。
CUDA Graph 的改進和優化
為了平衡推理性能和框架本身的易用性 / 可擴展性,基于 Python 構建 KTransformers 框架,同時使用 CUDA Graph 降低 Python 調用開銷是一個必然的選擇。
KTransformers 中使用 CUDA Graph 過程中盡可能地減少了 CPU/GPU 通訊造成的斷點,在 CUDA Graph 中摻雜和 CPU 異構算子通訊,最終實現一次 decode 僅有一個完整的 CUDA Graph 調用的結果。
靈活高效的推理實驗平台
值得關注的是,KTransformers 不止是一個固定的推理框架,也不只能推理 DeepSeek 的模型,它可以兼容各式各樣的 MoE 模型和算子,能夠集成各種各樣的算子,做各種組合的測試。
此外還同時提供了 Windows、Linux 的平台的支持,方便運行。
當大模型不斷往上卷,KTransformers 用異構計算打開一條新的推理路徑。基于此,科研工作者無需巨額預算也能夠探索模型本質。
GitHub 地址:https://github.com/kvcache-ai/ktransformers
具體技術細節指路:https://zhuanlan.zhihu.com/p/714877271
* 本文系量子位獲授權刊載,觀點僅為原作者所有。