Skip to content

Optimize Omni decode scheduling and M-RoPE - #118

Open
TimeYWL wants to merge 3 commits into
HYGON-AI:v0.25.1from
TimeYWL:ywl_0.25.1
Open

TimeYWL wants to merge 3 commits into
HYGON-AI:v0.25.1from
TimeYWL:ywl_0.25.1

Conversation

@TimeYWL

@TimeYWL TimeYWL commented Sep 15, 2026

Copy link
Copy Markdown

Add an opt-in steady decode scheduling fast path and token-major M-RoPE buffers for Qwen3-Omni. Both switches default to off; Omni use requires the matching scheduler and input-preparation integration in vllm-omni.

Validated with Qwen3-Omni throughput benchmarks and a 3,000-sample ESD evaluation using the matching Omni integration. git diff --check passes.

@hygon-ai-ai-reviewer

hygon-ai-ai-reviewer Bot commented Sep 15, 2026

Copy link
Copy Markdown

AI Review

审查尚未完整完成,无法给出整体结论;当前没有可发布的已确认问题,不代表代码没有问题。

部分结果不可用:1/6 批未完整完成,已保留可用问题。

审查未完整完成:仅依据 GitHub 返回的 PR diff,未运行代码。

覆盖情况:共 8 个文件,已审查 2 个,部分审查 4 个,待审查 2 个。

进度已保存。正在继续处理。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:HCU PR CI
状态:失败

总结

  • Static gate and test selection:pytest 收集阶段直接失败:导入新增测试模块时报 ImportError(L273),模块级 import 触发 ModuleNotFoundError: No module named 'vllm_omni'(L278-L280),导致收集中断(L289)并以 exit code 2 结束(L291)。失败机制由直接异常行证明,精确根因(包应安装还是不应导入)需结合其它批次或依赖清单确认。;pytest 收集 tests/runtime_patch/test_omni_hcu_scheduler.py 时在 L280 抛出 ModuleNotFoundError: No module named 'vllm_omni',导致 L289 'Interrupted: 1 error during collection',随后进程以 exit code 2 结束。直接异常为导入期缺少 vllm_omni 包,日志可逐字核对。;本批有可公开核对的直接异常:pytest 收集 tests/runtime_patch/test_omni_hcu_scheduler.py 失败,该文件第24行导入 vllm_omni.core.sched.omni_hcu_scheduler 时报 ModuleNotFoundError: No module named 'vllm_omni',collection 因这 1 个错误中断,步骤随后以 exit code 2 结束。vllm_omni 为何缺失(未安装还是路径配置)需结合安装步骤日志确认。

  • ci-gate:门禁汇总步骤因 STATIC_RESULT=failure 命中 L17-L20 分支,逐字输出 Static gate or selector failed. 后 exit 1(L36/L43/L45 证据链完整)。该步骤按设计短路;静态检查或选择器本身失败的原始原因不在本批日志内,无法确定上游根因。

与本次改动的关系

无法确定:已定位的直接异常对本次改动的关联判断一致。

建议处理

  1. 最小处理方向(待执行,非结论):确认 vllm_omni 来源(仓库内子包或外部依赖)后在测试环境安装,或对新增测试增加缺失时的导入保护/跳过条件;两种方案由维护者依据包归属选择。

  2. 最小方向:核对该测试环境是否应提供 vllm_omni(查依赖清单与安装步骤);若为缺失的外部依赖,补安装步骤,或按导入可用性对该测试模块做条件跳过,避免收集期中断。

  3. 核对该 Job 在此运行器上安装 vllm_omni 的步骤是否生效及其来源;若 vllm_omni 属可选依赖,评估该测试入口是否需要按缺依赖跳过(如 importorskip)。以上为待执行的排查方向,需人工核验,不保证有效。

  4. 回看同一 run 中静态检查/selector 任务自身的日志,定位具体失败的检查项;门禁步骤为按预期短路,不需要修改该步骤本身。

@hygon-ai-ai-reviewer hygon-ai-ai-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Review

🟢 未发现有明确证据的问题

在已提供并完成审查的 diff 范围内未形成可确认问题。

变更概览

本次变更主要包含:

  • 新增 Omni HCU 调度器运行时补丁测试文件,覆盖 final-stage 元数据桥接保留、快路径与完整调度器生命周期输出/状态一致性、暂停与限流场景下快路径回退且不改状态、显式桥接选择器保留、异步桥接拒绝音频输出及 skipped_waiting 队列保持等行为。
  • 新增差分测试文件,通过 AST 从已安装 vLLM 的 GPUModelRunner 提取 _calc_mrope_positions/_get_positions 加载为可调用函数,并提供 TokenMajorMropeBuffer 与 CpuGpuBuffer 两种测试缓冲区构造辅助。
  • 本批新增 Omni 输入准备测试:在 TokenMajorMropeBuffer 与原 CpuGpuBuffer 两条路径下分别执行 _calc_mrope_positions 并断言结果一致,同时校验 token-major 布局(stride)、与 CPU 内存的共享,以及 _get_positions 的索引复制行为。
  • 新增 Omni 输入准备运行时补丁的测试文件,覆盖独立环境变量开关的 opt-in 行为、不支持的模型配置在变更前被拒绝,以及 token-major 布局对 vllm 与 AOT 编译缓存哈希键的区分且不污染用户 additional_config。
文件审查摘要
文件 变更 审查结果
vllm_hcu/v1/core/sched/steady_decode_scheduler.py 新增 · +266/-0
tests/runtime_patch/test_steady_decode_scheduler.py 新增 · +258/-0
tests/runtime_patch/test_omni_hcu_scheduler.py 新增 · +203/-0
tests/runtime_patch/test_omni_input_prepare.py 新增 · +153/-0
vllm_hcu/v1/omni_input_prepare.py 新增 · +89/-0
vllm_hcu/v1/core/sched/scheduler.py 修改 · +50/-2
vllm_hcu/patch/platform/framework_opt/patch_scheduler.py 修改 · +13/-2
vllm_hcu/platforms/envs.py 修改 · +9/-0
审查信息
  • 变更统计:8 个文件,+1041/-4。
  • 覆盖情况:共 8 个文件,已完整审查 8 个。
  • 候选问题:0 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
  • 本服务只审查 GitHub 提供的 PR diff,未执行代码或重跑测试;结论仍需维护者核验。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant