[IT/数码] DeepSeek-R1各版本模型推理显存需求测算

[复制链接]
查看23 | 回复0 | 7 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 hdy 于 2025-4-28 01:52 编辑

前言

最近临危受命,调研了一下DeepSeek需要什么硬件配置才能本地部署。查询中文社区相关资料,发现不少帖存在夸大唬人嫌疑。

于是撰写本文,辅以实验验证,以正试听。

1. 数据精度

硬件配置的核心就是显卡的显存。实际部署应用中,不可能拿CPU+大内存的方案进行推理,输出实在过慢。因此,理论上来说,只要显卡的显存容得下模型,部署就没问题。

要从理论角度计算不同参数量版本的模型大概需要多少显存,首先要理清不同精度和模型参数量之间的关系。不谈精度空谈参数量的结论都是耍流氓!

精度类型构成,常见的FP32、FP16等浮点数精度类型通常由符号位(sign)、指数位(exponent)和小数位(mantissa)三部分组成,如下图[1]所示。

014032468efc7c.png

符号为0或1,(0表示正,1表示负),指数位影响浮点数范围,小数位影响精度。

指数位越多,数据表示的范围越大;小数位越多,数据表示的精度越高。

除了FP(Floating Point)这种基本格式外,还有TF32(TensorFloat-32)、BF16(Brain Floating Point16)等特殊格式,通过微调范围或精度,做到性能和存储的权衡。

不同格式的基础情况如下表所示。

image.png


2. 模型推理显存理论计算

理清数据精度之后,就可以根据模型参数量对所需显存进行理论计算。

比如,DeepSeek-R1 - Distill Qwen - 32B型号的模型,参数量为32B,如果参数精度为FP16,那么实际所需显存量即为32×16bit=32×10亿×16 bit

又因基本比特换算关系: 1 GB =  MB =  KB =  bytes =  × 8 = bit即 32×10亿×16 bit = 32××16 /  × 8 GB

由于32B并不是一个正好的整数,因此计算时,我们姑且认为1000 ≈ 1024,这样一进行化简,就可以得到:

32×10亿×16 bit ≈ 64 GB

理清这个关系之后,对于DeepSeek各版本各精度推理所需显存占用情况就可以同样计算,计算结果如下:

image.png

注:此表为理论计算,因为存在一些化简操作,所以实际部署时,显存占用会略高一些。

由此不难发现,在Ollama上,默认的xxb的DeepSeek-R1实际都是4位精度极致版。

image.png

所以各大厂商吹嘘的各种DeepSeek满血版,没准还是量化的残血版,真正的满血是671b模型+fp16精度!

3. 模型推理显存实践验证

空谈理论,还是缺乏实际数据支撑。 正好实验室的有三张4090D显卡闲置,拿来进行实验。

3.1 单卡32b部署

上表看出32b四位精度所需显存约16.0GB,因此理论上单卡24GB的4090D就可以部署上去。

执行

image.png

发现实际显存占用约21.1GB,这里一方面是计算精度的误差问题,另一方面是KV Cache的问题(这里暂不细究)。因此,实际会比理论计算值略高一些。

image.png
3.2 双卡70b部署

在默认情况下,直接运行

image.png

会报错:

image.png

虽然ollama会自动扫描所有可用显卡,但多卡使用时,必须设置一下OLLAMA_SCHED_SPREAD,以开启调度分布。更多环境变量及含义,可参考[3]。

修改配置文件

image.png

OLLAMA_SCHED_SPREAD设为1,开启调度,并设置所用显卡为4,5。

014032b33279f7.png

保存,重新加载配置文件,并重启 ollama 服务。

image.png

再次执行:

image.png

查看日志:

image.png

可以看到ollama成功识别到了两张显卡:

01403262895a9f.png

4,5显卡显存占用情况:

0140339ed3bffe.png

总显存占用约为44.6GB。

3.3 三卡70b部署

两张卡已经能顺利部署70b的四位模型,下面再测试一下三卡部署70b的情况。

显卡占用情况如下:

0140335b6c0492.png

显存占用约45.3GB,考虑到显卡本身的显存开销,实际双卡和三卡显存占用情况差不多,说明开启调度之后,ollama会自动把显存平均分配给各卡。

4. 训练所需资源估算

现在已经把DeepSeek-R1各版本所需推理显存分析透彻了。对于模型训练,显存的预估会更为复杂,因为有时候训练会涉及混合精度,资料[2]中部分提到了计算方式。

此外,还有16 比特全参数微调、冻结微调、LoRA 微调、QLoRA 微调等各种微调策略,这里挖个坑,后续再继续讨论大模型训练需要多少显存。

这里放一张LLaMA-Factory[4]的模型训练显存预估表,可大致参考:

014033004f65d2.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则