已合并
feat: 支持ATT analysis tool #1855
zhang_shengjie创建于 8月27日
feat: 支持ATT analysis tool #1855
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhang_shengjie 的贡献)8月27日 创建了 pull request,commit 8bd2d9d4
atomgit-bot
8月27日 评论:
8月27日 评论:
🤖 正在生成合并请求摘要,请稍候…


不准确?
atomgit-bot
8月27日 评论:
8月27日 评论:
🤖 AI 代码检视正在进行中,请稍候…


不准确?
8月27日 添加了label:stat/needs-squash
8月27日 添加了label:cann-cla/yes
此处折叠了136条消息 查看更多
liyuewei
28 天前 评论:
28 天前 评论:
/lgtm


28 天前 添加了label:lgtm
28 天前 添加了label:approved
28 天前 合入了pull request
Pull Request
1. 主要解决的问题
ATT 模板和 tiling 的问题定位通常需要对比默认 Autofuse、开启 PGO、强制模板等场景,再结合
[PROF]/[DFX]日志、profiling、kernel meta 和 dump 图判断差异原因。原有分析工具位于外部目录,使用时依赖固定文件名和目录结构,难以直接分析用户执行 PyTorch/Inductor 或 TensorFlow 脚本后产生的实际产物。2. 修改方案
autofuse/tools/att_analyze/src/att.py提供统一 CLI 入口。summary、compare、split-slog、perf-formula、verify-tiling、evidence六个工具分别负责汇总、对比、拆分、公式分析、ABI 验证和证据导出。verify-tiling支持 TensorFlow/Inductor ABI;preset_B.json的aiv_num默认改为 56,并支持--aiv-num覆盖。执行前打印实际核数、来源、UB 大小和动态维度,方便用户核对硬件配置。output_code.py只提取字面量 artifact,不执行用户 Python 文件;Inductor PGO 的分段 host 源码可被拆分后参与验证。parse_status,不把缺失值当作有效 0;evidence JSONL 包含来源路径和行号,便于后续 skill 或人工复核。NOTICE、readme.md和docs/CSV_COMPARISON.md,工具目录的职责统一由autofuse/tools/README.md和 ATT README 说明;新增/整理的工具文件使用 2026 License。3. 代码目录结构
4. 工具职责、使用方法和效果
summary[PROF]日志或目录提取算子、模板、graph/result/group/case、tiling 和性能字段python3 autofuse/tools/att_analyze/src/att.py summary run.log -f csv -o summary.csvparse_statuscomparepython3 autofuse/tools/att_analyze/src/att.py compare default.csv candidate.csv -f text -o compare.txtOperator/Graph/Result/Group/Case匹配,显示模板、case、tiling 和性能差异evidencepython3 autofuse/tools/att_analyze/src/att.py evidence run.log -o evidence/att-evidence.jsonl和 manifest,记录来源路径、行号和解析状态split-slogpython3 autofuse/tools/att_analyze/src/att.py split-slog slog/ --op FlashAttentionScore -o split/compiler/、runtime/下的 case 日志,便于逐 case 定位perf-formula[PERF]pipe 公式python3 autofuse/tools/att_analyze/src/att.py perf-formula generated/ run.log --case r=0,g=0,c=1 -o perf/perf_formula.svg,标出最大 pipe 和跨 case 敏感参数;缺少[PERF]时明确提示证据不足verify-tilingpython3 autofuse/tools/att_analyze/src/att.py verify-tiling generated/ --scene tf --preset B --aiv-num 56 -o verify/verify/result.json保存 block_dim、workspace 或失败原因examples/examples.py的第一个示例只打印以上 CLI 命令,不会自动编译、profiling 或执行 tiling 验证;其余示例展示 Python API 调用。5. 代码修改流程图
flowchart LR A[用户执行默认/PGO/强制模板场景] --> B[日志、profiling、kernel_meta、dump] B --> C{att CLI} C --> D[summary 汇总] D --> E[compare 对比选择和性能] B --> F[split-slog 拆分 DFX/PROF] B --> G[evidence 导出来源证据] B --> H[perf-formula 生成 pipe SVG] B --> I[verify-tiling 编译并执行 ABI] E --> J[报告模板/tiling 差异] F --> J G --> J H --> J I --> J采集
[PROF]/[DFX]时,用户通常需要在自己的执行命令中设置ASCEND_SLOG_PRINT_TO_STDOUT=1和ASCEND_GLOBAL_LOG_LEVEL=1。本工具默认只读已有产物,不猜测 case,也不代替用户重新运行模型。6. 测试用例说明
git diff --checkdocs/superpowers)固定
tests/data/仅用于回归;真实 CANN、TensorFlow 或 Inductor 日志格式变化时,应脱敏新增 fixture 并同步期望结果,不覆盖旧样例。上述测试验证工具解析和产物生成能力,不代表任何模型的性能或精度结论。7. 核对清单
8. 其他信息
工具验证使用本仓 Python 环境和已有 ATT fixture;远端场景由用户提供运行环境和命令后再执行,标准远端通道为
ssh,不默认使用devssh。PR 1856/1857 保留各自 skill 内容,并已同步本 PR 的工具版本。