mirror of
https://github.com/kvcache-ai/ktransformers.git
synced 2026-11-05 01:07:28 +00:00
[GH-ISSUE #1152] [Feature] docker运行0.2.4post1版本只能使用一颗CPU #800
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/ktransformers#800
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @wishfay on GitHub (Apr 16, 2025).
Original GitHub issue: https://github.com/kvcache-ai/ktransformers/issues/1152
检查清单
需求背景
step1: 运行docker没问题
docker run -it --gpus all --privileged --shm-size 256g --name kt --network=host -v /data:/data approachingai/ktransformers:v0.2.4-AVX512 /bin/bash
step2: 进入docker运行kt也没问题
python ktransformers/server/main.py
--port 10002
--model_path /root/autodl-tmp/DeepSeek-V3-0324
--gguf_path /root/autodl-tmp/DeepSeek-V3-0324-GGUF/UD-Q2_K_XL \ --max_new_tokens 1024
--cache_lens 32768
--chunk_size 256
--max_batch_size 4
--backend_type balance_serve
问题
通过lscpu可以看到我的机器里面有两颗至强处理器:
NUMA node(s): 2
当kt开启推理的时候,使用htop可以看到其中的一颗cpu是几乎跑满了,但是另一颗cpu就没干活,导致CPU运行率一直是49%
如何可以把另一颗CPU也用起来呢?
相关资源
补充一下,我是直接下载的docker镜像
approachingai/ktransformers:v0.2.4post1-AVX2
@jizhilong commented on GitHub (Apr 16, 2025):
如果是提 feature request 的话,我觉得 ktransformers 已经支持了多 CPU 的。下面的截图中来自我这的一台服务器,可以看到相关进程的 cpu 使用率达到了 2400+%,相当于用满了 24 核的算力:
对应了启动参数中的
--cpu_infer 24:lscpu 的输出结果如下:
@yeungtuzi commented on GitHub (Apr 16, 2025):
尝试把CPU数量设置为超线程数量+2
@Azure-Tang commented on GitHub (Apr 16, 2025):
可以在docker内按照多numa的安装教程重新编译一遍~
@wishfay commented on GitHub (Apr 17, 2025):
谢谢!
通过添加了 --cpu_infer 126确实可以把两颗至强6430跑满,但是似乎推理速度并没有变快😑,之前不加这个参数单cpu是9.5tokens,现在双核也是这个速度😂
@wishfay commented on GitHub (Apr 17, 2025):
谢谢,不过应该是超线程数-2。
另外性能似乎没提升🤔,有点奇怪
@cyhasuka commented on GitHub (Apr 17, 2025):
理论上来讲超线程不能加速计算,如果CPU数量设置的太高,可能还会发生线程间抢占,所以应该使用实际的物理核心。至强6430是32C64T,所以双CPU应该是设置为
--cpu_infer 65(64+1, +1是为了给调度系统) 。htop里面显示跑了50%左右是正常的,说明实际的物理核心全部跑满@jizhilong commented on GitHub (Apr 17, 2025):
建议把 lscpu 的结果和 top/htop 的原始输出贴出来,这样大家对 “跑满” 形成一致的理解。
例如,我这边使用的是
--cpu_infer 24,cpu core 数是 32,执行推理的时候,top 的输出如下图, 可以看到:%CPU是 78.7% 左右,稍多于 24/32=0.75%另外,建议将
cpu_infer调整到比实际 core 数少,例如你的总 core 数是 64 的话,你可以试试--cpu_infer 60,原因如 @cyhasuka 所说,避免线程间抢占。@wishfay commented on GitHub (Apr 17, 2025):
理解了,这么解释就通了!十分感谢!
@wishfay commented on GitHub (Apr 17, 2025):
明白了,谢谢解答!
@wishfay commented on GitHub (Apr 17, 2025):
不过我感觉似乎测试下来的速度,推理只有9.5tokens/s,比官方数据要慢不少,不知道是为何?
具体的硬件配置如下:
cpu 至强6430*2
内存 ddr5 512G
显卡 rtx6000ada 48G
硬盘 nvme 4T
@cyhasuka commented on GitHub (Apr 17, 2025):
0.2.4的单batch好像确实是不如0.2.3快,我这里测试也是这样。你可以关闭多batch功能试试看。
另外我有个疑问,在启用双NUMA的情况下,DRAM占用会翻倍,对于DeepSeek-V3-0324-GGUF/UD-Q2_K_XL 模型,512G DRAM似乎是不太够的?
@yeungtuzi commented on GitHub (Apr 17, 2025):
生成速度主要取决于内存带宽,9.5这个成绩不算差
@yeungtuzi commented on GitHub (Apr 17, 2025):
我之前一直是奉行物理核心-2原则的,不过后来看到数据超线程有点儿用(尤其是CPU核心较少的时候),就打开了zen4的超线程并增加线程数量,似乎性能有轻微提升。
发件人: Xuefei Wang @.>
发送时间: 2025年4月17日 13:09
收件人: kvcache-ai/ktransformers @.>
抄送: dahema @.>; Comment @.>
主题: Re: [kvcache-ai/ktransformers] [Feature] docker运行0.2.4post1版本只能使用一颗CPU (Issue #1152)
Reopened #1152https://github.com/kvcache-ai/ktransformers/issues/1152.
―
Reply to this email directly, view it on GitHubhttps://github.com/kvcache-ai/ktransformers/issues/1152#event-17300001030, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADLPPACS6FWVBZF4LVKLYNT2Z4ZQHAVCNFSM6AAAAAB3HE745CVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJXGMYDAMBQGEYDGMA.
You are receiving this because you commented.Message ID: @.***>
@wishfay commented on GitHub (Apr 17, 2025):
好的,我试试看。
UD-Q2_K_XL模型一份是200GB,翻倍跑起来也就不到450GB,512GB好像是够的(我用btop监测感觉推理的时候没有特别多内存的交换)
@wishfay commented on GitHub (Apr 17, 2025):
原来如此,看来还得多试试看,哈哈
@cyhasuka commented on GitHub (Apr 18, 2025):
我的硬件条件下 2 * 6454S (64c128t) + L4 + 1TD5 开启超线程并将 --cpu_infer 改成 129 ,速度会降低2-3tokens/s,可以看到发生了进程抢占导致速度降低。而最新的文档中已经改掉物理核心-2的原则,改为物理核心+1,总物理核心数参与计算,1个超线程进程参与数据交换。参见:KTransformers文档
@wishfay commented on GitHub (Apr 22, 2025):
感谢各位大佬指导!