已合并
docs:基于cannbay3收集的长尾算子轨迹落盘知识卡片到runbook #42
docs:基于cannbay3收集的长尾算子轨迹落盘知识卡片到runbook #42
已合并
wangshaojun创建于 9月18日
wangshaojun
wangshaojun成员
9月18日

Pull Request 说明

变更说明

  • 关联 Issue:无
  • 主要改动:
    • 将 cannbay 算子开发轨迹会话经 ops-knowledge-trace-ingest 流水线(物化 → 归一化 → 相关性门禁 → 分片挖掘 → 语义聚类策展 → 多轮独立审查 → receipt 绑定原子发布)全量落库为 runbooks 实战知识:新增 578 张卡(compilation 300 / precision 109 / validations 104 / runtime 44 / performance 21),对 188 张存量卡做库内增量合并,共 766 个发布目标,并同步更新 Skill 参考资料与脚本。
    • 契约迁移:584 张卡 ## 遗留问题 节并入 ## 失效边界(以 未决项 条目承载原有语义),对齐 evals 既有回归(HEAD 存量语料 0 命中);trace-ingest Skill 5 份参考文档与 materialize_trace_contract.py(augment_ledger 支持多 trace 簇源数组合并与代表草稿择优)同步更新。
    • 同步 7 个受影响 index.md 与 3 份日志;.gitignore 增加 local-tools/(会话期临时基建,不入库)。
  • 补充说明:
    • 知识来源为本地 cannbay 轨迹导出(多会话 trace),非官方文档镜像;每张卡携带逐字证据锚点与证据强度分级,形态覆盖 repair_recipe / diagnostic_rule / validated_pattern / negative_result,保留大量负结果与失效边界记录。
    • 审查链含 4 轮独立 reviewer(blocker/major 全部修复),个人路径与用户名已在审查轮脱敏,提交前敏感信息扫描无命中。
    • 分支已合入最新 master(cd7c7b23)并解决全部 7 处双边新增冲突(日志按时间倒序合并、runbooks index 取并集、trace-ingest skill 参考语义合并:保留上游 raw_source_sha256 去重精炼 + 本仓「遗留问题→失效边界」迁移),当前无冲突,可直接合入。

变更类型

验证

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 wangshaojun 的贡献)
wangshaojunwangshaojun成员
9月18日 创建了 pull request,commit 0f6a32fd
CANN-robotCANN-robot成员
9月18日 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
9月18日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
9月18日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/cannbot-knowledge ✅ qq_41667743, zhanghz1 (2/2) ✅ zhanghz1 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

wangsj0012, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
zhanghz1
zhanghz1成员9月18日进行代码检视3
knowledge/ops/ascendc/runbooks/precision/stat_rel_err_near_zero_floor_denominator.md
已过期
@@ -2,3 +2,3 @@
22type: "Runbook"
33title: 近零 golden 相对误差 — 分母改用 max(|g|, th)
4-description: TTK stat_rel_err 镜像钩子的相对误差分母 |g|+1e-7 在近零 golden 时数值不稳定(bf16 th=2^-7≈0.0078 远大于 1e-7);改用 max(|g|, th) 作分母,mere<th / mare<10×th 阈值不变。
4+description: TTK stat_rel_err 镜像钩子的相对误差分母 |g|+1e-7 在近零 golden 时数值不稳定(bf16 th=2^-7≈0.0078 远大于 1e-7);改用 max(|g|, th) 作分母,mere<th / mare<10×th 阈值不变。R2-R4:eps/abs_floor 须按精度模型推导(fp32 kernel vs double golden、混合 abs+rel 判定、fp16 小值输出三种形态),MARE 只豁免噪声界内元素并保留真缺陷反证。R5/R6:CANN 社区标准小值域阈值表三段判定与 MARE/MERE 分离判别 + 混合分母 max(|g|+1e-7,10×threshold)。R7-R9:eps 按累加误差模型定标(fp32 大累加深度需超 th,如 C_in=2048 时 0.1,等效 allclose(atol,rtol) 口径);输出天然含近零段算子的加式 eps=1.0 变体;fp32-vs-double 机器精度差按官方小值域标准(2^-14/2^-30)判真实超标,放宽 epsilon 恰好压线通过属 banned 掩盖。R9-R11:生态标准分 dtype atol(fp32=1e-3/fp16=bf16=1e-2)作 max 分母 + worst-element 打印 + 公式回退当回归;官方小值域分支第二实现(小值元素绝对误差 2^-16 判定、不进 MERE/MARE、带计数统计);阈值契约不可改时按三签名归类 bf16 量化极限(safety_fallback),Mock 自检以 MERE+无NaN 分流。R12-R15:mare_raw 诊断保留与双向验证、2^-30 双标杆阈值的单标杆退化 fallback(三前提)、fp16 大 K atol 边界的事后放宽反例、"期望==实际打印一致"指纹与小值域阈值 max(表值,10×th) 扩展。R16(同 GroupNorm 轨迹终态):torch 工程完整比对器实现(dtype 阈值表 + 整数精确匹配分支 + 失败诊断打印,与 C++ ST 同口径)、fp32 maxMARE 介于 th 与 10×th 的双阈值防误杀实证(单一 MERE 阈值会误杀)与 C++/PyTorch 双工程全量验证(716/716、641/641)。R19:示例侧 CompareResults 双示例(aclnn+GEIR)同修复应用与完整 verbatim 代码(小值元素 atol=10×th 判定、不参与 MARE、MERE 主干含全部元素),fp16 MARE 1.03e-01 假失败闭环。R20:自建 C++ ST 比较器近零兜底 epsilon 独立魔法数(1e-6)过小——灾难性消除产物 |golden|∈[1e-6,10×th] 仍走相对误差,MERE 极小而 MARE 虚高 6.8e-2 误报;epsilon 应取 10×threshold、atol=threshold,与 numpy allclose 混合判据同型。
zhanghz1
zhanghz19月18日评论:

