[API Compatibility No.6] Add parameter alias support for bitwise_xor_ -part
PR Category
Environment Adaptation
PR Types
Improvements
Description
为 paddle.Tensor.bitwise_xor_ 添加参数别名支持,实现与 PyTorch API 的完全兼容。
修改内容
- 在
python/paddle/tensor/logic.py中为bitwise_xor_函数添加@ParamAliasDecorator - 支持参数别名:
input作为x的别名other作为y的别名
- 在
test/legacy_test/test_inplace.py中添加参数别名测试用例
实现方案
- 采用装饰器方案,与
bitwise_or_保持一致 - 完全向后兼容
测试验证
- 添加了 2 个新测试类验证参数别名功能:
TestDygraphInplacBitwiseXorAlias1: 测试other参数TestDygraphInplaceBitwiseXorAlias2: 测试input和other参数
- 所有现有测试保持向后兼容
兼容性效果
修改前 (不兼容):
# PyTorch 风格调用会报错
x.bitwise_xor_(other=y) # 参数错误
修改后 (完全兼容):
# 以下所有方式均支持
x.bitwise_xor_(y) # 原始方式
x.bitwise_xor_(other=y) # PyTorch 风格
paddle.bitwise_xor_(input=x, other=y) # 完整别名
你的PR提交成功,感谢你对开源项目的贡献! 请关注后续CI自动化测试结果,详情请参考Paddle-CI手册。 Your PR has been submitted. Thanks for your contribution! Please wait for the result of CI firstly. See Paddle CI Manual for details.
/re-run all-failed
/re-run all-failed
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:warning: Please upload report for BASE (develop@4df7c64). Learn more about missing BASE report.
Additional details and impacted files
@@ Coverage Diff @@
## develop #76341 +/- ##
===========================================
Coverage ? 100.00%
===========================================
Files ? 2
Lines ? 3
Branches ? 0
===========================================
Hits ? 3
Misses ? 0
Partials ? 0
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
@luotao1 @zhwesky2010
Hi, 我注意到有两个 CI 失败:
CI / Distribute-stable-formers / formers-TestCI-Build / Slice / Slice test
经过分析,这两个失败应该与本 PR 的改动无关,原因如下:
-
本 PR 仅修改了
bitwise_xor_API 的参数别名支持,不涉及:- 分布式训练相关功能
- 张量切片相关功能
- 任何模型训练逻辑
-
改动范围极小且独立:只在
logic.py添加了装饰器,以及对应的单元测试 -
从其他类似的 API 兼容性 PR(如
bitwise_or_)来看,应该不会影响这些无关的测试
CI / Distribute-stable-formers / formers-Test
非required流水线不用管,目前还在调试中
CI-Build / Slice / Slice test
等研发review过后,我会进行豁免
/re-run all-failed
我觉得不能删去 logic.py 中 bitwise_xor 的定义,因为测试代码 test_bitwise_op.py 中
self.python_api = paddle.tensor.logic.bitwise_xor
框架会使用 inspect.getfullargspec() 来获取函数签名信息,如果直接导入会报错
ValueError: no signature found for builtin <built-in function bitwise_xor>
TypeError: unsupported callable
bitwise_xor 需要支持参数别名 (input, other),这要使用 @param_two_alias;要支持 out 参数,这需要 python 层的处理器;要支持静态图模式,这需要调用 _bitwise_op 辅助函数。以上
如果直接从 _C_op 导入,这些功能会无法实现。
最后需要确认一下,API 兼容性增强 No.6 针对的是 bitwise_xor 还是 bitwise_xor_?多谢解答! @luotao1 @zhwesky2010
/re-run all-failed
@Manfredss 以表格中的字符串为准。与表格一一对应就行。
@zhwesky2010 已根据意见完成修改,烦请再 review 一下,谢谢!
我觉得不能删去
logic.py中bitwise_xor的定义,因为测试代码 test_bitwise_op.py 中self.python_api = paddle.tensor.logic.bitwise_xor框架会使用
inspect.getfullargspec()来获取函数签名信息,如果直接导入会报错ValueError: no signature found for builtin <built-in function bitwise_xor> TypeError: unsupported callable
bitwise_xor需要支持参数别名 (input, other),这要使用 @param_two_alias;要支持 out 参数,这需要 python 层的处理器;要支持静态图模式,这需要调用_bitwise_op辅助函数。以上如果直接从 _C_op 导入,这些功能会无法实现。
最后需要确认一下,API 兼容性增强 No.6 针对的是 bitwise_xor 还是 bitwise_xor_?多谢解答! @luotao1 @zhwesky2010
这些都不是问题。除非_C_ops前有很复杂的逻辑,或者组合实现的API,都可以下沉。 直接在logic.py从_C_ops导入bitwise_xor,老静态图模式可以移除,凡是下沉的都没有维护这个分支。 不确定是bitwise_xor还是bitwise_xor_,不如两个都直接改了。
/re-run all-failed