[API Compatibility] nll_loss/bernoulli_/weight_norm/resize_/imag/Flatten/kl_div/GRU/Softmax/L1Loss/avg_pool2d/LogSoftmax/hann_window/det/pinverse/addcdiv_/real/inv/ParameterList/scatter_reduce_/xavier_uniform/ge_/sign_/pinv/take/resize_as_/huber_loss/float/set_default_tensor_type/fmod/pack_padded_sequence/pad_packed_sequence/ctc_loss/nan_to_num/fmod_/fill_diagonal_/assert_allclose/absolute/randint_like Edit By AI Agent#79312
[API Compatibility] nll_loss/bernoulli_/weight_norm/resize_/imag/Flatten/kl_div/GRU/Softmax/L1Loss/avg_pool2d/LogSoftmax/hann_window/det/pinverse/addcdiv_/real/inv/ParameterList/scatter_reduce_/xavier_uniform/ge_/sign_/pinv/take/resize_as_/huber_loss/float/set_default_tensor_type/fmod/pack_padded_sequence/pad_packed_sequence/ctc_loss/nan_to_num/fmod_/fill_diagonal_/assert_allclose/absolute/randint_like Edit By AI Agent#79312zhwesky20 wants to merge 2 commits into
Conversation
6a2b673 to
ef836e5
Compare
CI报告基于以下代码生成(30分钟更新一次): 1 Required任务 : 30/46 通过
2 失败详情🔴 Static-Check / Test — PR问题(置信度: 高)错误类型: PR问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 🔴 Windows-GPU / Build and test — PR问题(置信度: 高)错误类型: PR问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 🔴 Mac-CPU / Build and test — PR问题(置信度: 高)错误类型: PR问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 🔴 Coverage clone / Clone Paddle — 环境问题(置信度: 高)错误类型: 环境问题 | 置信度: 高
关键日志:
修复建议:
关联变更: 无,失败早于 PR 代码测试 🔴 Check approval — 需要 Approval(置信度: 高)错误类型: 需要 Approval | 置信度: 高
关键日志:
修复建议:
关联变更: 无 🔴 Linux-CPU / Build and test — 未知(置信度: 低)错误类型: 未知 | 置信度: 低
关键日志:
修复建议:
关联变更: 未分析 🔴 Windows-Inference / Build and test — 未知(置信度: 低)错误类型: 未知 | 置信度: 低
关键日志:
修复建议:
关联变更: 未分析 🔴 Windows-OPENBLAS / Build and test — 未知(置信度: 低)错误类型: 未知 | 置信度: 低
关键日志:
修复建议:
关联变更: 未分析 |
7ad2b9c to
4e1e6e9
Compare
fde6d61 to
20f8c4d
Compare
29187e7 to
6eeb8a8
Compare
…ten/kl_div/GRU/Softmax/L1Loss/avg_pool2d/LogSoftmax/hann_window/det/pinverse/addcdiv_/real/inv/ParameterList/scatter_reduce_/xavier_uniform/ge_/sign_/pinv/take/resize_as_/huber_loss/float/set_default_tensor_type/fmod/pack_padded_sequence/pad_packed_sequence/ctc_loss/nan_to_num/fmod_/fill_diagonal_/assert_allclose/absolute/randint_like Edit By AI Agent Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PaddlePaddle-bot
left a comment
There was a problem hiding this comment.
🤖 Paddle-CI-Agent | pr_review |
2026-06-22 11:51:52
📋 Review 摘要
PR 概述:为一批 PyTorch 兼容 API 增加别名、签名适配、导出和测试。
变更范围:Python 顶层/Tensor/nn API 导出、YAML API 映射、RNN utils、legacy compatibility tests。
影响面 Tag:[User Experience] [Operator Mechanism]
问题
| 级别 | 文件 | 概述 |
|---|---|---|
| 🔴 Bug | python/paddle/__init__.py:449 |
torch.det 兼容没有绑定 paddle.det 顶层入口 |
| 🔴 Bug | test/legacy_test/test_api_compatibility_part5.py:1208 |
paddle.linalg.inv(A=...) / paddle.inverse(A=...) 新增测试没有对应 alias 实现 |
| 🔴 Bug | paddle/phi/ops/yaml/python_api_info.yaml:2 |
absolute 只写入 YAML,未在 Python 顶层/Tensor 模块绑定 |
历史 Findings 修复情况
| Finding | 问题 | 状态 |
|---|---|---|
| F1 | PackedSequence.to(dtype=...) 会转换索引元数据 |
|
| F3 | pinv(A=...) 第三个别名不会生效 |
|
| F4 | paddle.fmod 仍 alias 到 remainder |
|
| F5 | fmod_ 仍复用 remainder_ |
|
| F6 | pack_padded_sequence(enforce_sorted=True) 未校验降序 |
|
| F7 | pinv 静态图仍忽略 atol/rtol/out |
|
| F16 | assert_allclose 未加入 __all__ |
|
| F17 | pack_padded_sequence 仍会截断超过输入时间维的 lengths |
|
| F19 | paddle.nn.utils 顶层导出仍缺 pad_sequence / unpad_sequence 等 |
|
| F20 | 顶层 real / imag 仍未导入 |
|
| F21 | _assert 仍未在 paddle.testing.__all__ 中导出 |
|
| F23 | Tensor.imag 仍是普通方法生成路径,不是属性语义 |
📝 PR 规范检查
标题 Tag 不在当前仓库模板枚举中。描述结构包含必填 section,精度变化字段已填写为“否”。
标题建议(可直接复制):
[User Experience] Add PyTorch-compatible aliases for Paddle APIs
总体评价
本轮按风险优先检查了公开 API 绑定、YAML API 映射、RNN packed sequence 和新增兼容测试,未全量覆盖其余机械别名。当前仍有多个声明的兼容入口只改了测试或 YAML,没有完成 Python 可见 API 绑定,建议修复后再继续推进。
| mv, | ||
| norm, | ||
| permute, | ||
| pinv, |
There was a problem hiding this comment.
🔴 Bug PR 声明覆盖 torch.det,但这里只新增了 pinv,没有把 det 从 paddle.tensor.linalg 导入到顶层。
当前 det 只在 paddle.linalg.det / paddle.tensor.det 路径可见,paddle.det 不会被绑定,和 torch.det 的顶层入口不兼容;__all__ 里也没有 det。
建议修复方式:在这个 import list 中同时导入 det,把 'det' 加入顶层 __all__,并补充 paddle.det(x) 的兼容测试。
| out2 = paddle.linalg.inv(x=x) | ||
|
|
||
| # 3. PyTorch keyword arguments (A alias) | ||
| out3 = paddle.linalg.inv(A=x) |
There was a problem hiding this comment.
🔴 Bug 这个 A= 调用没有对应实现。
paddle.linalg.inv 当前仍是 python/paddle/linalg.py 中的 from .tensor import inverse as inv,而 inverse 来自 _C_ops 直导;本 PR 没有给它加 A -> x alias wrapper,所以 paddle.linalg.inv(A=x) 以及下面的 paddle.inverse(A=x) 会在参数绑定阶段失败。
建议修复方式:为 inv / inverse 增加实际的 Python wrapper 或 codegen alias(例如 @param_one_alias(["x", "A"])),并在 wrapper 中保留 out 处理后再保留这些测试。
| @@ -1,10 +1,10 @@ | |||
| - op : abs | |||
| name : [paddle.abs, paddle.Tensor.abs] | |||
| name : [paddle.abs, paddle.Tensor.abs, paddle.absolute, paddle.Tensor.absolute] | |||
There was a problem hiding this comment.
🔴 Bug 这里只把 paddle.absolute / paddle.Tensor.absolute 写进 YAML,但当前 Python 包没有绑定这些名字。
python/paddle/__init__.py 仍只导入 abs / abs_,python/paddle/tensor/__init__.py 和 tensor/math.py 也没有 absolute / absolute_ 变量;新增测试里的 paddle.absolute(x) 会直接找不到入口。
建议修复方式:在 Python 侧补齐 absolute = abs、absolute_ = abs_ 的顶层和 paddle.tensor 导出,并加入对应 __all__;确认 Tensor method 也被生成或显式 alias 后再保留这些兼容测试。
PR Category
User Experience
PR Types
Improvements
Description
API Compatibility Edit By AI Agent:
torch.nn.functional.nll_losstorch.Tensor.bernoulli_torch.nn.utils.weight_normtorch.Tensor.resize_torch.Tensor.imagtorch.nn.Flattentorch.nn.functional.kl_divtorch.nn.GRUtorch.nn.Softmaxtorch.nn.L1Losstorch.nn.functional.avg_pool2dtorch.nn.LogSoftmaxtorch.hann_windowtorch.dettorch.pinversetorch.Tensor.addcdiv_torch.Tensor.realtorch.linalg.invtorch.nn.ParameterListtorch.Tensor.scatter_reduce_torch.nn.init.xavier_uniformtorch.Tensor.ge_torch.Tensor.sign_torch.linalg.pinvtorch.Tensor.taketorch.Tensor.resize_as_torch.nn.functional.huber_losstorch.floattorch.set_default_tensor_typetorch.Tensor.fmodtorch.nn.utils.rnn.pack_padded_sequencetorch.nn.utils.rnn.pad_packed_sequencetorch.nn.functional.ctc_losstorch.nan_to_numtorch.Tensor.fmod_torch.Tensor.fill_diagonal_torch.testing.assert_allclosetorch.Tensor.absolutetorch.randint_like是否引起精度变化
否