Skip to content
cccskills
FreePublished on GitHub

accuracy-gate

**精度验收标准**:凡是"改动不应改变结果"的场合(等价替换、算子/子模块融合、并行切分、 编译与图下发、拷贝消减),都按本标准判"合格 / 不合格"——等价分层(L1 逐位 / L2 数值门 / L3 有损门)+ 三级验收序(① 同配置重跑逐位 → ② 跨配置数值门 + 产物 md5 不变 → ③ 质量门)+ 判据不达标时的排障入口。

当用户说"这个算子能不能换个写法/换个 kernel/等价实现/ 无损替换""替换后结果会不会变""怎么证明逐位一致""结果不对""花屏""尾部塌了" "CPU 跑对 NPU 跑不对",或发现某个 hotspot 占了大头(例如某类算子在阶段里占 90% 以上)想动手时, 都应触发;即使用户只说"这样改有没有把结果改坏""能不能判它是无损的"也应触发。

覆盖:等价分层与判据、满足本标准的实现约定(per-shape 对拍写进实现,把索引/相位/顺序类重写 错误在首次调用抓住)、per-shape 条件性等价(同一改动在不同形状下结论可能不同)、 判据不达标 → `references/silent-failure-localization.md` 排障入口、否决案例的形态学 (换写法未换 kernel / 差异极小仍非逐位 / 等价但 OOM)、以及收益口径的归属(性能数字一律交 `perf-gate`)。

**近义分流**:选量化档 / 特性选档(要不要开量化、开哪一档)→ `dit-perf-opt`; 并行选型(USP / CP / TP 怎么切)→ `dit-parallel-opt`;本技能只判"结果是否被改变", 不负责选档与选型。

The English summary is being prepared. Showing the original description.

See how to install

Files included (10)

  • SKILL.md14.7 KB
  • evals/evals.json9.6 KB
  • references/bit-exact-harness.md4.9 KB
  • references/content-health-gate.md13.0 KB
  • references/equivalence-criteria.md8.5 KB
  • references/quality-gate.md11.8 KB
  • references/silent-failure-localization.md19.7 KB
  • scripts/bit_exact_harness.py6.4 KB
  • scripts/layer_bisect.py5.3 KB
  • scripts/op_threshold_sweep.py4.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

精度验收标准(等价改动 / 一致性判定)

本标准回答一个问题:这次改动到底有没有改变结果,凭什么这么判。

"等价替换"是性价比最高的一类优化:不改模型、不改数值、只换实现,往往能拿到数倍收益;它同时也是 最容易自欺的一类优化——"看起来一样"和"逐位一样"差着好几个数量级,而重写的错误几乎总是出在 索引 / 相位 / 顺序上,不体现在平均误差里。所以本标准的写法是反过来的:先把"等价"分层定义 清楚,再让实现与验收各自证明它。

谁在什么时候调用本标准

场景调用方式
未使用有损特性(量化/稀疏/缓存/步数裁剪/换权重)的任何优化强制按本标准验收一致性(用户裁决:未用有损特性 ⇒ 强制一致性验收)
等价替换 / 融合 / 拷贝消减 / 编译与图下发按本标准判"改动算不算无损"
并行切分(多卡 all_reduce 顺序、tile 边界)按本标准判一致性;切分自身的方法论归 vae-opt / dit-parallel-opt
有损档(量化、稀疏、缓存、少步蒸馏、VAE 解码替换)本标准只提供**第三级(质量门)**判据;档位选择与实施归 dit-perf-opt,流程收口归 model-auto-optimization

不属本标准的:选定"用哪种优化/开哪一档"(→ dit-perf-opt)、并行形态选型 (→ dit-parallel-opt)、收益数字的测量与上报(→ perf-gate, 性能验收标准)。本标准只出"一致性合格与否"的结论。

第一步:把"等价"分层定义清楚

不要笼统说"无损"。先选一层,并写进交付说明:

层级定义判据适用
L1 逐位等价与参考实现 bitwise 相同(torch.equal)固定输入逐元素对拍,逐形状做交付物要求"字节不变"时(等价替换的默认目标)
L2 数值门差异在明确阈值内(SNR / 相对 L2 / max|Δ|)给出阈值与理由,并说明下游容差无法逐位(换 dtype、换累加/归约顺序、多卡归约序)但可接受
L3 有损门允许改变产物,但需质量指标 + 视觉门PSNR/SSIM + 视觉判卷记录(第三级质量门)精度、稀疏、量化、换权重类改动

