DeepSeek 低成本部署方案

目前的几种方案,总结下来的思路都是拿时间去换成本

DeepSeek R1 模型就成了很多应用场景下的当务之急。受限于 DeepSeekR1 671B(6710 亿参数)的模型规模,通常情况下部署 Deepseek R1 满血版模型需要 1200G 左右显存(考虑百人内并发情况),需要双节点 8 卡 H100 服务器才能运行(总成本约在 260 万-320 万左右),即便是 INT4 半精度下,也至少需要 490G 显存,需要单节点 8 卡 H100 服务器才能运行。

为了实现低成本 DeepSeek R1 模型的高性能部署,目前大多数方案都采用了牺牲模型推理速度的策略。使用 CPU+GPU 混合推理的方式,将一部分推理计算转移到 CPU 上,降低 GPU 的负载。由于 CPU 并不适合深度学习计算,导致模型整体推理速度较慢

方案一

省流:使用 Llama.cpp 的纯 cpu 部署的方案,可以节省出昂贵的 GPU 成本进行部署,缺点是没有并发能力,且吐字慢

2023年3月,即Llama第一代模型开源不久,GeorgiGerganov在GitHub上发起了一个名为llama.cpp的项目, 该项目用C语言编写深度学习底层张量计算库,极大程度降低了大模型等深度学习算法的计算门槛,并最终使 得大模型可以在消费级CPU上运行。目前该项目已成为大模型量化的标准解决方案,DeepSeek R1模型的Q2、 Q4、Q8等模型量化都是借助llama.cpp完成。

项目地址:https://github.com/ggml-org/llama.cp

借助llama.cpp,可以使用纯CPU模式来运行DeepSeek R1模型,但需要大量的内存来加载模型权重,并且运 行速度非常慢,即使是志强4代这种较强性能的CPU,DeepSeek R1 Q4_K_M模型推理速度也只有4tokens/s左 右。而且并发性能较差,一个400字的小作文,就得写个2、3分钟。

方案二

省流:使用 KTransformers 技术,得益于 deepseek 的 moe 架构,把激活的专家放到一块 GPU 上运行,这样会稍微快一些,缺点是部署困难还不成熟,同时并发能力没有,吐字慢

KTransformers(Quick Transformers)项目是清华大学发起的,可以借助R1模型的MoE架构特性,将专家模型 的权重加载到内存上,并分配CPU完成相关计算工作,同时将MLA/KVCache加载到GPU上,进而实现 CPU+GPU混合推理,这样就达到了最大化降低显存占用的目的。

项目地址:https://github.com/kvcache-ai/ktransformers

与llama.cpp的问题类似,模型推理速度也会因为CPU的特性而变慢,需要大量的内存来加载模型权重。经过测评,4代志强芯片能达到10token/s,并且KTransformersduiGPU性能挖掘不够充分,高并发场景表现较为乏力, 适合小团队及个人学习使用。但其优势在于内存价格便宜,整体上部署成本较低。

方案三

省流:使用 Unsloth 动态量化,实际上也是降低精度来换取速度,只是不像其他量化模型那样全量化,精度损失没那么多,同时也实现 cpu + gpu 负载均衡来降低成本,相较于前两者,并发能力较强,但是缺点就是成本压不下来。

Unsloth团队提出了动态量化方案,所谓动态量化的技术,指的是可以围绕模型的不同层,进行不同程度的量化,关 键层量化精度较高,非关键层量化精度较低。该团队最终得到了一组比Q2量化程度更深的模型组,分别是1.58-bit、 1.73-bit和2.22-bit模型组。尽管量化精度较低,但实际性能其实并不弱。并且,Unsloth也实现了把模型权重分别加 载到CPU和GPU上的方法,用户可以根据自己实际硬件情况,自行选择加载到CPU内存上计算的模型权重数量。

项目地址:https://github.com/kvcache-ai/ktransformers

和llama.cpp深度融合,直接通过参数设置即可自由调度CPU和GPU计算资源,灵活高效。并且能够直接和 ollama、vLLM、Open-WebUI等框架兼容。深度挖掘GPU性能,相较于KTransformers和llama.cpp,有着较高 的并发能力。但为了保障一定的并发量,该方案对硬件基础要求高一些

性能评测

方案
测试场景
硬件配置
资源占用
对话效果(tokens/s)

KTransformer

单并发测试

志强3代CPU+4090GPU+DDR4内存

——

4

KTransformer

单并发测试

9654CPU+4090GPU+12x4800MHz DDR5内存

——

14

Llama.cpp

纯CPU推理

480G内存+4卡4090服务器

仅CPU推理

3.23

Llama.cpp

CPU+GPU推理(单卡4090)

单卡4090

占用显存约23G

3.65

Llama.cpp

CPU+GPU推理(4卡4090)

4卡4090

占用显存约92G

5.78

Llama.cpp

纯GPU推理(4卡H800)

4卡H800,320G总显存

占用显存约140G

20.93

Ollama

纯GPU推理(单卡4090)

单卡4090

——

5.97

Ollama

纯GPU推理(双卡A100)

双卡A100

——

20

Last updated