ktransformers 框架 v0.2.4 post1版本并发性能测试 && 系统资源占用对推理性能影响测试

测试环境

CPU内存GPU系统版本
8461v * 1DDR5 4800*83090 24GUbuntu 22.04

另外,测试使用官方发布docker v0.2.4post1镜像。

测试模型

  • DeepSeek-R1-Q4_K_M
  • DeepSeek-R1-UD-Q2_K_XL
  • DeepSeek-V3-0324-Q4_K_M

测试项目

1. 并发性能测试

测试步骤如下:
a. 测试单并发下吞吐数据,并以此作为基准性能;
b. 测试4并发下吞吐数据,并关注显存、内存占用情况;

测试结果:

模型并发数prefill (token/s)decode (token/s)
DeepSeek-R1-Q4_K_M1约 40 - 5010 左右
DeepSeek-V3-0324-Q4_K_M1约 40 - 5010 左右
DeepSeek-R1-UD-Q2_K_XL1约 50-6013 左右
DeepSeek-R1-UD-Q2_K_XL430 + 17 + 27 +17 ≈ 913.9 + 4.8 + 4.5 + 5.4 ≈ 18.6

另外,显存、内存占用数据如下(命令参数–max_new_tokens 4096 --cache_lens 32768 --chunk_size 256):

模型并发数显存占用内存占用
DeepSeek-R1-Q4_K_M115981MiB369.9g
DeepSeek-V3-0324-Q4_K_M116705MiB369.9g
DeepSeek-R1-UD-Q2_K_XL115724MiB214g
DeepSeek-R1-UD-Q2_K_XL415724MiB214g

由上述测试数据可得

  1. 在单路CPU场景下,并发可提升总吞吐量约 40%(多轮测试下来约 30% ~ 50%,手动测试数据不严谨);
  2. 资源占用只与启动命令配置的参数有关(最大token生成数、并发数量),在启动服务后,无论是否启用并发线程,均不影响资源占用;

另外,这里注意到Q2.71动态量化版本模型占用显存与Q4KM版本基本一致,或许是因为Q2.71量化版本保留了密集层专家的4位精度,这与KT框架将密集计算部分放置到GPU的思路一致,使得显存占用并未降低,但内存占用是与模型大小趋势基本一致的。

2. 测试系统资源占用对推理性能影响

在加载完Deepseek模型后,显存资源还剩余约8G,这里通过以下测试来验证多个模型并行(占用显存、GPU算力、内存)情况下,KT框架推理性能是否受到影响。

2.1 占用显存情况

测试模型:ktransformers + DeepSeek-R1-UD-Q2_K_XL
陪测模型:llama.cpp + qwen2.5-7b-q4_K_M

测试前置(环境):
– 在KT框架加载模型完成的情况下,使用llama.server加载qwen2.5-7b_q4_K_M.gguf模型(显存占用约7G)

测试步骤:
a. 在qwen模型仅加载到显存,未触发推理的情况下,收集KT模型吞吐量数据;
b. 在KT模型推理过程中,使用qwen模型并行进行推理,收集KT模型吞吐量数据;

测试结果:

是否占用显存是否占用算力prefill (token/s)decode (token/s)
5513
545.7

结论:仅占用显存时,KT框架推理性能不受影响,占用显卡算力时,KT Prefill性能基本不受影响,decode性能受到较大影响;

2.2 占用内存/CPU情况

测试模型:
– ktransformers + DeepSeek-R1-UD-Q2_K_XL (内存未溢出情况)
– ktransformers + DeepSeek-R1-Q4_K_M(内存溢出,使用共享内存情况)
陪测模型:llama.cpp + qwq-q4_K_M

说明:由于测试环境总内存为384G,加载Q4模型后内存占用约98%,此时模型可以全部运行在内存中,当加载了qwq模型后,由于内存不足,此时会有部分共享内存(nvme pcie4硬盘)被使用,此测试目的:验证内存溢出情况下,KT框架是否优先占用实体内存。

测试前置(环境):
– 在KT框架加载模型完成的情况下,使用llama.server加载qwq-q4_K_M.gguf模型(内存占用约19G)

测试步骤:
a. 在qwen模型仅加载到内存,未触发推理的情况下,收集KT模型吞吐量数据;
b. 在KT模型推理过程中,使用qwq模型并行进行推理,收集KT模型吞吐量数据;
c. KT加载Q4模型,同时将qwq模型加载到内存不推理,收集KT模型吞吐量数据;
d. 在KT模型推理过程中,使用stress占用CPU,但为KT保留足够的核心(strss+kt核心小于系统总核心数),收集KT模型吞吐量数据;
e. 在KT模型推理过程中,使用stress占用CPU,且占用部分KT核心(strss+kt核心大于系统总核心数),收集KT模型吞吐量数据;

模型是否占用内存是否占用算力prefill (token/s)decode (token/s)
Q2.716012.4
Q2.71418.8
Q454
Q2.71是(未占用KT核心)4612.5
Q2.71是(占用KT核心)191.9

结论

  1. 只占用内存,内存未溢出时,若未占用推理资源,则KT推理性能不受影响,若占用推理资源,则KT Prefill、Decode性能均受影响(这点与显存不同);
  2. 若占用内存导致内存溢出,则Prefill、Decode性能均大幅下降。
  3. 占用空闲CPU,但有足够资源给KT使用时,KT Prefill性能受影响,Decode性能不受影响;
  4. 占用空闲CPU,使KT没有足够计算资源时,KT Prefill、Decode性能均受较大影响;

总结

根据上述测试,这里可以得到系统性能与KT吞吐性能的关联关系:

系统资源Prefill性能(有无关联)Decode性能(有无关联)
GPU空闲显存
GPU空闲算力
CPU空闲算力
空闲内存
内存带宽

因此根据上述结论,在不影响KT推理性能的前提下,利用服务器资源的正确方式应当是:

  1. 不占用内存,CPU密集型任务,可以在限制占用的前提下与KT服务并行;
  2. 需要占用一定内存的任务,可以与KT服务错开执行;
  3. 需要占用显卡资源,且不会导致显存溢出的任务,可以与KT服务错开执行;
  4. 任何会导致内存或显存溢出的任务,都不应执行。

转载声明:此博文未经本人允许,不得转载,请勿爬取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值