已合并
feat: add inductor cv validator skill #1742
feat: add inductor cv validator skill #1742
已合并
rick cheng创建于 21 天前
rick cheng
21 天前

描述

一、主要解决的问题

1.1 缺少统一的 Inductor CV 验证入口

Autofuse / Inductor CV 相关修改后,验证流程容易散落在临时脚本和手工命令里,缺少一个可复用、可迁移、可回归的统一 skill。

1.2 缺少针对 CV 融合的完整操作手册

在 CV 场景里,环境部署、流程验证、精度定位、性能分析、单算子对比、全量矩阵验证经常需要一起看。如果没有统一规范,后续很难快速定位问题,也不方便做回归和看护。

1.3 缺少可直接执行的矩阵验证脚本

需要一个能在不同 CANN / torchair / torch-npu 环境下运行的验证脚本,能够完成 env probe、dry-run 和正式矩阵执行,并把每个 case 的中间产物、日志和结果保存下来。

二、修改方案

  • 新增 af-inductor-cv-validator skill,作为 Inductor CV 验证入口。
  • 新增 inductor_cv_guide.md,把工作流整理为六个章节:
    • CV 环境部署
    • CV 融合流程验证
    • CV 精度功能定位
    • CV 性能分析
    • CV 融合算子和单算子快速比对
    • CV 全量矩阵验证
  • 新增 scripts/run_inductor_cv_matrix.py,用于执行环境探测、干跑和正式矩阵验证。
  • 新增 tests/test_run_inductor_cv_matrix.py,覆盖矩阵定义、vv_only 对照、mixed dtype、fragment08、env probe 等关键行为。
  • 更新 .claude/skills/.gitignore 白名单,确保新 skill 可被仓库跟踪。

三、验证方式

  1. python3 -m pytest .claude/skills/af-inductor-cv-validator/tests/test_run_inductor_cv_matrix.py -q

四、变更类型

五、核对清单

六、补充说明

  • 本 PR 主要面向 CV 融合验证与看护流程,不影响 SuperKernel 主路径。
  • 所有验证建议都按 case 目录保留日志、tiling 文件、生成代码和结果,方便后续回归。
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rick cheng 的贡献)
Rrick cheng
21 天前 创建了 pull request,commit 92cd3a3c
atomgit-bot
atomgit-bot
21 天前 评论:

变更摘要

该 PR 主要围绕两条线展开:一是新增 af-inductor-cv-validator skill,为 Inductor CV 融合验证提供统一入口、操作手册和可执行的矩阵验证脚本;二是增强 SuperKernel 的 scope 验证与日志能力,包括新增 aclskScopeVerify 接口、引入 scope 配对校验、重构日志上下文管理并收敛 scope 相关类型定义。此外还调整了 .gitcode/workflows 下 CI 流水线的阶段划分、上传条件与参数传递。

主要改动

  • 新增 Inductor CV 验证 skill 及其测试:新增 .claude/skills/af-inductor-cv-validator 下的 inductor_cv_guide.mdscripts/run_inductor_cv_matrix.pytests/test_run_inductor_cv_matrix.py,测试覆盖矩阵定义、vv_only 对照、mixed dtype、fragment08、env probe、matmul_v3 头文件宏探测等关键行为。

  • 新增 aclskScopeVerify 接口及配套类型:在 super_kernel.h 中新增 aclskScopeVerifyNodeTypeaclskScopeVerifyKernelTypeaclskScopeVerifyNodeInfoaclskScopeVerifyGraphInfoaclskScopeVerifySplitResult 等枚举与结构体,并声明 aclskScopeVerifysuper_kernel.cpp 中提供当前返回 ACL_SUCCESS 的桩实现。

  • 图构建增加 scope 配对校验并传播失败SuperKernelGraph::UpdateNodeScopeBitFlags() 改为返回 boolProcessScopeEnd() 同样返回 bool;检测到未关闭、未匹配或重复的 scope begin/end 时返回 falseInitSKGraph() 据此记录错误并返回失败。

  • 日志上下文 LogContextGuard 重构:删除 sk_resource_manager.cpp 中的局部 ScopedModelLogContext,将 LogContextGuard 扩展为支持按 modelLabel 路由默认日志和按 handleName/filePath 路由指定文件两种构造,并新增 Restore()previousModelLabel_ 恢复机制;异常处理在解析 SkHeaderInfo 后按 modelIdIndex 建立日志上下文。

  • scope 类型与常量定义统一:删除 sk_scope_kernel_types.h,将 MAX_SCOPE_NAME_LENDEFAULT_SK_SCOPE_NAMEScopeKernelArgs 收敛到 sk_common.h,相关 .asc 与测试文件改为包含 sk_common.h;同时将 IsScopeKernel 重构为 GetScopeKernelInfo,统一返回获取信息是否成功。

