拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PyPTO-Gym 算子分解决策指南:基于 decomposition-primitives 的分类、证据与验证边界

人工智能大模型算子库AI 技能/插件【免费下载链接】pypto-gymPyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库项目地址https://gitcode.com/cann/pypto-gym点击查看免费下载导读在 PyPTO-ProPyPTO-Gym 的算子开发主路径中将一个算子拆分成多个阶段stage是常见的工程动作某个阶段可能需要不同的合法 tile 形状、精度边界、计算引擎或文档化的分发路径。但拆分并非总是正确——错误的拆分可能悄悄改变数学结果、破坏 dtype 契约甚至把本应留在设备内核里的计算搬到宿主侧。本文以 decomposition-primitives.md 为核心系统讲解 PyPTO-Gym 知识库KB中拆分前必须先分类的决策方法四类拆分语义exact / lossy / algorithmic / forbidden如何判定、各自要求何种验证动作以及什么情况下拆分根本不成立。读完本文你将掌握在 PyPTO-Pro 算子拆分前做结构化分类的完整流程并知道如何用 golden、容差、数学推导和源码证据来支撑每一次拆分决策。为什么拆分前必须先分类PyPTO-Pro 的算子实现遵循单内核交付边界见 wrapper-boundary.md宿主侧包装器只能做参数校验、读取元数据、用torch.empty分配输出并启动一个pl.jit内核。任何数据形状或 dtype 处理都必须发生在内核内部。在这种约束下拆分指的是把一个逻辑算子内部划分为多个阶段而不是把工作挪到宿主侧——后者直接违反交付边界属于 forbidden 类别。知识库的 README.md 给出了知识条目的保留门槛技术主张必须引用官方文档/源码路径或保留可审查的验证产物。decomposition-primitives 正是这一原则在拆分决策上的落点在实现任何提议的拆分之前先对拆分进行分类而不是直接动手。这是因为不同类别的拆分对 golden、容差、验证方式的要求完全不同混淆它们会导致验证失真或把错误的语义悄悄引入实现。四类拆分语义与所需动作decomposition-primitives 定义了四类拆分每一类都有明确的含义与必需动作类别含义必需动作exact保真重组保留了数学结果与 dtype 契约保留原有 golden验证阶段边界lossy有损强制转换、量化或近似改变了数值行为在 golden 中建模相同的边界并定义有来源的容差algorithmic算法级用不同的稳定算法实现同一契约保留数学推导并与独立的 golden 比较forbidden禁止宿主计算、静默契约收窄或不支持的语义变更重新设计不要实现这张表的判读要点在于动作列的差异exact 拆分不需要新的 golden数学结果不变但要验证阶段边界——即确认重组确实逐位保持了原结果lossy 拆分必须让 golden 也走同样的有损边界否则 golden 与实现不在同一契约上并且容差必须有来源derive from the project standard for the actual output dtype and algorithm见 precision.md 检查清单第 5 条绝不能从无关样例复制algorithmic 拆分则要求一份数学推导加一个独立 golden用独立实现互相印证。forbidden 类别是硬性红线。其中宿主计算直接对应 wrapper-boundary.md 的规则宿主侧任何设备算子调用.to()、.contiguous()、.reshape()等都可能在评估环境的 CANN 清单上不存在实测出现过aclnnInplaceCopy failed, error code is 561103即使本地能跑也会计入端到端设备耗时。而静默契约收窄则呼应 precision.md 的核心规则——dtype、累加类型、舍入、饱和、缩放、容差都是算子契约的一部分为性能改变其中之一而不更新 golden 与验收标准就是契约收窄。此类拆分必须重新设计而非先实现再补文档。合法拆分的触发条件四个明确理由分类之后还要回答一个前置问题这次拆分到底有没有必要decomposition-primitives 给出了唯一的合法触发条件仅当某个阶段需要不同的合法 tile 形状、精度边界、计算引擎或文档化的分发路径时才进行拆分。不同的合法 tile 形状例如一个阶段需要 N256 的 Right tile另一个阶段受内存或同步约束只能容纳更小的形状关于 tile 形状与内存合法性见 tiling.md 与 memory-layout.md。精度边界例如 FP32 累加与 BF16 中间存储之间的边界或量化前后必须分开的阶段量化语义见 precision.md 检查清单第 4 条scale、舍入、clamp 范围、反量化位置必须在 kernel 与 golden 中同时显式化。计算引擎Cube矩阵乘与 Vector逐元素/归约引擎的切换例如整数 Cube 收缩直接喂给浮点 Vector epilogue见 cv-quant-matmul-direct-epilogue.md。文档化的分发路径文档明确声明的分派分支。反例同样重要一个仅仅增加了一次 GMGlobal Memory往返的拆分没有任何可复用的正当理由。这条判据与知识库的保留门槛一致README.md 第 2 条用途必须超越单次实验/分支/环境/日期可复用。从源码结构看PyPTO-Pro 的跨阶段通信需要显式的 GM workspace 加同步协议见 staged-cube-matmul-gates.md 中关于 workspace 字节数、读写流量、barrier 的记录要求因此为了拆而拆引入的 GM 往返既消耗带宽又引入同步复杂度属于无正当理由的拆分。流式 softmax 拆分的特殊约束online-softmax-tail 的定位decomposition-primitives 还针对一个常见场景给出了专门提醒流式 softmax。文档明确要求把 online-softmax-tail.md 仅当作概念性数学参考使用因为它没有保留完整内核验证参考。这是一个重要的证据边界案例。查看 pattern-index.md 可以看到知识库对模式的两种验证状态validated skeleton页面引用了保留的可运行实现且通过结果覆盖其声称的范围conceptual only只能使用其中的方程与决策规则任何研究代码都当作未经验证的输入不能当作已验证的起点。online-softmax-tail 在 pattern-index 中明确标注为conceptual onlya softmax reduction streams across multiple score chunks。其页面自身也声明知识库没有保留验证完整流式 QK/softmax/PV 管线的可运行 PyPTO-Pro 参考不要把该页当作实现骨架复制必须对照目标 SDK 的官方 flash-attention 示例确认 API 签名与同步方式。已保留的 softmax_impl.py 样例只验证了整行能装进一个 tile的基础情况golden 见 softmax_golden.py。对拆分决策的启示是若你的拆分方案要依据 online-softmax-tail 的递推公式running maximum、denominator、unnormalized output 的更新该递推只能作为数学基础拆分后的阶段边界、同步点、尾块掩码位置都必须重新用官方参考或独立 golden 验证而不能宣称参考了该模式即已验证。这也正是 exact 类拆分要求验证阶段边界的含义——概念页不是验证证据。判定方法在工作流中的落地KB_SELECTION 与 KB_USAGE分类决策最终要落到知识库的可审计工件上。CONTRACT.md 定义了连接知识库与 PyPTO-Pro 阶段工作流的契约contract_version为 3Planner 在 Stage 1 通过前写入KB_SELECTION.json依据计算拓扑与 dtype/shape 属性而非算子名Coder 在 Stage 4 期间向KB_USAGE.json写入实现声明pypto-pro-op-verifier独立验证工件与被引用代码。其中 KB_USAGE.json 记录的是selected reference - derived invariant - implementation location - implementation claim。当你的拆分涉及某个被选中的 reference例如 precision.md 中的精度边界规则或某个 pattern时必须在KB_USAGE.json中登记由此拆分推导出的不变量及其实现位置。Coder 只能声明implemented、deviated或not_applicable不能声明verified——验证结论归 verifier 所有。这意味着若拆分被分类为 exact你需要在KB_USAGE.json中声明阶段边界不变量的实现位置若拆分为 lossy需要声明容差来源与 golden 建模的对应边界若无法实现应声明deviated并给出理由justification而不是静默改变契约——这正对应 forbidden 类重新设计的要求。与精度契约的联动为什么保持同一 golden不总是够的exact 类要求保留原有 golden这隐含一个前提原 golden 本身正确且覆盖了拆分后的每个阶段边界。precision.md 给出了需要同步检查的契约面输入、中间量、累加器、输出 dtype 都要记录数值敏感的归约与超越函数要保持契约要求的累加精度默认 FP32除非窄路径被显式文档化并验证量化场景下 scale、舍入模式、clamp 范围、反量化位置在 kernel 与 golden 中都要显式。一个阶段边界往往就是一个精度边界——例如宽化链widen → compute → reduce要求把vf.astype放在可能溢出的运算之前而不是归约之前否则窄类型早已产生inf见 precision.md 的代码示例。因此在做 exact 分类时保留同一 golden意味着同时确认该 golden 在各阶段边界处的累加/舍入行为与拆分后的实现一致不一致则说明拆分其实引入了未声明的有损行为应重新分类为 lossy 并建模边界。另外值得注意KB 的跨包链接使用 sibling 形式../pypto-pro-op-kb/…与反向../../pypto-pro-op-kb/…因为技能以符号链接安装到cannbot-skills/ops/物理文件系统会解析回同一目录CONTRACT.md 实测 41/41 链接在 checkout 与安装两种布局下都能解析。这意味着你在拆分设计中引用的约束与模式页面无论从哪个技能出发都能稳定解析到知识库根目录下的同一份文件check_kb_integrity.py也会实际遍历这些跨包链接进行完整性检查负例见 tests/test_check_kb_integrity.py。结论拆分决策清单综合 decomposition-primitives 与其关联约束、模式页面一次合规的 PyPTO-Pro 拆分决策应依次回答必要性拆分是否因为阶段需要不同的合法 tile 形状、精度边界、计算引擎或文档化分发路径若只是增加 GM 往返则不成立。分类拆分的语义属于 exact、lossy、algorithmic 还是 forbiddenexact → 保留同一 golden验证阶段边界lossy → golden 建模同一有损边界容差有来源algorithmic → 保留数学推导与独立 golden 比较forbidden宿主计算 / 静默契约收窄 / 不支持的语义变更→ 重新设计不实现。证据若引用模式页如 online-softmax-tail确认其验证状态是validated skeleton还是conceptual onlyconceptual only 页面只提供数学不提供验证。精度联动每个阶段边界是否与精度契约一致——dtype/累加类型/舍入/缩放/容差是否被显式记录并映射到 golden工件落地在KB_USAGE.json中登记由拆分推导的不变量与实现位置由 verifier 独立核验后再放行。这五步全部通过拆分才具备进入实现阶段的条件任何一步存疑都应回到设计阶段而不是带着未验证的拆分推进开发。赞分享人工智能大模型算子库AI 技能/插件【免费下载链接】pypto-gymPyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库项目地址https://gitcode.com/cann/pypto-gym点击查看免费下载相关推荐PyPTO-Gym Spatial-SSRL-3B RoPE 算子PyPTO JIT Kernel 实现、GQA 拆分策略与精度验证PyPTO Gym Spatial SSRL 3B RoPE 算子PyPTO JIT Kernel 实现、GQA 拆分策略与精度验证 本文基于 PyPTO G人工智能大模型算子库AI 技能/插件PyPTO-Gym 中 GutenOCR-3B MRoPE 算子的 PyPTO 等价集成与精度验证PyPTO Gym 中 GutenOCR 3B MRoPE 算子的 PyPTO 等价集成与精度验证 本文以 MRoPE 算子集成说明 https://link.人工智能大模型算子库AI 技能/插件pypto-gym 中基于 PyPTO 的 apply_adam_w_v2 自定义算子AdamW 优化器步骤的 Ascend NPU 内核实现与精度验证pypto gym 中基于 PyPTO 的 apply_adam_w_v2 自定义算子AdamW 优化器步骤的 Ascend NPU 内核实现与精度验证 本篇人工智能大模型算子库AI 技能/插件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门