mirror of
https://github.com/deepseek-ai/DeepEP.git
synced 2026-11-05 00:47:32 +00:00
[GH-ISSUE #760] [Performance] DeepEP V2 combine epilogue low batch performance #417
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/DeepEP#417
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 @elvircrn on GitHub (Sep 22, 2026).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/760
While doing low batch (less than 8 concurrent requests) DP4/TP8 P/D deployments with Kimi K3 on H200, I noticed that decode traces have straggler ranks, spending a long time in
combine_reduce_epilogue_impl:Because this kernel assigns one warp per output token, it is underperforming for cases where we have a handful of output tokens per dp rank.
Profiling this kernel further points to this being the case:
Please let me know if my analysis is sound here and if I can provide more profiling data to help diagnose this further. I have two thoughts on this, provided findings are sound:
combine_reduce_epilogue_implso that it assigns multiple warps to a single output tokenskip_epilogueflag and let the library consumer take over the epilogue work. This would have a benefit of allowing fusions with downstream opsI have both versions of this running on my DeepEP fork and the corresponding vllm fork.
Reproduction
What follows are some reproduction steps:
repro_dp4_tp8_combine_only.pyRepro script for
ncuprofiler: