Skip to content

[feat] 适配main分支的moe接口 - #219

Open
Sherlolo wants to merge 16 commits into
HYGON-AI:mainfrom
Sherlolo:main-yangyinan
Open

Sherlolo wants to merge 16 commits into
HYGON-AI:mainfrom
Sherlolo:main-yangyinan

Conversation

@Sherlolo

@Sherlolo Sherlolo commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

改动内容

  • 修复 fused MoE 使用 LightOp 后端时的导入问题。
  • 为 LightOp MoE 后端适配 W8A8 INT8 和 W8A8 FP8,补充权重打包、量化信息及执行路径分发。
  • 适配 HCU MegaMoE,新增 W8A8 INT8 eager 执行、权重转换、对称缓冲区生命周期管理及运行限制。
  • 扩展 FlashAttention 接口的 out 参数支持,调整 KV Cache 和 Varlen 路径的返回结果处理。
  • 补充相关 ServerArgs、模型加载及 MoE 调用链适配。

动机 / 关联

补齐 HCU 场景下 LightOp MoE 的 W8A8 INT8/FP8 支持,并打通 MegaMoE 与 FlashAttention 接口适配,解决 fused MoE 在 LightOp 后端的导入和执行问题。

验证情况

项目 结果 环境
服务启动 已验证 HCU 环境验证
推理无报错 已验证 HCU 环境验证
静态检查 通过 git diff --check origin/main...main-yangyinan

环境快照

0.5.12-ubuntu22.04-dtk2604-py3.10-20260807-0006

影响面

  • 仅 HCU 分支代码,不影响通用路径
  • 改动通用路径(涉及 LightOp MoE 量化分发、MegaMoE 调用链及 FlashAttention out 接口;相关逻辑受后端、量化模式和 HCU 条件约束)
  • 涉及算子/kernel(需算子方向 review)

CI States

Latest PR Test (Base): ❌ Missing run-ci label -- add it to run CI tests.
Latest PR Test (Extra): ❌ Blocked -- run-ci is required first.

lizhigong1988
lizhigong1988 previously approved these changes Aug 24, 2026
@hygon-ai-ai-reviewer

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

Copy link
Copy Markdown

AI Review

发现 1 个问题。

[P2] is_lightop 被误加到 DeepEPv2Fp8ScaleFormat,判断恒为 False

  • 位置:python/sglang/srt/layers/moe/utils.py:243
  • 触发条件:任何调用 DeepEPv2Fp8ScaleFormat 实例的 is_lightop(),或调用方按方法体语义期望在 MoeRunnerBackend 枚举成员上调用该方法时。
  • 证据与影响:hunk 上下文显示新增方法位于 DeepEPv2Fp8ScaleFormat(NamedTuple) 类体内;self 是含 tma_aligned/ue8m0 字段的元组,与枚举 MoeRunnerBackend.LIGHTOP 用 == 比较按元组/对象相等语义必然返回 False,写法表明本意是加在 MoeRunnerBackend 枚举上。 该判断在任何输入下恒为 False,LIGHTOP 后端选择逻辑永远不会命中;若调用方在 MoeRunnerBackend 上调用则直接 AttributeError,本次 lightop 适配路径失效。
  • 修改建议:将 is_lightop 移到 MoeRunnerBackend 枚举类中定义(return self == MoeRunnerBackend.LIGHTOP),并确认 DeepEPv2Fp8ScaleFormat 上不应保留该方法;注意枚举成员比较在 Enum 上重写 __eq__ 后语义是否仍符合预期。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:Release PR HCU Wheels
工作流最终状态:failure
对应版本:Run c7d700f / PR c7d700f / 第 1 次运行

失败任务 1 个:已完成 0 个,未完成 1 个。进度已保存,可用 reviewctl ci-review OWNER/REPO RUN_ID 续审。

CI 汇总结论

目前尚未定位直接失败根因。

仍待定位或尚未处理:compile (3.10)。

部分任务尚未完成分析,以上是阶段性结论,不表示所有失败已解释。


compile (3.10)

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

本任务证据分析未完成,已保留上述结果;不能认为所有失败均已解释。

日志扫描 127971 字节 / 1069 行;选取 161 行、匹配 5 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 0/14 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/2)

证据批次 1

尚未完成分析。

证据批次 2

本批未发现可核对的直接异常,不单独推断根因

无可逐字核对的引用。

