[GH-ISSUE #1041] [Bug] 多路请求下调度严重降低了性能 #738

Closed
opened 2026-10-29 14:43:44 +00:00 by bsakaguchi · 14 comments
Owner

Originally created by @yeungtuzi on GitHub (Apr 4, 2025).
Original GitHub issue: https://github.com/kvcache-ai/ktransformers/issues/1041

检查清单

  • 1. 我已经搜索过相关问题,但未能获得预期的帮助
  • 2. 该问题在最新版本中尚未修复
  • 3. 请注意,如果您提交的BUG相关 issue 缺少对应环境信息和最小可复现示例,我们将难以复现和定位问题,降低获得反馈的可能性
  • 4. 如果您提出的不是bug而是问题,请在讨论区发起讨论 https://github.com/kvcache-ai/ktransformers/discussions。否则该 issue 将被关闭
  • 5. 为方便社区交流,我将使用中文/英文或附上中文/英文翻译(如使用其他语言)。未附带翻译的非中文/英语内容可能会被关闭

问题描述

(kt024) root@local:~/kt024/ktransformers/ktransformers/tests# python ./test_speed.py --concurrent 4

4路测速, 此时A100 GPU占用最高15%,还经常性低于10%,GPU最高功耗只有60W左右
对比0.23post2使用NUMA的情况下能冲到35%
推测是多个任务交叉调用的时候调度方式对性能有很大冲击,建议优化。

复现步骤

(kt024) root@local:~/kt024/ktransformers/ktransformers/tests# python ./test_speed.py --concurrent 4

环境信息

2x Intel(R) Xeon(R) Gold 6330 CPU @ 2.00GHz
1x A100 40GB PCIe
16x DDR4-2933 64GB
Version: 0.2.4+cu128torch26fancy NO NUMA

Originally created by @yeungtuzi on GitHub (Apr 4, 2025). Original GitHub issue: https://github.com/kvcache-ai/ktransformers/issues/1041 ### 检查清单 - [x] 1. 我已经搜索过相关问题,但未能获得预期的帮助 - [x] 2. 该问题在最新版本中尚未修复 - [x] 3. 请注意,如果您提交的BUG相关 issue 缺少对应环境信息和最小可复现示例,我们将难以复现和定位问题,降低获得反馈的可能性 - [x] 4. 如果您提出的不是bug而是问题,请在讨论区发起讨论 https://github.com/kvcache-ai/ktransformers/discussions。否则该 issue 将被关闭 - [x] 5. 为方便社区交流,我将使用中文/英文或附上中文/英文翻译(如使用其他语言)。未附带翻译的非中文/英语内容可能会被关闭 ### 问题描述 (kt024) root@local:~/kt024/ktransformers/ktransformers/tests# python ./test_speed.py --concurrent 4 4路测速, 此时A100 GPU占用最高15%,还经常性低于10%,GPU最高功耗只有60W左右 对比0.23post2使用NUMA的情况下能冲到35% 推测是多个任务交叉调用的时候调度方式对性能有很大冲击,建议优化。 ### 复现步骤 (kt024) root@local:~/kt024/ktransformers/ktransformers/tests# python ./test_speed.py --concurrent 4 ### 环境信息 2x Intel(R) Xeon(R) Gold 6330 CPU @ 2.00GHz 1x A100 40GB PCIe 16x DDR4-2933 64GB Version: 0.2.4+cu128torch26fancy NO NUMA
Author
Owner

@yeungtuzi commented on GitHub (Apr 4, 2025):

GPU LOG
Image

CPU LOG

Image

看起来是调度进程单进程卡死了?

<!-- gh-comment-id:2777507566 --> @yeungtuzi commented on GitHub (Apr 4, 2025): GPU LOG <img width="671" alt="Image" src="https://github.com/user-attachments/assets/73e109cd-39af-4f8d-b519-bf3d4976cf63" /> CPU LOG <img width="1087" alt="Image" src="https://github.com/user-attachments/assets/04530fe3-1544-48ca-9b35-935d52254e24" /> 看起来是调度进程单进程卡死了?
Author
Owner

@yeungtuzi commented on GitHub (Apr 4, 2025):

日志没记录全,性能为
倒数第二个请求 prefill 32.54722026540755, decode 2.366459768712007,
最后完成的请求 Performance(T/s): prefill 1.393169144318016, decode 3.265519070287735.

<!-- gh-comment-id:2777519100 --> @yeungtuzi commented on GitHub (Apr 4, 2025): 日志没记录全,性能为 倒数第二个请求 prefill 32.54722026540755, decode 2.366459768712007, 最后完成的请求 Performance(T/s): prefill 1.393169144318016, decode 3.265519070287735.
Author
Owner

@qiyuxinlin commented on GitHub (Apr 4, 2025):

您好,您有修改 test_speed.py 里面的 prompt 吗?直接使用后出现掉速?终端显示的模型执行时间正常吗?

<!-- gh-comment-id:2777524559 --> @qiyuxinlin commented on GitHub (Apr 4, 2025): 您好,您有修改 test_speed.py 里面的 prompt 吗?直接使用后出现掉速?终端显示的模型执行时间正常吗?
Author
Owner

@git-shan commented on GitHub (Apr 4, 2025):

0.2.4+cu128torch26fancy NO NUMA 请问做了哪些修改编译成功的?

<!-- gh-comment-id:2777610082 --> @git-shan commented on GitHub (Apr 4, 2025): 0.2.4+cu128torch26fancy NO NUMA 请问做了哪些修改编译成功的?
Author
Owner

@yeungtuzi commented on GitHub (Apr 4, 2025):

您好,您有修改 test_speed.py 里面的 prompt 吗?直接使用后出现掉速?终端显示的模型执行时间正常吗?

没有修改,时间正常,我把脚本里显示统计信息的代码打开了,输出如下
Request 1: Done
Request 1: Decode Speed = 2.16 tokens/s
Request 2: Done
Request 2: Decode Speed = 2.11 tokens/s
Request 3: Done
Request 3: Decode Speed = 2.18 tokens/s
这三个请求几乎同步完成,然后又输出了大概几百个字符后第一个请求结束
Request 0: Done
Request 0: Decode Speed = 4.24 tokens/s

<!-- gh-comment-id:2777826031 --> @yeungtuzi commented on GitHub (Apr 4, 2025): > 您好,您有修改 test_speed.py 里面的 prompt 吗?直接使用后出现掉速?终端显示的模型执行时间正常吗? 没有修改,时间正常,我把脚本里显示统计信息的代码打开了,输出如下 Request 1: Done Request 1: Decode Speed = 2.16 tokens/s Request 2: Done Request 2: Decode Speed = 2.11 tokens/s Request 3: Done Request 3: Decode Speed = 2.18 tokens/s 这三个请求几乎同步完成,然后又输出了大概几百个字符后第一个请求结束 Request 0: Done Request 0: Decode Speed = 4.24 tokens/s
Author
Owner

@yeungtuzi commented on GitHub (Apr 4, 2025):

0.2.4+cu128torch26fancy NO NUMA 请问做了哪些修改编译成功的?

按照官方文档没有任何特殊修改,除了启动命令使用了之前下载的model-config

<!-- gh-comment-id:2777831256 --> @yeungtuzi commented on GitHub (Apr 4, 2025): > 0.2.4+cu128torch26fancy NO NUMA 请问做了哪些修改编译成功的? 按照官方文档没有任何特殊修改,除了启动命令使用了之前下载的model-config
Author
Owner

@yeungtuzi commented on GitHub (Apr 4, 2025):

没有任何访问请求时也有核心满载

Image
<!-- gh-comment-id:2777843317 --> @yeungtuzi commented on GitHub (Apr 4, 2025): 没有任何访问请求时也有核心满载 <img width="1334" alt="Image" src="https://github.com/user-attachments/assets/487e4214-57f8-4ede-86eb-8fa18de46411" />
Author
Owner

@CYSTEV-chn commented on GitHub (Apr 4, 2025):

我也是,KT024,单路decode 10,双路退化到5
单路还不如023post1版快了。

启动命令:
python ktransformers/server/main.py
--port 6006
--model_path /home/zewen/model/DeepSeek-V3
--gguf_path /home/zewen/model/DeepSeek-R1-Q4_K_M
--optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-serve.yaml
--max_new_tokens 4096
--cache_lens 32768
--chunk_size 256
--max_batch_size 4
--cache_q4 true
--cpu_infer 84
--model_name "DeepSeek-R1"
--force_think
--backend_type balance_serve

我修改 --backend_type balance_serve 为 --backend_type ktransformers
想试试退回023版后端,对话直接报错。

<!-- gh-comment-id:2778304242 --> @CYSTEV-chn commented on GitHub (Apr 4, 2025): 我也是,KT024,单路decode 10,双路退化到5 单路还不如023post1版快了。 启动命令: python ktransformers/server/main.py \ --port 6006 \ --model_path /home/zewen/model/DeepSeek-V3 \ --gguf_path /home/zewen/model/DeepSeek-R1-Q4_K_M \ --optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-serve.yaml \ --max_new_tokens 4096 \ --cache_lens 32768 \ --chunk_size 256 \ --max_batch_size 4 \ --cache_q4 true \ --cpu_infer 84 \ --model_name "DeepSeek-R1" \ --force_think \ --backend_type balance_serve 我修改 --backend_type balance_serve 为 --backend_type ktransformers 想试试退回023版后端,对话直接报错。
Author
Owner

@qiyuxinlin commented on GitHub (Apr 4, 2025):

我也是,KT024,单路decode 10,双路退化到5 单路还不如023post1版快了。

启动命令: python ktransformers/server/main.py --port 6006 --model_path /home/zewen/model/DeepSeek-V3 --gguf_path /home/zewen/model/DeepSeek-R1-Q4_K_M --optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-serve.yaml --max_new_tokens 4096 --cache_lens 32768 --chunk_size 256 --max_batch_size 4 --cache_q4 true --cpu_infer 84 --model_name "DeepSeek-R1" --force_think --backend_type balance_serve

我修改 --backend_type balance_serve 为 --backend_type ktransformers 想试试退回023版后端,对话直接报错。

您好,如果要改为 ktransformers 后端,inject yaml 需要替换为 DeepSeek-V3-Chat.yaml,balance serve 前几次运行较慢,多运行几次后性能就正常了

<!-- gh-comment-id:2778359764 --> @qiyuxinlin commented on GitHub (Apr 4, 2025): > 我也是,KT024,单路decode 10,双路退化到5 单路还不如023post1版快了。 > > 启动命令: python ktransformers/server/main.py --port 6006 --model_path /home/zewen/model/DeepSeek-V3 --gguf_path /home/zewen/model/DeepSeek-R1-Q4_K_M --optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-serve.yaml --max_new_tokens 4096 --cache_lens 32768 --chunk_size 256 --max_batch_size 4 --cache_q4 true --cpu_infer 84 --model_name "DeepSeek-R1" --force_think --backend_type balance_serve > > 我修改 --backend_type balance_serve 为 --backend_type ktransformers 想试试退回023版后端,对话直接报错。 您好,如果要改为 ktransformers 后端,inject yaml 需要替换为 DeepSeek-V3-Chat.yaml,balance serve 前几次运行较慢,多运行几次后性能就正常了
Author
Owner

@chmmn commented on GitHub (Apr 4, 2025):

update_last_batch 和 get_local_messages 似乎有忙等待,导致空闲时 CPU 被占用。我强制sleep后空闲时 CPU 得到释放,期待完善。

<!-- gh-comment-id:2779778297 --> @chmmn commented on GitHub (Apr 4, 2025): update_last_batch 和 get_local_messages 似乎有忙等待,导致空闲时 CPU 被占用。我强制sleep后空闲时 CPU 得到释放,期待完善。
Author
Owner

@qiyuxinlin commented on GitHub (Apr 5, 2025):

update_last_batch 和 get_local_messages 似乎有忙等待,导致空闲时 CPU 被占用。我强制sleep后空闲时 CPU 得到释放,期待完善。

收到您的反馈,我们会考虑加入适当的 sleep 或其他机制来优化空闲时的资源使用,感谢您的建议!

<!-- gh-comment-id:2780175046 --> @qiyuxinlin commented on GitHub (Apr 5, 2025): > update_last_batch 和 get_local_messages 似乎有忙等待,导致空闲时 CPU 被占用。我强制sleep后空闲时 CPU 得到释放,期待完善。 收到您的反馈,我们会考虑加入适当的 sleep 或其他机制来优化空闲时的资源使用,感谢您的建议!
Author
Owner

@Colacalc commented on GitHub (Apr 6, 2025):

GPU LOG Image

CPU LOG

Image 看起来是调度进程单进程卡死了?

您好,请问您这个监控工具叫什么名字,谢谢回复~

<!-- gh-comment-id:2781358172 --> @Colacalc commented on GitHub (Apr 6, 2025): > GPU LOG <img alt="Image" width="671" src="https://private-user-images.githubusercontent.com/14088064/430219918-73e109cd-39af-4f8d-b519-bf3d4976cf63.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDM5MzY0NDQsIm5iZiI6MTc0MzkzNjE0NCwicGF0aCI6Ii8xNDA4ODA2NC80MzAyMTk5MTgtNzNlMTA5Y2QtMzlhZi00ZjhkLWI1MTktYmYzZDQ5NzZjZjYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA0MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNDA2VDEwNDIyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlNGNlYTYwNzFmYTVjY2FjOTJhYWQxOTRkNTY3YjU0MjE3NGMwNTM4OTk0N2Y1YWM5ZjA4NjExMWNjYjA0ODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.9tS9qPT1Rghg-pkQrnlEBJN1OktHVRAFUneqnjYh_30"> > > CPU LOG > > <img alt="Image" width="1087" src="https://private-user-images.githubusercontent.com/14088064/430220069-04530fe3-1544-48ca-9b35-935d52254e24.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDM5MzY0NDQsIm5iZiI6MTc0MzkzNjE0NCwicGF0aCI6Ii8xNDA4ODA2NC80MzAyMjAwNjktMDQ1MzBmZTMtMTU0NC00OGNhLTliMzUtOTM1ZDUyMjU0ZTI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA0MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNDA2VDEwNDIyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjZWZiNzBiMDU2MGUyZDQwNjY0OTdjZDk3MmM4YzU1MDE3N2U5Nzc4NzQ1MDJhMWI1ZDNhM2JhNjBmMzBkOWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.gLGYbukGm2zehrZHDFgS-J9yLZ0235sZrKMiBuBtj_I"> > 看起来是调度进程单进程卡死了? 您好,请问您这个监控工具叫什么名字,谢谢回复~
Author
Owner

@yeungtuzi commented on GitHub (Apr 7, 2025):

GPU LOG Image
CPU LOG
Image
看起来是调度进程单进程卡死了?

您好,请问您这个监控工具叫什么名字,谢谢回复~

apt install btop

<!-- gh-comment-id:2781990812 --> @yeungtuzi commented on GitHub (Apr 7, 2025): > > GPU LOG <img alt="Image" width="671" src="https://private-user-images.githubusercontent.com/14088064/430219918-73e109cd-39af-4f8d-b519-bf3d4976cf63.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDM5MzY0NDQsIm5iZiI6MTc0MzkzNjE0NCwicGF0aCI6Ii8xNDA4ODA2NC80MzAyMTk5MTgtNzNlMTA5Y2QtMzlhZi00ZjhkLWI1MTktYmYzZDQ5NzZjZjYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA0MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNDA2VDEwNDIyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlNGNlYTYwNzFmYTVjY2FjOTJhYWQxOTRkNTY3YjU0MjE3NGMwNTM4OTk0N2Y1YWM5ZjA4NjExMWNjYjA0ODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.9tS9qPT1Rghg-pkQrnlEBJN1OktHVRAFUneqnjYh_30"> > > CPU LOG > > <img alt="Image" width="1087" src="https://private-user-images.githubusercontent.com/14088064/430220069-04530fe3-1544-48ca-9b35-935d52254e24.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDM5MzY0NDQsIm5iZiI6MTc0MzkzNjE0NCwicGF0aCI6Ii8xNDA4ODA2NC80MzAyMjAwNjktMDQ1MzBmZTMtMTU0NC00OGNhLTliMzUtOTM1ZDUyMjU0ZTI0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA0MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNDA2VDEwNDIyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjZWZiNzBiMDU2MGUyZDQwNjY0OTdjZDk3MmM4YzU1MDE3N2U5Nzc4NzQ1MDJhMWI1ZDNhM2JhNjBmMzBkOWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.gLGYbukGm2zehrZHDFgS-J9yLZ0235sZrKMiBuBtj_I"> > > 看起来是调度进程单进程卡死了? > > 您好,请问您这个监控工具叫什么名字,谢谢回复~ apt install btop
Author
Owner

@yeungtuzi commented on GitHub (Apr 9, 2025):

新版本已经解决,关闭issue

<!-- gh-comment-id:2788701622 --> @yeungtuzi commented on GitHub (Apr 9, 2025): 新版本已经解决,关闭issue
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/ktransformers#738
No description provided.