DeepSeek各种模型的运行效果,供大家参考。
1. 硬件配置
- 物理机配置:
- CPU:双路E5-2670V2
- 主板:浪潮M2220 X79主板
- 内存:DDR3 1600 16GB x 8 = 128GB
- 显卡:2080Ti-22GB x 2 NVLink
- 虚拟机配置,模型的推理是运行在一台部署在物理机上的虚拟机,配置如下:
- CPU:20核- 内存:100GB
- 显卡:直通2080Ti-22GB x 2
2. 软件配置
- 操作系统:Debian12
- CUDA版本:12.6
- 模型。当前的硬件配置显然无法运行满血版的DeepSeek,所以选用了Huggingface上的unsloth的V3和R1 GGUF格式的量化版,分别如下:
- DeepSeek-V3满血Q2量化:模型大小207GB
- DeepSeek-R1-Distill-Llama-70B-Q2_K:Q2量化,模型大小26.4GB
- DeepSeek-R1-Distill-Llama-70B-Q4_K_M:Q4量化,模型大小42.5GB
- DeepSeek-R1-Distill-Llama-70B-Q8_0:Q8量化,模型大小75GB
- 推理工具:最新版本的llama.cpp,配置16线程;
3. 运行结果:
3.1 DeepSeek-V3-Q2:满血版的Q2量化。HuggingFace unsloth的网页上介绍这个模型可以在40GB的CPU/GPU VRAM上运行,很好奇实际运行效果就试一下,结果都不好,基本不可用。
- 纯CPU推理:模型加载耗时13分钟。推理效率:7秒/token;
- CPU+GPU推理:GPU显存22GBx2,经过测试模型总共62层权重参数,最多可以有10层参数卸载到GPU上运行,剩下52层仍然需要在CPU上执行。最终的执行结果:模型加载耗时13分钟,推理效率:5秒/token;
- 结果分析:
- 这两种情况系统负载都不高,CPU最高25%,GPU最高1%,推理速度很慢,所以瓶颈在内存/显存上,大量时间消耗在模型权重参数在内存和存储之间的换入换出上。CPU和GPU的执行单元并没有充分利用。所以要运行满血版还是要大内存+大显存;
- 后续验证模型的选择:
- 优选:<42GB,这样可以完全装载在GPU上
- 次选:<100GB,显存全部装载满,剩下装载在内存里,显存占比越高,推理效率越高;
3.2 DeepSeek-R1-Distill-Llama-70B-Q2_K:R1 70B的Q2量化版本,只有26.4GB,完全可以装载在内存/显存里,运行效果:
- 纯CPU推理:模型加载时间30秒;推理效率1 token/秒;CPU占用率 100%;
- 纯GPU推理:模型加载时间20秒;推理效率10 token/秒;GPU占用率 50%;
3.3 DeepSeek-R1-Distill-Llama-70B-Q4_K_M:R1 70B的Q4量化版本,模型大小42.5GB。44GB显存能装载的最大模型,运行效果:
- 纯CPU推理:模型加载时间163秒;推理效率1 token/秒;CPU占用率 100%;
- 纯GPU推理:模型加载时间25秒;推理效率10 token/秒;GPU占用率 50%;
3.4 DeepSeek-R1-Distill-Llama-70B-Q8_0:R1 70B的Q4量化版本,模型大小75GB。既可以全部装载到内存里,也可以42GB装载在GPU里,剩下的33GB装载在内存里,运行效果:
- 纯CPU推理:模型加载时间4分36秒;推理效率0.5 token/秒;CPU占用率 100%;
- GPU+CPU推理:模型加载时间32秒;推理效率0.94token/秒;GPU占用率 4%;
4. 结论
- 对于推理服务,显存/内存是关键,一定要足够大,或者根据实际的内存/显存资源选择合适的量化模型;
- CPU+GPU混合推理,需要配置合适的CPU数量,16线程严重拖了GPU的后腿,无法充分发挥算力;
- 量化版本的回答质量有点超出预期。因为时间原因只对比了一个比较复杂的力学相关的问题:DeepSeek官网的满血版花了二十多分钟吐出了8000多token的回答。面对同样的问题70B Q2量化版本回答有3000多token,整体回答质量也不错。
5. 后续
最近清华大学开源的KTransformer据说可以在4090 24GB显存上运行满血版R1,不过需要300-400GB的内存。如果条件允许的话,想在把这台机器扩到400GB内存试试效果。
1. 硬件配置
- 物理机配置:
- CPU:双路E5-2670V2
- 主板:浪潮M2220 X79主板
- 内存:DDR3 1600 16GB x 8 = 128GB
- 显卡:2080Ti-22GB x 2 NVLink
- 虚拟机配置,模型的推理是运行在一台部署在物理机上的虚拟机,配置如下:
- CPU:20核- 内存:100GB
- 显卡:直通2080Ti-22GB x 2
2. 软件配置
- 操作系统:Debian12
- CUDA版本:12.6
- 模型。当前的硬件配置显然无法运行满血版的DeepSeek,所以选用了Huggingface上的unsloth的V3和R1 GGUF格式的量化版,分别如下:
- DeepSeek-V3满血Q2量化:模型大小207GB
- DeepSeek-R1-Distill-Llama-70B-Q2_K:Q2量化,模型大小26.4GB
- DeepSeek-R1-Distill-Llama-70B-Q4_K_M:Q4量化,模型大小42.5GB
- DeepSeek-R1-Distill-Llama-70B-Q8_0:Q8量化,模型大小75GB
- 推理工具:最新版本的llama.cpp,配置16线程;
3. 运行结果:
3.1 DeepSeek-V3-Q2:满血版的Q2量化。HuggingFace unsloth的网页上介绍这个模型可以在40GB的CPU/GPU VRAM上运行,很好奇实际运行效果就试一下,结果都不好,基本不可用。
- 纯CPU推理:模型加载耗时13分钟。推理效率:7秒/token;
- CPU+GPU推理:GPU显存22GBx2,经过测试模型总共62层权重参数,最多可以有10层参数卸载到GPU上运行,剩下52层仍然需要在CPU上执行。最终的执行结果:模型加载耗时13分钟,推理效率:5秒/token;
- 结果分析:
- 这两种情况系统负载都不高,CPU最高25%,GPU最高1%,推理速度很慢,所以瓶颈在内存/显存上,大量时间消耗在模型权重参数在内存和存储之间的换入换出上。CPU和GPU的执行单元并没有充分利用。所以要运行满血版还是要大内存+大显存;
- 后续验证模型的选择:
- 优选:<42GB,这样可以完全装载在GPU上
- 次选:<100GB,显存全部装载满,剩下装载在内存里,显存占比越高,推理效率越高;
3.2 DeepSeek-R1-Distill-Llama-70B-Q2_K:R1 70B的Q2量化版本,只有26.4GB,完全可以装载在内存/显存里,运行效果:
- 纯CPU推理:模型加载时间30秒;推理效率1 token/秒;CPU占用率 100%;
- 纯GPU推理:模型加载时间20秒;推理效率10 token/秒;GPU占用率 50%;
3.3 DeepSeek-R1-Distill-Llama-70B-Q4_K_M:R1 70B的Q4量化版本,模型大小42.5GB。44GB显存能装载的最大模型,运行效果:
- 纯CPU推理:模型加载时间163秒;推理效率1 token/秒;CPU占用率 100%;
- 纯GPU推理:模型加载时间25秒;推理效率10 token/秒;GPU占用率 50%;
3.4 DeepSeek-R1-Distill-Llama-70B-Q8_0:R1 70B的Q4量化版本,模型大小75GB。既可以全部装载到内存里,也可以42GB装载在GPU里,剩下的33GB装载在内存里,运行效果:
- 纯CPU推理:模型加载时间4分36秒;推理效率0.5 token/秒;CPU占用率 100%;
- GPU+CPU推理:模型加载时间32秒;推理效率0.94token/秒;GPU占用率 4%;
4. 结论
- 对于推理服务,显存/内存是关键,一定要足够大,或者根据实际的内存/显存资源选择合适的量化模型;
- CPU+GPU混合推理,需要配置合适的CPU数量,16线程严重拖了GPU的后腿,无法充分发挥算力;
- 量化版本的回答质量有点超出预期。因为时间原因只对比了一个比较复杂的力学相关的问题:DeepSeek官网的满血版花了二十多分钟吐出了8000多token的回答。面对同样的问题70B Q2量化版本回答有3000多token,整体回答质量也不错。
5. 后续
最近清华大学开源的KTransformer据说可以在4090 24GB显存上运行满血版R1,不过需要300-400GB的内存。如果条件允许的话,想在把这台机器扩到400GB内存试试效果。