已关闭
【需求】/【Requirement】Hermes Router tokenizer 对齐 KServe llm-d scheduler 契约 #44
xinhongchen创建于  8月21日关闭于  9月11日
xinhongchen成员
8月21日 创建

需求描述/ Description

KServe LLMInferenceService 会把预设 kserve-config-llm-scheduler(llm-d scheduler)与用户 spec.router.scheduler 做 strategic merge;用户 overlay 只能改/加字段,不能删除预设中的 command、探针、卷挂载等。当前 InferNex-Bridge Webhook 因此必须先剥掉 llm-d 专用项,再由 LLMISVC 侧写完整 Hermes template,否则 Hermes 配置无法干净覆盖。

期望 Hermes Router(含 EPP main 与 tokenizer sidecar,以及相关 Chart / 插件默认值)整体对齐 llm-d 预设契约,使在 KServe 路径上可以 直接用 Hermes 的 template / scheduler.config(含 EPP plugin 等)覆盖或追加配置,而不再依赖 Webhook 先改掉预设。用户仍可按需换镜像、改资源、追加插件与路由策略;目标是这些配置与预设兼容、互不影响,而不是「只能换镜像、不能写配置」。实现上可分步推进(例如先 tokenizer、再 EPP),但需求目标是完整适配。

当前 Webhook 对 scheduler Config 删除项主要包括:main.command、main/tokenizer 的 tokenizer-uds 挂载、tokenizer 的 ports/probes/workingDir/env、tokenizer-cache/tokenizer-uds 卷等。对齐完成后,这些字段应能按上游预设保留,并由 Hermes 镜像与配置正确消费。

需求价值:关键竞争力/ Value: Key Competitive Advantage

  • 去掉对 Bridge Webhook 改 KServe 预设的依赖,降低运维与升级风险
  • 与上游 KServe/llm-d scheduler 契约一致,用户可通过覆盖/追加配置接入 Hermes,无需先剥预设
  • 为 Hermes 原生适配 KServe、社区合入铺路

需求类型:新增/增强/继承 /Requirement Type: New/Enhancement/Inheritance

增强(对现有 EPP / tokenizer sidecar / Chart / 插件默认契约做兼容对齐)

特性约束:兼容性要求或其他限制性约束或NA/ Property Constraints: Compatibility requirements or other restrictive constraints or NA

  • 对齐对象:kserve/config/llmisvcconfig/config-llm-scheduler.yaml 全量 scheduler template 契约
  • tokenizer 约定:
    • UDS:/tmp/tokenizer/tokenizer-uds.socket,卷名 tokenizer-uds,挂载 /tmp/tokenizer
    • 健康检查:HTTP GET /healthz 端口 8082(进程起来即可,不依赖模型加载)
    • workingDir: /mnt/models,TOKENIZERS_DIR=/mnt/models
    • 可写卷:tokenizer-tmp→/tmp,tokenizer-cache→/.cache;readOnlyRootFilesystem: true
  • EPP(main)约定:
    • 容器名必须为 main(KServe 只给该容器注入 --config-text)
    • 能消费预设 command(/app/epp --pool-name ...)或与之等价地通过镜像 ENTRYPOINT + 预设 args 正常启动
    • 兼容预设探针(gRPC 9003 / liveness、readiness)、TLS 挂载 /var/run/kserve/tls、以及 tokenizer-uds→/tmp/tokenizer
    • Hermes 路由能力通过 scheduler.config / --config-text 覆盖或追加插件(如 kv-cache-aware、tokenizer、prediction 等),不另起一套需靠 Webhook 删除的 command/卷约定
  • Chart 独立部署路径可通过 values 覆盖,但 KServe 路径默认值 应与上述契约一致,避免再引入 tokenizer-socket-volume、/var/run/tokenizer、容器名 epp 等第二套约定
  • 落地允许分步(如先 tokenizer、再 EPP、最后去掉 Bridge scheduler Webhook);任一步未完成前,可继续依赖 Webhook 过渡,但须在 PR/进度中标明差距

交付个人或团队:如团队、SIG等/ Delivery organization: such as teams, SIGs, etc.

SIG AI Inference / Hermes Router

建议改动范围与分步(供实现参考)

  1. Tokenizer:默认 socket、:8082/healthz、认 TOKENIZERS_DIR、缓存写到 /.cache;Chart/examples 卷名路径对齐 tokenizer-uds
  2. EPP / 插件:默认连 /tmp/tokenizer/tokenizer-uds.socket;KServe 路径下用 scheduler.config 覆盖/追加 Hermes 插件,不依赖 Webhook 删除预设 command 与 UDS 约定
  3. 验收:未打 Bridge scheduler Webhook 时,保留 llm-d 预设字段,用户通过换镜像 + 覆盖/追加 Hermes 配置(含 EPP plugin)可使 Pod Ready 且路由可用
  4. 收尾:确认可去掉 InferNex-Bridge 对 kserve-config-llm-scheduler 的修改
likedislike
openFuyao-botopenFuyao-bot成员
8月21日 添加了label:sig/sig-ai-inference
openFuyao-bot
openFuyao-bot成员
8月21日 评论:

欢迎来到 openFuyao 社区

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

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

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

likedislike
Xxinhongchen成员
8月21日 将 kangzhenji 设为负责人
Xxinhongchen成员
8月21日 关联了看板:openFuyao - v26.09问题单
Xxinhongchen成员
8月21日 关联了里程碑:v26.09
zhengqinwenZZZzhengqinwenZZZ成员
8月21日 添加了label:feature-request
kangzhenjikangzhenji成员
8月21日 关联了pull request:chore: untrack docs/ and add to gitignore
kangzhenjikangzhenji成员
8月26日 关联了pull request:feat(tokenizer): align with KServe llm-d scheduler pod contract
zhengqinwenZZZzhengqinwenZZZ成员
9月11日 issue状态由 开启 改变为 关闭
zhengqinwenZZZzhengqinwenZZZ成员
9月11日 关闭了 issue