已开启
[Performance] Prefill-Decode 亲和性路由降低跨节点 KV Transfer 延迟 #164
thrower创建于  9月1日
thrower
thrower
9月1日 创建

背景

在 PD 分离部署架构中,Prefill 节点完成首 Token 计算后,需通过 Mooncake 将 KV-Cache 传输到 Decode 节点继续生成。当 Prefill 和 Decode 分属不同物理节点时,跨节点 KV Transfer 会引入额外网络延迟,成为 Decode 首 Token 延迟(TPOT)的主要来源之一。

问题

当前 proxy-server 的 LoadBalanceRouter 在选择 Decode 节点时采用纯负载均衡策略(BackendPool.choose),仅基于 active_tokens 选择最空闲的节点,不考虑已选 Prefill 节点与候选 Decode 节点之间的 pdGroupID 亲和性。

在多 pdGroup 部署场景下(例如不同机型/拓扑的 PD 组共集群),这会导致大量不必要的跨组 KV Transfer,加剧首 Token 延迟。

方案

在 proxy-server 路由层引入 pdGroupID 亲和性路由,根据已选 Prefiller 的 pdGroupID 优先选择同组 Decode 节点,使 Mooncake KV Transfer 尽可能在同组节点间完成。

提供三种可配置模式:

模式 行为 适用场景
off 纯负载均衡,忽略亲和性(当前默认行为的等价模式) 单组部署或无需亲和
prefer(默认) 同组 Decode 节点负载在 bonus 范围内(默认 0.3)时优先选中,兼顾低延迟与负载均衡 通用生产环境
strict 仅在同组 Decode 节点中选择,无可用节点时直接报错 强制同组、极致低延迟

拆分说明

本 Issue 拆分为两个 PR:

  1. PR-1 功能实现:proxy-server Python 路由逻辑 + Helm Chart 配置注入
  2. PR-2 单元测试:33 个测试覆盖 off / prefer / strict 三模式边界条件

评估指标

  • 跨 pdGroup 的 KV Transfer 次数占比
  • Decode 首 Token 延迟(TPOT)
  • Decode 节点负载均衡度
likedislike
openFuyao-botopenFuyao-bot成员
9月1日 添加了label:sig/sig-ai-inference
openFuyao-bot
openFuyao-bot成员
9月1日 评论:

欢迎来到 openFuyao 社区

Hey @thrower16 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅此处。

联系指引

有疑问可以联系 SIG: sig-ai-inference ,
维护者是: @foxbit, @regandy ,
审核者是: @ShiroChen, @piamposer-li, @qinwenzh .

likedislike
throwerthrower
9月1日 关联了pull request:Prefill-Decode 亲和性路由降低跨节点 KV Transfer 延迟
yinxuan
yinxuan
9月10日 评论:

@thrower16 感谢您的 issue!

issue 和 pr 内容都很明确,但目前 infernex 部署形态应该只支持一个 proxy-server 管理一组 pdgroup,因此实际上在当前部署形态下该亲和性路由总会退化到 off 模式。不知道您观察到的跨组 transfer 是在什么部署场景下出现的,还是说其实诉求是需要 infernex 能够支持 一个全局 proxy-server 管理多组 pdgroup?

您近期也在社区提出了多个 issue,方便的话希望您可以在今天(周四)下午四点的 sig 例会上做这些问题的具体分享以及进一步讨论。

likedislike
thrower
thrower
9月10日 评论:

@thrower16 感谢您的 issue!

issue 和 pr 内容都很明确,但目前 infernex 部署形态应该只支持一个 proxy-server 管理一组 pdgroup,因此实际上在当前部署形态下该亲和性路由总会退化到 off 模式。不知道您观察到的跨组 transfer 是在什么部署场景下出现的,还是说其实诉求是需要 infernex 能够支持 一个全局 proxy-server 管理多组 pdgroup?

您近期也在社区提出了多个 issue,方便的话希望您可以在今天(周四)下午四点的 sig 例会上做这些问题的具体分享以及进一步讨论。

@yinxuan04

您好,感谢您对相关PR提的建议,我会进一步总结相关需求以及目前PR代码需要优化的地方等等,在下午的例会向各位老师请教,谢谢!

likedislike