这张知识卡的更新把多个不同根因、不同处置方式的案例合进了一张既有卡,已经违反本 PR 摄入规则要求的“一卡一根因”。例如:

  • R2:ROIAlign 的误差比较问题;
  • R17:GridSampler 因正负输入相消产生近零结果,作者建议把输入从 [-1,1] 改为 [0,1];
  • R19:示例代码中的比较器修复;
  • R20:C++ ST 比较器的 epsilon 取值问题。

最明显的是正文中编号为 R17 的案例:它通过修改 GridSampler 输入分布来规避相消,属于测试数据侧处置,与本卡标题对应的 “相对误差分母改用 max(|g|, th)”不是同一根因。当前用 GridSampler x 分布 0 1 相消 查询,前 50 条都找不到这条知识。

这个知识卡对应的多个补充案例信息需要重新审视,按实际情况拆成多个知识卡,不要把聚合卡以扩写既有卡的方式直接落库。

likedislike
System
系统消息系统
9月20日 评论:

changed this line on 118b96c9 view diff detail

wangshaojun
wangshaojun成员
9月20日 评论:

已按"一卡一根因"完成拆分,stat_rel_err_near_zero_floor_denominator.md 从 666 行聚合卡拆为 1 主卡 + 12 张独立根因卡(commit 118b96c9):

  • 主卡还原为原始 max(|g|, th) 分母闭环(666→135 行),不承载任何 R 增量;
  • R17(GridSampler)独立为 grid_sampler_mixed_sign_cancellation_nonnegative_input.md——数据侧非负输入处置,description 已含"grid_sampler_3d / reflection / 混合符号相消 / 非负输入 0,1"关键词,GridSampler x 分布 0 1 相消 检索可直接召回;
  • R2/R3/R12(ROIAlign) → fp32_kernel_double_golden_near_zero_floor_derivation.md;
  • R19(示例侧) → depthwise_small_value_print_identical_example_compare.md;
  • R20(epsilon 魔法数) → near_zero_bucket_epsilon_decoupled_from_threshold.md;
  • 其余 R4-R16 各按根因归位(元素豁免/官方小值域/加式 eps/真实超标 banned/公式回退/bf16 量化极限/双标杆/GroupNorm 混合分母),每张卡有独立 title/description/验证信号,详见 precision 目录。

同步修复 3 处反向引用、新增 12 条索引摘要。全库链接审计通过(28146 个本地链接无新增断链)。

zhanghz1
zhanghz1成员9月18日进行代码检视2
knowledge/ops/ascendc/runbooks/compilation/bf16_scalar_to_fp32_bit_extension.md
@@ -352,0 +388,4 @@
388+ exp = 1;
389+ while ((mant & 0x0400u) == 0) { mant <<= 1; exp++; }
390+ mant &= 0x03FFu;
391+ f32 = sign | ((127 - 15 - exp + 1) << 23) | (mant << 13);
zhanghz1
zhanghz19月18日评论:

这段 ToFloat 对 FP16 次正规数的转换存在指数偏一。可用 0x0200 直接验证:其正确值为 2^-15,当前代码输出 2^-16;穷举全部 2046 个正、负非零次正规位型,结果均为正确值的一半。请修正次正规分支,并补充 0x0001、0x0200、0x03ff 和 0x0400 的边界测试。

PR 新增的另一张卡已经准确说明同一个错误:floattohalf_subnormal_threshold_exp102.md:192 明确指出规格化后的指数应为 127 - 14 - e,写成 127 - 15 - e 会使结果小一倍。因此当前 PR 内部存在直接矛盾。

agent建议最小修复是把 388 行的exp初始化为0,需要复核确认下

likedislike
wangshaojun
wangshaojun成员
9月20日 评论:

已修正。第 388 行 exp = 1; → exp = 0;,使规格化后指数公式 127−15−exp+1 = 113−k 与 floattohalf_subnormal_threshold_exp102.md 的 127−14−e 一致。补充了 0x0001、0x0200、0x03ff、0x0400 四个边界编码的验证说明。commit 29352efc。

汪超成员
9月18日 评论:

/compile

likedislike
wangshaojunwangshaojun成员
9月18日 预合并成功(commit_id: b936609f27c90f9552e5ca24f4e9f979d74381e1)
CANN-robot
CANN-robot成员
9月18日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月18日 添加了label:ci-pipeline-running
此处折叠了7条事件消息 查看更多
CANN-robotCANN-robot成员
9月20日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
9月20日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
wangshaojunwangshaojun成员
9月20日 预合并成功(commit_id: dafa0daf14bd5f50654629372d50c6b758f0b5c7)
wangshaojunwangshaojun成员
9月20日 推送  1 个提交:118b96c9-refactor: stat_rel_err 聚合卡按根因闭环拆分 1→13 张,修复 bf16 卡链接
wangshaojunwangshaojun成员
9月20日 预合并成功(commit_id: 2d9d475c6615551027c51c599838b4e2077a5e85)
CANN-robotCANN-robot成员
9月20日 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
9月20日 添加了label:cann-cla/yes
zhanghz1
zhanghz1成员9月20日进行代码检视3
knowledge/ops/ascendc/runbooks/compilation/bf16_scalar_to_fp32_bit_extension.md
已过期
@@ -353,0 +440,4 @@
440+} // namespace NsCummin
441+```
442+ 
443+次正规分支修正说明:`exp` 须从 `0` 起计(移位前即规格化完成时 `exp==0`,公式 `127 - 15 - exp + 1 = 127 - 14 - exp` 给出正确指数),原先从 `1` 起计使结果恒小一倍。边界编码验证(host 侧位级换算即可复算):`0x0001`(最小次正规,2^-24)、`0x0200`(2^-15)、`0x03ff`(最大次正规,≈2^-15×(1−2^-10))经规格化后分别落到指数 2^-24、2^-15、~2^-15;`0x0400` 为最小正规数(exp=1)走正规分支得 2^-14。与 [FloatToHalf 次正规阈值卡](../precision/floattohalf_subnormal_threshold_exp102.md) 的读方向基指数 `127−14−e` 同源一致。
zhanghz1
zhanghz19月20日评论:

这段话把最大次正规数 0x03ff 写成“≈2^-15×(1−2^-10)”并说规格化后约为 2^-15。实际值是 (1023/1024)×2^-14 ≈ 6.09755516e-5,紧邻最小正规数 2^-14;现有文字仍少一倍。

AI建议修改:

次正规分支修正说明:这里的 exp 实际记录尾数的左移次数,须从 0 开始,每左移一次加 1;FP32 指数字段为 127 - 14 - exp(与代码中的 127 - 15 - exp + 1 等价)。原先从 1 开始,会使所有非零 FP16 次正规数的转换结果缩小一半。边界编码可在 host 侧按位型复算:0x0001(最小次正规)= 2^-24,0x0200 = 2^-15,0x03ff(最大次正规)= (1023/1024) × 2^-14 ≈ 6.09755516 × 10^-5;0x0400(最小正规)= 2^-14。这与 FloatToHalf 次正规阈值卡 (../precision/ floattohalf_subnormal_threshold_exp102.md) 中读方向使用的 127 - 14 - e 基指数一致。

可以再检查下对0x03ff的解读是不是搞错了

likedislike
System
系统消息系统
9月20日 评论:

changed this line on 06241ebc view diff detail

wangshaojun
wangshaojun成员
9月20日 评论:

已修正。0x03ff(最大次正规)正确值为 (1023/1024)×2^-14 ≈ 6.09755516×10^-5,紧邻最小正规数 2^-14;原表述 ≈2^-15×(1−2^-10) 少了一倍,已按你提供的说法改写。同时把 exp 的语义改述为"尾数左移次数,须从 0 起计,每左移一次加 1;FP32 指数字段为 127 - 14 - exp"。commit 06241ebc。

zhanghz1
zhanghz1成员9月20日进行代码检视3
knowledge/ops/ascendc/runbooks/precision/index.md
已过期
@@ -259,0 +377,4 @@
377+- [fp16 小值输出 MARE 假失败的两条边界 — 元素豁免 allAbsOk(正)与大 K 事后放宽(反例红线)](fp16_small_value_mare_exemption_posthoc_loosen.md):分组矩阵乘 fp16:正= allAbsOk 兜底真缺陷仍 FAIL;反例=大 K 逐元素混合判定属事后放宽(测试侧放松),正确次序=判别形态→对照钉死→事先声明。
378+- [fp32-vs-double 机器精度差判真实超标 — 放宽 epsilon 属 banned 掩盖](fp32_double_real_exceed_banned_epsilon_loosen.md):按官方小值域标准 |a-g|≫2^-30 判真实超标而非指标病;放宽 epsilon 恰压线通过属 banned 掩盖(三态判据),kernel 侧死路(AI Core 禁 double)。
379+- [fp32 kernel 对 double golden 的近零豁免界须按精度模型推导 — eps 下限、abs_floor 校准与 mare_raw 双向验证](fp32_kernel_double_golden_near_zero_floor_derivation.md):ROIAlign 类算子 fp32 vs double 精度差不可核内消除,eps/abs_floor 须按精度模型推导(1.5~2×余量),mare_raw 保留双向验证。
380+- [GridSampler 混合符号输入相消致近零输出 MARE 假失败 — 数据侧改非负输入 [0,1],golden 保持 double](grid_sampler_mixed_sign_cancellation_nonnegative_input.md):三线性 8 项相消使输出落 1e-5~1e-4 → 数据侧改非负输入(grid 保持越界覆盖),golden 保持 double;absErr 噪声指纹三步判别。
zhanghz1
zhanghz19月20日评论:

新卡链接标题写成了 [0,1],而索引生成规则要求写成 \[0,1\]。未转义的方括号使同步工具无法识别这条已有链接;直接运行写入模式的 sync-indexes 会在末尾再追加一条指向同一卡片的链接。请只把第 380 行链接标题中的 [0,1] 改为 \[0,1\],再运行 python3 .agents/skills/knowledge-ingest/scripts/knowledge_ingest.py sync-indexes --check 确认输出 stale 0。

likedislike
System
系统消息系统
9月20日 评论:

changed this line on 06241ebc view diff detail

wangshaojun
wangshaojun成员
9月20日 评论:

已修正。GridSampler 卡索引链接标题 [0,1] 改为 [0,1],运行 knowledge_ingest.py sync-indexes --check 输出 Checked 649 indexes, stale 0。commit 06241ebc。

wangshaojunwangshaojun成员
9月20日 预合并成功(commit_id: 06c063f40bf6c29f1d44680cfa925b087f776e9d)
wangshaojunwangshaojun成员
9月20日 推送  1 个提交:06241ebc-fix: 0x03ff 次正规值修正为 (1023/1024)×2^-14,索引链接标题转义 [0,1]
wangshaojunwangshaojun成员
9月20日 预合并成功(commit_id: c89436e7db022dabfdb362b2ba62c9c2c606894a)
CANN-robotCANN-robot成员
9月20日 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
9月20日 添加了label:cann-cla/yes
zhanghz1
zhanghz1成员
9月20日 评论:

/compile

likedislike
wangshaojunwangshaojun成员
9月20日 预合并成功(commit_id: 1e2353c2549884a46f343c852ba615e39db5ad97)
CANN-robot
CANN-robot成员
9月20日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月20日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月20日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月20日 添加了label:ci-pipeline-passed
zhanghz1
zhanghz1成员
9月20日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月20日 添加了label:approved
汪超成员
9月20日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
9月20日 添加了label:lgtm
CANN-robot
CANN-robot成员
9月20日 评论:

The MR can not be merged, because of CodeReview discussion not resolved

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
汪汪超成员
9月20日 解决了最后一个问题
CANN-robotCANN-robot成员
9月20日 合入了pull request