铁律:L1 与 L2 不能混用。"平均误差很小"不是逐位等价;一旦层级变了(例如为了性能把 dtype 下转),必须显式改口径并说明,不允许沿用"无损"的名义交付。

第二步:三级验收序(按①②③顺序做,缺一不可跳级)

级做什么判据通不过怎么办
① 同配置重跑逐位同一配置(同一拓扑 / 同卡数 / 同 seed / 同形状)重跑两次,逐位对拍torch.equal 成立、逐形状都成立先怀疑确定性来源:归约顺序、原子加、tile 边界、kernel 选择——这是环境问题,不是"允许的差异",必须先解释清楚再谈级别下移
② 跨配置数值门 + 产物 md5 不变基线配置 vs 改动配置(含多卡/不同 tile/不同并行形态)同窗对照产物 md5(与字节数)与基线一致;若无法逐位,则给出明确数值门与理由(L2)md5 变了就是改变了结果:按本文"门控、回退与否决记录"走回退或降级声明,不许含糊
③ 质量门(有损档才启用)冻结 baseline 产物 → 定量门 → 视觉门 → off-identity 归因定量 + 视觉 + off-identity 三门同过才可宣称"该有损档可用"回退或调档,带证据记录;细则与方法全文见 references/quality-gate.md
  • ①② 是一致性判据,③ 是可接受性判据:前者问"结果变了吗",后者问"变了以后还能用吗"。
  • 有损档里 ①② 也不能跳:换权重类改动同样要证明"接口接对了"(同 latent 对拍), 再谈画质档位(见 references/quality-gate.md「判定要点」的训练感知档两层口径)。
  • ③ 里下列情形必须先读 references/content-health-gate.md:① 执行侧无图像输入、 视觉门只能记 inconclusive 而仍要判"能不能用";② 有损档 / 换入外部训练权重档 (少步蒸馏适配器、VAE 解码替换)的产物级判定;③ 某特性是载重件(关掉它就不出图/出坏图) 而要做 off-identity;④ 已有纯数值研究给出"更差/不精确"的结论、要用服务端产物级 A/B 收口。
  • 三级验收的证据都要留:判据 + 实测数字 + 结论。跨配置只能同窗对照;跨窗口的绝对值不可比, 收益口径一律引用性能验收标准 perf-gate。
  • 复核独立性(多 agent 场景):三级验收的结论记录须由未参与该实施的实例复核后才进报表或 对外宣称;同一实例自证只算自验证(证据阶梯第 6 级见 ../perf-gate/SKILL.md;角色与交付件见 ../model-auto-optimization/references/agent-roles-and-handoff.md §2/§6)。

满足本标准的实现约定(实现期约定,不是验收期才做)

定位说明:本节约束的是怎么写实现。它的产物是"实现自带的对拍开关/日志",供验收期 三级验收直接消费。验收期不补写这段代码就等于第一级没做——因为 bug 会在第一次运行时 暴露,而不是等到端到端产物对比。

把等价性写进代码,让它在每次调用时自己对拍(脚本骨架 scripts/bit_exact_harness.py):

def replace(module, reference):
    def forward(*args, **kwargs):
        y_ref = reference(*args, **kwargs)          # 原始实现(可只在调试/首调用时跑)
        y_new = new_impl(*args, **kwargs)
        if y_new.shape != y_ref.shape or not torch.equal(y_new, y_ref):
            raise AssertionError(
                "not bit-exact: shape %s vs %s, max|d|=%s" %
                (tuple(y_new.shape), tuple(y_ref.shape),
                 float((y_new.float() - y_ref.float()).abs().max())))
        return y_new
    module.forward = forward

要点与原因:

  • 逐形状断言:等价性常常依赖形状(同一替换可能只在某个片长/tile/分辨率下逐位精确)。 判据必须是"每个形状都断言过",而不是"试过一个形状"。
  • 不满足就回退:把前置条件实现成显式判断,条件不满足时走原实现并打日志—— 而不是默默给出不等价结果。
  • 对拍成本可控:参考实现可以限制在开发期/首调用/抽样调用,避免长期拖慢线上; 但验收期必须全量对拍。
  • 别只对拍最终输出:中间张量也值得对拍(重写错误常出在中间相位/顺序上)。
  • 断言与门控配套:新实现一律 env-gated、默认关(默认路径逐位不变),并留一行回退 (门控与回退纪律见 ../perf-gate/SKILL.md「门控纪律」)。

判据不达标 → 排障入口

三级里任何一级不达标(md5 变了、差异远超数值门、结果"看着不对"但无报错、无 NaN、 md5 稳定),不要靠调精度或加断言硬压结论,转排障流程:

  • 入口:references/silent-failure-localization.md —— 真值参照 → 指标量化 → 逐层打点找 首个分叉 → 算子隔离 → 规模阈值扫描 → 陈旧内存 vs 数值漂移判定 → 三种规避与三层回归。
  • 重写错误的形态学(先怀疑索引/相位/顺序,再怀疑数值):分组是否按正确维度、步长与空洞是否 对应、padding 落点是否一致、通道顺序是否被重排、累积顺序是否改变、相位接线约定是否统一。 误差很大时不要去调精度。
  • 对象特有的判定实验见各技能的 troubleshooting-{对象}.md;本标准只留一处通用流程。

门控、回退与否决记录

  • 新实现一律 env-gated:默认关(保证默认路径逐位不变),采纳后默认开,并留一行回退; 改动前备份原文件并记录 md5。
  • 记录否决:每条否决写成"判据 + 实测数字 + 结论",而不是"试过不行"。常见形态:
    • 换写法 ≠ 换实现:改写后落到同一个 kernel、同速(先确认 kernel 真的变了);
    • 产物字节变了:md5 改变且收益落在噪声内 → 判非无损,回退;
    • "极小"仍不是逐位:差异 ~1e-6 量级也判非无损;
    • 链过长:多段融合的中间态越多越难保逐位,先缩短链;
    • 减少调用数 ≠ 减少时间:看设备侧总账(换了小算子可能引入更多大算子);
    • 等价 ≠ 可用:把峰值显存/交换量算进来(等价但 OOM 仍是否决)。

反模式

  • 用"平均误差很小/看起来一样"当逐位等价(必须 torch.equal 或明确阈值);
  • 只在一个形状上验证就宣布无损(等价性常随形状变化);
  • 跳过①直接看端到端产物(非确定性来源会被误读成"允许的差异");
  • 改完不回做端到端 md5(中间层对了、整链仍可能因别的路径变化而变);
  • 断言只在验收期临时补(实现里没有 ⇒ 回归时无人再跑);
  • 用跨窗口数字宣称收益,或把有损档的"质量通过"当成"无损"(层级混用)。

参考文件与加载时机

何时读读哪个
动手写替换/改动实现、要断言模板与控制成本references/bit-exact-harness.md + scripts/bit_exact_harness.py
判据不达标、结果"看着不对"、要定位静默错误references/silent-failure-localization.md(排障入口;配套 scripts/layer_bisect.py / scripts/op_threshold_sweep.py)
走第三级质量门(有损档验收、视觉门写法、off-identity、阈值校准)references/quality-gate.md
无视觉输入仍要判"能不能用"、载重件的 off-identity、要用产物级 A/B 收口纯数值研究references/content-health-gate.md(机读内容健康度门:四量口径 + 「距参考远≠塌陷」+ 载重件对照取法)
需要"什么算等价、什么算必被否决"的判据摘要references/equivalence-criteria.md
要出收益数字、写进总览表不在本技能:../perf-gate/SKILL.md(性能验收标准)

保真口径必须先定:先建"忠实参考",再比数值与性能

规则:比较"优化档 vs 交付档"之前,先确认两档在"是否忠实应用了模型的功能组件(适配器/LoRA、 插件钩子、可选分支)"上同源。

事故形态:曾有一个性能门控把 MLP 的 fc1()/fc2() 快路径旁路掉了,于是适配器的 delta 有一半被静默丢弃(权重已绑定、不报错)。后果:任何"本档 vs 交付档"的对比都是不同源的对比,且 质量门会把"算法差异"当噪声:

比较逐帧 RGB PSNR判定
优化档 vs 忠实参考(应用全部 delta)落在已标定下限之上✅ 过门
优化档 vs 交付档(丢 delta)低于已标定下限❌ 低于种子下限 ⇒ 不同源

(逐帧 PSNR 读数与种子下限见会话产物归档 {run_results_dir}/archive/。)

做法:

  1. 先建立忠实参考(把该应用的都应用上:适配器、钩子、可选分支),把它当作数值与性能的基准;
  2. 与非忠实配置的对比只能作为"代价/收益"的旁证,并且必须显式标注"非同一计算";
  3. 门控旁路类改动,必须在组件启用(有适配器、有插件)的条件下复测旧的"逐字节一致"结论。

维护与更新

  • 复核方法:每次改动本标准或引用文件后,用 evals/evals.json 的三类探针自检—— ①等价分层与实现期断言是否仍被强调;②"差异极小仍非逐位"是否仍判不合格; ③「未使用有损特性 ⇒ 强制一致性验收 + 重写错误先查索引/相位/顺序」是否仍能命中。
  • 失效信号(出现任一即需重测/重写结论):硬件 / 驱动 / CANN / 框架版本变化(同一重写可能落到 不同 kernel,收益与精度都变);形状 / 分辨率 / 时长 / 分块参数变化(等价性可能是形状的函数); dtype 下转(层级从 L1 掉到 L2);权重或预处理约定变化;并行拓扑 / 卡数变化(状态边界与交换量变)。
  • 同源联动:第三级质量门的工具与判定标准在仓库 evals/(契约 evals/README.md、 伪影标准 evals/rubrics/visual-artifact-gate.md、定量工具 evals/scripts/quality_compare.py); evals/ 变更时同步 references/quality-gate.md。排障流程被 vae-opt / vae-opt 等技能单向引用,改其章节编号时要同步引用方。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

NPU 图批量下发能力(aclgraph / aclgraph_ex 家族)的开发与调优。覆盖 mindiesd 的 aclgraph_backend:NPUGraph 静态 capture、全局 graph pool、 lazy capture、专用 copy stream + event 管线、shape/dtype 校验、max_entries 驱逐。 当用户需要减少 host launch 开销、静态 shape 大 batch 场景加速、 或排查 NPUGraph replay 输入不匹配问题时使用此 skill。 即使用户只提"批量下发""graph capture""图捕获"而未说 aclgraph,也应触发; pattern/Inductor 融合(default 后端)见 pattern-dev,算子本体见 operator-dev, 本技能只覆盖图批量下发。由 dev-workflow 的编译开发阶段与 model-auto-optimization 的 图下发场景指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD 核心算子(FA/BSA/GMM/MM)性能基准工具链。使用:模型优化(model-auto-optimization 的 S1/S4 选型)中用 mindie_bench 对单算子做实现级实测,按 dtype/量化档/稀疏度/形态对比 选出最优配置(产物:选型证据;稀疏度-性能曲线供 S4 稀疏度选型);开发:benchmarks/ 工具链扩展与新算子接入测试(供 operator-dev / pattern-dev 调用)。 当用户需要对比算子实现选型、新增或修改 benchmark 代码、排查 benchmark 数据异常、 给基准加算子/指标时使用;即使用户只说"benchmark 数据不对""给基准加个算子" "对比下这几个 FA 实现哪个快"也应触发;特性级方案选档请走 dit-perf-opt (本 skill 只做实现级实测)。 由 model-auto-optimization 的 S1/S4 选型场景与 operator-dev 的算子接入验证场景调用, 亦由 dev-workflow 在基准开发时指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD Python 代码格式与 lint 规则。当编写、格式化、lint 检查或审查 MindIE-SD 项目的 Python 代码时使用此 skill。 即使用户只提到"提个MR"或"代码好像有 lint 问题"而未明确说格式化,也应触发;Markdown 格式问题见 markdown-lint,提交/PR 规范见 mindie-sd-community-governance。 通常由 dev-workflow 在编码阶段指引加载。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

MindIE-SD 仓库开发总入口(侧轨)。当用户进行 MindIE-SD 的任何代码开发工作时使用此 skill—— 包括但不限于写 pattern、改测试、部署到昇腾、跑 benchmark、性能分析、多卡并行、复盘归档。 模型/三方框架自动优化类任务(非本仓代码改动)由 model-auto-optimization 入口承接, 本入口只在优化流程需要新增 pattern/算子/部署代码时承接其指向的开发子任务。 即使用户未明确提到"开发流程",只要涉及 MindIE-SD 代码改动都应触发。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

分布式并行策略选型与实测(USP / CP 通信掩盖 / CFG / TP/RSP/PP 概览;含拓扑相关选型 (按实测拓扑分域条件化:域内 bulk vs 跨域 head-parallel 翻转)与 AlltoAllV 缺陷绕过)。在 model-auto-optimization 中承担 S3:优先 USP、结合拓扑带宽差异选 CP,少量 step + 多 rank 验证特性开启与掩盖(产物:并行方案 + 多 rank 证据)。当用户需要多卡并行 策略选择、**序列并行形态抉择**(纯 Ulysses vs 复合 AllGather-KV×Ulysses:按 GQA / 跨域带宽 / 形态 plumbing 条件化定胜负)、**并行 × 稀疏叠加**(seam 契约:先汇聚后稀疏、 窗口偏移、块对齐、per-head 掩码;含「稀疏看似生效实则未生效」判定)、通信掩盖调优 (含**掩盖率上限**:1-1/n 何时成立、c/f 决定的真实上限、没生效的排查)、**并行方案 差异归因**(阶段 Δ 分解 / 集合通信按 communicator 归属 / 4→8 卡线性度),或排查多卡 跑不动 / 通信暴露大 / 换卡组 / 端口 bind / HCCL 带宽验证问题时使用;**并收编原并行作用域诊断**: 改了 SP/CP/Ulysses/AllGather-KV 后**不报错但结果没变/性能没变**、或小规模能跑大规模崩 (如 Ascend EE1003 coreDim 超限)时,用本技能证明"改动到底有没有生效"(判别量逐层收窄 + 两侧对照 + 日志≠生效,见 `references/scope-effectiveness-check.md`); 即使用户只说 "多卡跑不动""通信暴露大""为什么没达到 6/7 的掩盖率""CP 和 USP 该选哪个""CP 叠稀疏 怎么不生效"而未说并行,也应触发。特性档位/接口事实见 `docs/zh/features/parallelism.md` /`usp.md`(仓内真源),框架侧开启见 framework-integration; 本技能承载选型决策、monkey-patch 掩盖与多卡诊断实测。 由 dev-workflow 多卡场景触发,亦由 model-auto-optimization 的 S3 阶段触发。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

DiT 计算模块(L3):把**已定位的 DiT 计算瓶颈**落成特性级选档与实施—— 量化档(W8A16 / W4A16 / W8A8 系列 / W4A4 / MXFP8 / FA 量化)、稀疏(rf_v2 / ada_bsa)、 缓存(DiTCache / AttentionCache / 时间步优化)、编译启用(MindieSDBackend / Pattern 融合 / ACLGraph) 的**开不开、开哪一档、怎么开、怎么复验**;依据是 `docs/zh/features/*`(特性真源)+ framework-integration/references/framework-support-matrix.md(支持状态)。 即使用户只说"这个模型怎么加速""量化/稀疏/Cache 怎么选怎么开""要不要开量化、开哪一档""这个档位开了有没有效果" 而未提 profiling,也应触发。 **入口条件**:瓶颈点已明确(用户带一句实测锚点,或编排层交付标签)时由域入口 `performance-optimization` 按标签分发到本技能;**瓶颈未明("怎么加速 / 跑通 / 采 profile")先走 `model-auto-optimization` 定位**,不在本技能内做占比分析。 near-miss:多卡并行形态 / 通信掩盖 / TP·offload 选型 → `dit-parallel-opt`;VAE 解码段与 host 固定开销 → 各自模块(VAE / host);单算子实现级实测选型(mindie_bench)→ `benchmark-dev`; 需要新增 pattern / 算子才能落地本档 → `pattern-dev` / `operator-dev`;框架侧开关与使能验证 → `framework-integration`;量化器位级契约与精度对齐(编码公式 / 舍入 / scale 粒度)→ `quantization-dev`;精度验收判据 → `accuracy-gate`;数字入库口径 → `perf-gate`。

The English summary is being prepared. Showing the original description.

Ascend/MindIE-SD15Updated Oct 17, 2026

See all skills by Ascend

Report a problem with this skill