pytorch反向接口暴露
主目录下CMakeList.txt
嵌套Caffe
目录
Caffe
目录包含aten
, ***等目录
Caffe同时调用Codegen.cmake 执行动态生成代码,生成动态变量
所以aten目录下可以调用动态变量并构建,其自定义变量并层层反传上层.
ATen下指定npu源文件构建
libtorch
构建
自动求导引擎带注册研究思路
分析代码模板:
python__nn__function ;python_torch__function.cpp;
占位符:${py_forwards};${py_methods}
python_variable_methods.cpp
${py_method_defs}
Function.cpp/h
${autograd_function_declarations} ${autograd_function_definitions}
python_function.cpp
${py_function_initializers}
尝试找到需要替换得地方,替换的地方就是需要添加pytorch算子接口的地方(这里找调用地方,进而找到binding的前置判断)
然后发现很多都是用declaration变量来获取值,那就看看declaration东西
vim build/aten/src/ATen/Declarations.yaml
包含算子名字、schme字符串、参数等等,有效信息很多
走读代码找到,torch方法绑定的地方,create_python_binding
前置条件get_py_torch_functions
进而找到是否应该暴露接口的判断区:
进而起飞
反向接口暴露修改法则
修改文件:
-
修改文件
tools/autograd/gen_python_functions.py
这里非常重要!!是暴露接口到python层的重要修改点
这里待研究?之前是搜索到了有bool[3]场景报错,先暂时屏蔽
这里是因为有特别算子,参数比较多,需要手动扩充场景
而且这里一定要记住去wrap-outputs.h去补充函数重要!这里是区分forward和backward,通过什么下发,forward可以用self,backward通过命名空间用aten或at,所以这里得改,保证调用域
这里修改原因同上!这是下发代码模板得参数,backward得保留self参数
-
修改文件
tools/pyi/gen_pyi.py
这里待研究?编译会报错,先直接注释掉屏蔽
-
修改文件
torch/csrc/autograd/utils/wrap_outputs.h
为特殊算子服务
-
实验测试结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?