-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请教一个cast grad的相关问题 #70530
Comments
paddle/phi/kernels/cpu/cast_grad_kernel.cc
输入参数变成都out_grad,x.dtype(),x_grad,其中x.dtype()和x_grad->dtype()等价。 |
该链接介绍了算子Yaml配置规则:
此时,此时正向和反向都会调用CastKernel。
如果希望正向调用CastKernel,反向调用CastGradKernel,可以做如下改动(改完之后需要重新cmake+ninja):
此时,正向调用CastKernel,反向调用CastGradKernel。
|
按照这里描述的,在需要计算cast的反向的时候,就会“复用已有的算子接口”,调用前向的cast算子。那和我实验的结果是一致的。 |
请提出你的问题 Please ask your question
背景:某个项目需求,我在梳理某硬件设备上能跑的飞桨算子,发现该硬件上面实现了cast算子,但是没有实现cast_grad算子。
可是这个硬件设备能正常跑训练,如果缺算子的话应该跑不起来啊。于是去翻代码,发现CPU和GPU都有这个反向算子的实现,分别位于:
paddle/phi/kernels/gpu/cast_grad_kernel.cu
paddle/phi/kernels/cpu/cast_grad_kernel.cc
然后我又找到有这个东西
paddle/phi/ops/yaml/backward.yaml
其中有一段是这样写的:
从字面意思上看,我直观理解,当遇到cast grad算子的时候,就跑去执行cast的前向算子。
那问题来了:
1、想请教下这个backward.yaml的作用,是不是上面我直观理解的那样。有没有更详细的解释呢(例如,它是如何发挥作用的,这个yaml文件是怎么影响算子构建和计算图执行的)。
2、都有这个backward.yaml了,为啥CPU和GPU上还单独有一个cast grad的kernel呢?
The text was updated successfully, but these errors were encountered: