当前位置: 首页 > news >正文

CANN / cannbot-skills:自定义算子入图


【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

name: torch-custom-ops-guide description: "自定义算子入图完整指南。覆盖从零开发、Eager 算子适配 npugraph_ex 图模式(torch.library.custom_op / torch.library.Library)、Meta 推导函数编写等全流程。适用于两种纯 Python 自定义算子注册场景。关键词:custom_op、torch.library.Library、register_fake、meta、mutates_args。"

自定义算子入图

算子状态确认

若用户未说明算子状态,使用交互式提问工具发起问题:您的算子处于什么状态?

路由:

  • 还没开发,从零开始 → 按 npugraph_ex 代码生成场景生成包含算子注册骨架(参考torch-npugraph-ex-templateskill 中的「自定义算子代码块」)+ 图模式编译调用的完整 MRE,算子实现用# <用户实现>占位。In-place 与 Out-of-place 的区别在custom_op路径上体现在mutates_argsregister_fake返回值,在torch.library.Library路径上体现在 schema 的 alias 标注和 Meta 返回值;函数化转换由 TorchAir 自动完成,无需手动实现
  • 已经能在 Eager 模式下运行,需要适配图模式 → 进入已有 Eager 算子适配流程
  • 已经入图但遇到问题 → 转到问题定位(加载torch-npugraph-ex-dfx-triageskill)

已有 Eager 算子适配图模式

确认算子注册方式

若用户未说明注册方式,使用交互式提问工具发起问题:您的算子是通过哪种方式注册的?

路由:

  • torch.library.custom_op(Python 层,在用户脚本中注册)→register_fake写在用户脚本内(与算子定义同文件)。参考docs/zh/custom_op_graph/op_adapt_torchair.md,以及non_in_place_op_cases.md/in_place_op_cases.md(取决于算子类型)
  • 纯 Pythontorch.library.Library(Python 层,在用户脚本中通过Library(..., "FRAGMENT")+define(...)+@impl(...)注册 schema 和 Eager 实现,再通过Library(..., "IMPL", "Meta")注册 Meta)→ schema、Eager 实现和 Meta 注册都写在用户脚本内;Eager 实现通常使用@impl(mylib, "op_name", "PrivateUse1"),Meta 使用meta_lib = Library("mylib", "IMPL", "Meta")+@impl(meta_lib, "op_name")
  • 不确定 → 引导用户检查:如果算子通过@torch.library.custom_op装饰器定义则为torch.library.custom_op;如果脚本中显式创建Library("<namespace>", "FRAGMENT"),并调用define(...)@impl(..., "PrivateUse1")Library(..., "IMPL", "Meta")则为纯 Pythontorch.library.Library

编写 Meta 推导函数(register_fake/ Meta impl)

agent 行为规则

  1. 请求用户提供算子签名和语义描述(输入/输出 tensor 的 shape、dtype 映射关系)。Meta 函数只关心操作的数学语义,不关心具体计算实现
  2. 若是torch.library.custom_op路径 → 在用户脚本内使用@my_op.register_fake编写 Meta 推导函数
  3. 若是纯 Pythontorch.library.Library路径 → 在用户脚本内使用meta_lib = Library("<namespace>", "IMPL", "Meta")+@impl(meta_lib, "op_name")编写 Meta 推导函数
  4. 若用户能提供算子签名和语义 → 帮助编写完整 Meta 骨架,遵循对应 template skill 中的「自定义算子代码块」格式
  5. 若用户无法提供 → 给出骨架代码,用# TODO: 根据算子语义推导输出 shape/dtype标注需用户填充的部分

关键点:Meta 推导函数只做 shape/dtype/device 推导,不执行实际计算。写 Meta 函数只需理解操作的数学语义和 input→output 的映射关系。In-place 算子返回None,Out-of-place 算子返回与输出同 shape/dtype 的空 tensor。

后续步骤