每个日志最多扫描32 MiB、60秒下载;选取错误窗口并按约12000字符分批取证,再按任务和工作流汇总,逐批证据可展开。每轮最多24批或10分钟,未完成部分可续审。相关diff按文件引用选取并分批;未提供文件不能据此判为无关。未执行代码或重跑CI。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:PR Test (HCU)
工作流最终状态:failure
对应版本:Run c7d700f / PR c7d700f / 第 1 次运行

失败任务 2 个:已完成 2 个,未完成 0 个。

CI 汇总结论

已定位直接异常的任务:Wait HCU wheels。

  • Wait HCU wheels:等待作业超时:整个等待期内 /ci_public/sglang-das/hcu-wheel-staging/HYGON-AI_sglang-das/pr-*/c7d700fca69b... 下始终未出现该 commit 的 staged wheel 目录,最终报 Timed out waiting for locally staged HCU wheels(L267-L307)。上游 wheel 未产出或未写入 staging 的根因在本批日志中无法确定。

仍待定位或尚未处理:PR Test (HCU) finish。


Wait HCU wheels

失败原因

等待作业超时:整个等待期内 /ci_public/sglang-das/hcu-wheel-staging/HYGON-AI_sglang-das/pr-*/c7d700fca69b... 下始终未出现该 commit 的 staged wheel 目录,最终报 Timed out waiting for locally staged HCU wheels(L267-L307)。上游 wheel 未产出或未写入 staging 的根因在本批日志中无法确定。

问题分类:基础设施

与本次改动的关系

无法确定:本批仅有等待作业日志,无上游 wheel 构建日志,无法区分是本次改动导致构建失败还是流水线/staging 环境问题;Run SHA 与 PR SHA 一致;patch 0/14 匹配不能据此判无关。

建议处理

检查该 commit 的 HCU wheel 构建/发布作业是否运行及成功,核对其写出的 staging 路径是否为 pr-*/c7d700fca69b2d42d5b3ffeaa7809c5bf6def935;必要时重跑上游构建后再重试本等待作业。