likedislike
atomgit-bot
atomgit-bot
21 天前 评论:

代码审查

我已读取完整的 .claude/skills/.gitignore 文件内容,并对照该 diff 逐条分析。

审查结论分析:

该文件采用「先 * 全部忽略,再用 ! 白名单递归放行」的策略。本次新增的 4 行:

  1. !af-inductor-cv-validator/ — 放行目录本身(配合父目录规则,目录必须被放行才能进入内部);
  2. !af-inductor-cv-validator/** — 递归放行目录下所有内容;
  3. af-inductor-cv-validator/**/__pycache__/ — 重新忽略各层级 __pycache__ 目录;
  4. af-inductor-cv-validator/**/*.pyc — 重新忽略 .pyc 文件。

这些规则的顺序与语义均正确:

  • 重新忽略规则(第 16、17 行)位于放行规则(第 14、15 行)之后,遵循「后匹配者生效」,能正确覆盖 __pycache__.pyc
  • **/ 可匹配零层目录,故能同时覆盖直接子级与深层路径;
  • 后续的 !af-perf-modeler/** 等白名单针对其它目录,与 af-inductor-cv-validator 无路径交集,不会产生冲突;
  • 白名单目录名与 PR 描述中的 skill 名 af-inductor-cv-validator 完全一致,符合文件第 2 行注释约定的「!<skill-name>/!<skill-name>/**」白名单写法。

未发现正确性、安全、规范或性能方面的问题。

Closing Summary

  • 已审查文件:.claude/skills/.gitignore —— 无问题(no issues)。
  • 各优先级发现数量:P0=0,P1=0,P2=0,P3=0。
  • 整体风险判断:本次变更仅是为新增 skill 目录补充 .gitignore 白名单并排除 Python 缓存产物,规则顺序与语义均正确,风险极低,属于安全、低影响的配置变更。

我已完成对唯一变更文件 .claude/skills/af-inductor-cv-validator/scripts/run_inductor_cv_matrix.py(+1313 行,新增脚本)的逐段审查。

审查结论

按优先级统计:

  • P0:0
  • P1:0
  • P2:1(--allow-multiple-cann 声明后从未使用,多 CANN 分支无条件报错,防御性开关失效)
  • P3:4(未使用的 STAGES / CV_KINDS 死代码、--timeout 零/负数边界导致所有 case 立即超时、--autofuse-prefix 场景仍强制要求 in-repo 构建产物)

总体风险判断: 该脚本为自包含的 CV 矩阵验证工具,核心数值比对(tensor_metrics)、输入构造(make_inputs)、矩阵定义、环境清洗与 case 编排逻辑整体自洽,未发现会导致构建失败、数据损坏或安全暴露的 P0/P1 缺陷。主要问题集中在:一个形同虚设的 CLI 开关(P2,需修复或删除)、若干死代码与边界输入校验缺失(P3)。整体为中等偏低风险,建议合并前至少处理 --allow-multiple-cann 的失效问题。


发现 6 个问题,均为中低优先级建议。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

likedislike
CANN-robotCANN-robot成员
21 天前 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
21 天前 添加了label:cann-cla/no
此处折叠了116条消息 查看更多
CANN-robotCANN-robot成员
17 天前 添加了label:lgtm
张德鹏成员
16 天前 解决了最后一个问题
张德鹏成员
16 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
16 天前 添加了label:approved
CANN-robotCANN-robot成员
16 天前 合入了pull request