完成 Meta 推导函数后,即可支持 npugraph_ex 入图,无需额外步骤

下一步:加载torch-npugraph-ex-knowledgeskill,继续处理编译调用、调试定位或性能优化。


纯 Pythontorch.library.Library写法对照

用途:为不使用@torch.library.custom_op的用户提供一份对照表,帮助他们在同一脚本内完成 schema、Eager 实现和 Meta 注册。

阶段常见写法说明
Schema 定义mylib = Library("mylib", "FRAGMENT")+mylib.define("my_op(Tensor x) -> Tensor")定义算子 schema,In-place 算子需在 schema 中显式标注 alias,如Tensor(a!)
Eager 实现@impl(mylib, "my_op", "PrivateUse1")为 NPU 后端注册实际执行逻辑
Meta 注册meta_lib = Library("mylib", "IMPL", "Meta")+@impl(meta_lib, "my_op")注册 Meta 推导函数,用于torch.compile入图

agent 使用流程:收到纯 Pythontorch.library.Library算子需求 → 先确认 schema 和算子语义 → 再按define(...)@impl(..., "PrivateUse1")@impl(..., "Meta")三步生成对应骨架。

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/2471157.html

相关文章:

  • elec-ops-prediction性能调优:10个提升电力负荷预测速度的技巧
  • 3分钟免费安装MASA模组中文汉化包:让你的Minecraft创作效率翻倍
  • OmenSuperHub终极指南:三步解锁暗影精灵完整性能的免费开源方案
  • 终极指南:5个实战场景深度解析ViGEmBus虚拟游戏手柄驱动
  • 硬件研发必备:钡特电源 WF10-12S15S 与金升阳 WRF1215S-10WR2 应用适配广泛
  • 告别环境冲突!在WSL2 Ubuntu 22.04上为ISCE2搭建专属Conda环境(含CUDA 12.3加速配置)
  • CANN/asc-devkit:Ascend C断言调试接口
  • CANN Ascend C数据转换临时空间API
  • Android Binder进程间通信机制:原理、应用与优化实践
  • 昇腾C FMA临时缓冲区因子大小接口
  • RTL8812AU无线网卡驱动:Linux用户必须掌握的5个关键技巧
  • WindowResizer:打破Windows窗口尺寸限制的专业工具,让每个应用都适配你的工作流
  • 实用汽车CAN总线解码:opendbc项目如何高效解决汽车数据解析难题
  • Arch-Hyprland架构深度解析:现代Linux桌面环境的创新实践
  • 如何用MangaOCR免费解锁日语漫画阅读:终极指南
  • 5大实战技巧:快速掌握猫抓浏览器资源嗅探终极指南
  • 华为上线 Oracle EBS 完整时间线(严谨考证版)
  • 谷歌与三星智能眼镜秋季将发布,多种款式功能亮眼,能否超越 Meta 雷朋系列?
  • ComfyUI-Impact-Pack V8:终极AI图像增强与语义分割完整指南
  • 新手开发者首次在Taotoken模型广场选型与试用的全过程记录
  • 2025 FunASR技术峰会:探索语音AI前沿的终极指南
  • 喜马拉雅音频下载终极指南:零基础掌握Qt5跨平台下载器
  • 从CARIS 9到11.4:老用户快速上手指南,重点看Georeference Bathymetry这个新核心
  • CANN/asc-devkit SIMD API UnPack函数
  • 终极Windows窗口管理神器workspacer:告别混乱桌面的10个高效技巧
  • Speakeasy深度解析:从零开始构建Windows内核模式仿真环境
  • AI写专著超强指南:选对AI专著写作工具,3天完成20万字专著!
  • 嵌入式Bootloader安全机制:从数字签名到安全启动的实战设计
  • 2026年5月最新乌鸫科技面经:低代码主子表、RBAC、统一支付接口设计都问到了
  • VSCode里Code Runner跑Python总报9009?别慌,检查一下你的setting.json文件