验证方式:staging 目录出现对应 wheel 文件后重跑等待作业,确认不再输出 no staged dirs,等待循环正常退出并以 exit 0(无 ##[error])结束。

分析限制:仅依据所引用日志及相关改动;实际采集和处理范围见下方覆盖说明。

证据批次:1

L267: 2026-09-10T12:17:32.3332726Z [wait-hcu-wheels] no staged dirs under /ci_public/sglang-das/hcu-wheel-staging/HYGON-AI_sglang-das/pr-*/c7d700fca69b2d42d5b3ffeaa7809c5bf6def935

L268: 2026-09-10T12:17:32.3333470Z [wait-hcu-wheels] waiting for local staged wheels for c7d700f; sleep 60s

L307: 2026-09-10T12:17:32.3363712Z Timed out waiting for locally staged HCU wheels for c7d700f

日志扫描 31382 字节 / 311 行;选取 60 行、匹配 1 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 0/14 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

直接异常证据

L267: 2026-09-10T12:17:32.3332726Z [wait-hcu-wheels] no staged dirs under /ci_public/sglang-das/hcu-wheel-staging/HYGON-AI_sglang-das/pr-*/c7d700fca69b2d42d5b3ffeaa7809c5bf6def935

L268: 2026-09-10T12:17:32.3333470Z [wait-hcu-wheels] waiting for local staged wheels for c7d700f; sleep 60s

L307: 2026-09-10T12:17:32.3363712Z Timed out waiting for locally staged HCU wheels for c7d700f


PR Test (HCU) finish

失败原因

现有已处理证据未定位直接异常。启动器终止信号、退出码和失败统计只能说明失败,不能单独确定根因。

建议:优先处理尚未完成的证据批次;若处理完成后仍无直接异常,再获取失败进程的原始异常输出。不能把其它批次未出现在某一片段中称为日志下载截断。

日志扫描 4591 字节 / 77 行;选取 60 行、匹配 1 处错误信号。下载已结束;证据窗口未达到选取上限;日志可用。

相关 diff:已选取 0/14 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

本批未发现可核对的直接异常,不单独推断根因

无可逐字核对的引用。

每个日志最多扫描32 MiB、60秒下载;选取错误窗口并按约12000字符分批取证,再按任务和工作流汇总,逐批证据可展开。每轮最多24批或10分钟,未完成部分可续审。相关diff按文件引用选取并分批;未提供文件不能据此判为无关。未执行代码或重跑CI。

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:Release PR HCU Wheels
工作流最终状态:failure
对应版本:Run af22cb4 / PR af22cb4 / 第 1 次运行

失败任务 1 个:已完成 1 个,未完成 0 个。

CI 汇总结论

已定位直接异常的任务:compile (3.10)。

  • compile (3.10):日志直接证明依赖校验失败:对 /usr/bin/python 的依赖检查要求 torch==2.13.0(L1025-L1027),实际安装为 2.10.0+das.opt1.dtk2604.2608181852.gddc08a(L1028),该步骤以退出码 1 结束(L1029)。工作流 env 中 TORCH_VERSION 为 2.10.0(L1034)。2.13.0 版本要求的具体来源本批无法确认。

compile (3.10)

失败原因

日志直接证明依赖校验失败:对 /usr/bin/python 的依赖检查要求 torch==2.13.0(L1025-L1027),实际安装为 2.10.0+das.opt1.dtk2604.2608181852.gddc08a(L1028),该步骤以退出码 1 结束(L1029)。工作流 env 中 TORCH_VERSION 为 2.10.0(L1034)。2.13.0 版本要求的具体来源本批无法确认。

问题分类:依赖

与本次改动的关系

无法确定:本批相关 diff 为 0/14,未提供可用 patch,无法核对 torch==2.13.0 的要求是否由本次改动引入;Run SHA 与 PR SHA 一致仅表示构建该提交,不能单独证明因果关系。要求 2.13.0 的清单或元数据未在本批出现。

建议处理

定位要求 torch==2.13.0 的来源(依赖清单或包元数据),与 env TORCH_VERSION=2.10.0 及已安装的 2.10.0+das 本地构建版本对齐:放宽检查的目标版本,或改用能提供 2.13.0 的包源。仅当核对确认指向本次改动时才调整 PR 内容。

验证方式:在相同容器中单独执行该依赖校验命令确认通过;如调整 TORCH_VERSION 或依赖清单,重跑 compile (3.10) job,观察该步骤是否仍报 Unmet dependencies。以上为建议方向,尚未实际运行验证。

分析限制:仅依据所引用日志及相关改动;实际采集和处理范围见下方覆盖说明。

证据批次:1

L1025: 2026-09-14T06:22:55.6649893Z ERROR Unmet dependencies (checked against /usr/bin/python):

L1026: 2026-09-14T06:22:55.6650354Z torch==2.13.0

L1028: 2026-09-14T06:22:55.6651039Z found: 2.10.0+das.opt1.dtk2604.2608181852.gddc08a

日志扫描 127856 字节 / 1067 行;选取 77 行、匹配 5 处错误信号。下载已结束;未触发证据裁剪;日志可用。

相关 diff:已选取 0/14 个 PR 文件分批提供(是相关性选取,不是文件丢失);匹配但无 patch 0 个,patch 不完整 0 个。未运行代码,未检查未提供的依赖清单、文件或其它任务。

查看逐批证据与处理进度(1/1)

证据批次 1

直接异常证据

L1025: 2026-09-14T06:22:55.6649893Z ERROR Unmet dependencies (checked against /usr/bin/python):

L1026: 2026-09-14T06:22:55.6650354Z torch==2.13.0

L1028: 2026-09-14T06:22:55.6651039Z found: 2.10.0+das.opt1.dtk2604.2608181852.gddc08a

@hygon-ai-ai-reviewer

Copy link
Copy Markdown

AI CI 失败分析

工作流:PR Test (HCU)
状态:失败

总结

  • Wait HCU wheels:日志直接证明:等待脚本在 /ci_public/sglang-das/hcu-wheel-staging/.../pr-*/<run SHA> 反复轮询始终 no staged dirs,最终输出 Timed out waiting for locally staged HCU wheels 并以退出码1结束(从任务开始到超时约60分钟)。wheels 一直未 staged 的上游原因本批无日志,无法确定。

与本次改动的关系

无法确定:Run SHA 与 PR SHA 相同;本批日志未引用任何 diff 文件(相关diff 0/14,仅选取范围限制)。staged wheels 未出现可能源于上游构建失败、staging 流水线或路径配置问题,需上游任务日志核对,本批证据不足以判定相关或无关。

建议处理

  1. 最小方向:核对本 SHA 触发的 HCU wheels 构建/staging 任务日志与产物,确认其是否成功、输出是否落在脚本监控的 hcu-wheel-staging 路径,核对通配 pr-*/<run SHA> 是否匹配;必要时重跑上游构建。以上为待执行方向,未实际执行。

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants