Skip to content

[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

Open
zhwesky20 wants to merge 2 commits into
PaddlePaddle:developfrom
zhwesky20:claude

Conversation

@zhwesky20

@zhwesky20 zhwesky20 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

PR Category

User Experience

PR Types

Improvements

Description

API Compatibility Edit By AI Agent:

  • torch.nn.functional.nll_loss
  • torch.Tensor.bernoulli_
  • torch.nn.utils.weight_norm
  • torch.Tensor.resize_
  • torch.Tensor.imag
  • torch.nn.Flatten
  • torch.nn.functional.kl_div
  • torch.nn.GRU
  • torch.nn.Softmax
  • torch.nn.L1Loss
  • torch.nn.functional.avg_pool2d
  • torch.nn.LogSoftmax
  • torch.hann_window
  • torch.det
  • torch.pinverse
  • torch.Tensor.addcdiv_
  • torch.Tensor.real
  • torch.linalg.inv
  • torch.nn.ParameterList
  • torch.Tensor.scatter_reduce_
  • torch.nn.init.xavier_uniform
  • torch.Tensor.ge_
  • torch.Tensor.sign_
  • torch.linalg.pinv
  • torch.Tensor.take
  • torch.Tensor.resize_as_
  • torch.nn.functional.huber_loss
  • torch.float
  • torch.set_default_tensor_type
  • torch.Tensor.fmod
  • torch.nn.utils.rnn.pack_padded_sequence
  • torch.nn.utils.rnn.pad_packed_sequence
  • torch.nn.functional.ctc_loss
  • torch.nan_to_num
  • torch.Tensor.fmod_
  • torch.Tensor.fill_diagonal_
  • torch.testing.assert_allclose
  • torch.Tensor.absolute
  • torch.randint_like

是否引起精度变化

@zhwesky20 zhwesky20 changed the title [API Compatibility] det/pinverse/addcdiv/addcdiv_/imag/real/scatter_reduce_/sign_/LogSoftmax/Flatten/kl_div/nll_loss/pack_padded_sequence/pad_packed_sequence/weight_norm/inv/pinv/bernoulli_/fmod/fmod_ Edit By AI Agent [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 Jun 12, 2026
@zhwesky20 zhwesky20 force-pushed the claude branch 2 times, most recently from 6a2b673 to ef836e5 Compare June 12, 2026 15:31
PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

@paddle-bot paddle-bot Bot added the contributor External developers label Jun 12, 2026
@PaddlePaddle-bot

PaddlePaddle-bot commented Jun 14, 2026

Copy link
Copy Markdown

🤖 Paddle-CI-Agent | ci_status_monitor | 2026-06-22 13:19:45 UTC+08:00

CI报告基于以下代码生成(30分钟更新一次):
PR commit: e3578c3 | Merge base: 406c7af (branch: develop)


1 Required任务 : 30/46 通过

总执行(rerun次数) 总任务 ✅ 通过 ❌ 失败 ⏳ 运行中 ⏸️ 等待中 跳过
87(9) 78 60 8 3 0 7
任务 错误类型 置信度 日志
Static-Check / Test PR问题:API 示例/导出不一致 Job
Windows-GPU / Build and test PR问题:inv(A=) 别名丢输入 Job
Mac-CPU / Build and test PR问题:inv(A=) 别名丢输入 Job
Coverage clone / Clone Paddle 环境问题:openvino 子模块锁冲突 Job
Check approval 需要 Approval Job
Linux-CPU / Build and test 未知:Test 步骤 exit code 102 Job
Windows-Inference / Build and test 未知:分析省略/待后续深挖 Job
Windows-OPENBLAS / Build and test 未知:分析省略/待后续深挖 Job

2 失败详情

🔴 Static-Check / Test — PR问题(置信度: 高)

错误类型: PR问题 | 置信度: 高
分析器: 通用分析(fallback)
失败用例: API 示例类型检查和 doctest

用例 错误摘要
paddle.nn.utils.rnn.pad_sequence, unpad_sequence 示例调用 paddle.nn.utils.pad_sequence/unpad_sequence,但 python/paddle/nn/utils/__init__.py 未导出这些符号
resize_as_, pack_padded_sequence, pad_packed_sequence 示例期望 print(shape) 输出 [4, 5] / [10, 10],实际输出 paddle.Size(...)

关键日志:

TYPE CHECKING FAILED in paddle.nn.utils.rnn.unpad_sequence: Module has no attribute "pad_sequence"
TYPE CHECKING FAILED in paddle.nn.utils.rnn.pad_sequence: Module has no attribute "pad_sequence"
Expected: [4, 5]
Got: paddle.Size([4, 5])
Expected: [10, 10]
Got: paddle.Size([10, 10])
  • 根因摘要: PR 新增/修改的 API 文档示例与真实导出和 shape 表示不一致。
    python/paddle/nn/utils/rnn.py:404:474 的示例使用 paddle.nn.utils.*,但 python/paddle/nn/utils/__init__.py:15-34 只导出 rnn 模块和若干 norm 工具。python/paddle/tensor/manipulation.py:5851python/paddle/nn/utils/rnn.py:214:298 的 doctest 仍按 list 期望输出。

修复建议:

  1. 将 rnn 示例改成 from paddle.nn.utils.rnn import pad_sequence, unpad_sequence 后直接调用,或在 python/paddle/nn/utils/__init__.py 正式导出这些 API。
  2. 将相关 doctest 期望值同步为 paddle.Size([...]),或改用 print(list(x.shape)) 保持期望为 list。

关联变更: python/paddle/nn/utils/rnn.pypython/paddle/tensor/manipulation.pypython/paddle/nn/utils/__init__.py

🔴 Windows-GPU / Build and test — PR问题(置信度: 高)

错误类型: PR问题 | 置信度: 高
分析器: 通用分析(fallback)
失败用例: test_api_compatibility_part5.TestLinalgInvAPI

用例 错误摘要
test_dygraph_Compatibility, test_static_Compatibility paddle.linalg.inv(A=x) 调到 generated _inverse 时输入变成 None

关键日志:

ERROR: test_dygraph_Compatibility (test_api_compatibility_part5.TestLinalgInvAPI)
line 1208: out3 = paddle.linalg.inv(A=x)
InvalidArgumentError: inverse(): argument 'x' (position 0) must be Tensor, but got None
ERROR: test_static_Compatibility (test_api_compatibility_part5.TestLinalgInvAPI)
line 1242: out3 = paddle.linalg.inv(A=x)
InvalidArgumentError: inverse(): argument (position 1) must be Value, but got None
FAILED (errors=2)
  • 根因摘要: PR 新增的 A alias 未作用到 generated inverse API。
    paddle/phi/ops/yaml/python_api_info.yaml:470-473paddle.inversepaddle.Tensor.inversepaddle.linalg.inv 映射到 inverse 并启用默认参数映射,但新增测试 test/legacy_test/test_api_compatibility_part5.py:1208:1242 传入 A=x 后底层仍收到 None。

修复建议:

  1. 在 generated API 的参数映射里补齐 A -> x,或为 paddle.linalg.inv 提供显式 Python wrapper 并应用 param_one_alias(["x", "A"])
  2. 保留当前测试,确保动态图和静态/PIR 路径都覆盖 paddle.linalg.inv(A=x)

关联变更: paddle/phi/ops/yaml/python_api_info.yamltest/legacy_test/test_api_compatibility_part5.py

🔴 Mac-CPU / Build and test — PR问题(置信度: 高)

错误类型: PR问题 | 置信度: 高
分析器: 通用分析(fallback)
失败用例: test_api_compatibility_part5.TestLinalgInvAPI

用例 错误摘要
test_static_Compatibility paddle.linalg.inv(A=x) 在静态/PIR 路径调用 _inverse 时输入为 None

关键日志:

The following tests FAILED:
847 - test_api_compatibility_part5 (Failed)
ValueError: (InvalidArgument) inverse(): argument (position 1) must be Value, but got None
Ran 75 tests in 0.377s
FAILED (errors=2)
  • 根因摘要: 与 Windows-GPU 同源,A alias 未被 inverse generated API 正确转换为 x
    Mac 日志中 test_api_compatibility_part5 三次重跑仍失败,失败点落在 PR 新增的 linalg inv 兼容测试。该问题与平台环境无关,属于 PR 兼容 API 映射缺陷。

修复建议:

  1. 按 Windows-GPU 中的建议修复 inverseA -> x 映射。
  2. 本地或 CI 复跑 test/legacy_test/test_api_compatibility_part5.py::TestLinalgInvAPI 验证动态图和静态路径。

关联变更: test/legacy_test/test_api_compatibility_part5.pypaddle/phi/ops/yaml/python_api_info.yaml

🔴 Coverage clone / Clone Paddle — 环境问题(置信度: 高)

错误类型: 环境问题 | 置信度: 高
分析器: 通用分析(fallback)
失败用例: checkout/submodule 阶段

用例 错误摘要
actions/checkout submodules: recursive openvino nested submodule checkout 失败,工作区存在 shallow.lock

关键日志:

fatal: Unable to create .../third_party/openvino/.../open_model_zoo/shallow.lock: File exists.
fatal: exec '--super-prefix': cd to 'thirdparty/open_model_zoo' failed: No such file or directory
fatal: run_command returned non-zero status while recursing in the nested submodules of third_party/openvino
The process '/usr/bin/git' failed with exit code 1
  • 根因摘要: Runner 工作区残留的 openvino 子模块 lock/目录状态导致 clone 阶段失败。
    失败发生在 clone 阶段,尚未合入或执行 PR 代码;rerun_count=1 后仍失败,但错误集中在 Git 子模块递归 checkout。

修复建议:

  1. 环境问题,请 rerun;如持续失败,清理该 runner 的 Paddle 工作区和 .git/modules/third_party/openvino 残留锁文件后重试。

关联变更: 无,失败早于 PR 代码测试

🔴 Check approval — 需要 Approval(置信度: 高)

错误类型: 需要 Approval | 置信度: 高
分析器: builtin
失败用例: workflow approval

用例 错误摘要
Approval / Check approval 该 Job 需要人工 Approval,完成审批后 CI 才会继续执行

关键日志:

该 Job 需要人工 Approval,完成审批后 CI 才会继续执行。
  • 根因摘要: Workflow 等待人工审批。

修复建议:

  1. 请通过人工审批。

关联变更: 无

🔴 Linux-CPU / Build and test — 未知(置信度: 低)

错误类型: 未知 | 置信度: 低
分析器: 通用分析(fallback)
失败用例: Test step

用例 错误摘要
Linux-CPU / Test 深度日志只返回 Test 步骤 exit code 102,未展开具体失败用例

关键日志:

-- Generate stub file tensor.pyi ...
-- End Generate stub file tensor.pyi ...
Hint: Your machine support AVX, but the installed paddlepaddle doesn't have avx core.
##[error]Process completed with exit code 102.
  • 根因摘要: 当前工具返回日志不足,无法确认具体 Linux CPU 失败点。
    已确认 Build 步骤成功、Test 步骤失败;摘要未包含失败 test name 或 traceback,因此不能可靠归因到 PR 或环境。

修复建议:

  1. 补充或展开 Linux-CPU Test step 完整失败片段后再定位;优先搜索 exit code 102 前后的 ctest/pytest 失败用例。

关联变更: 未分析

🔴 Windows-Inference / Build and test — 未知(置信度: 低)

错误类型: 未知 | 置信度: 低
分析器: 未执行(分析省略)
失败用例: 未分析

用例 错误摘要
Windows-Inference / Build and test 超出本轮深度分析数量,待后续深挖

关键日志:

日志分析省略(超出失败 Job 量限制)
  • 根因摘要: 分析省略/待后续深挖。

修复建议:

  1. 待前述高置信度 PR 问题修复后 rerun,再根据最新日志继续分析。

关联变更: 未分析

🔴 Windows-OPENBLAS / Build and test — 未知(置信度: 低)

错误类型: 未知 | 置信度: 低
分析器: 未执行(分析省略)
失败用例: 未分析

用例 错误摘要
Windows-OPENBLAS / Build and test 超出本轮深度分析数量,待后续深挖

关键日志:

日志分析省略(超出失败 Job 量限制)
  • 根因摘要: 分析省略/待后续深挖。

修复建议:

  1. 待前述高置信度 PR 问题修复后 rerun,再根据最新日志继续分析。

关联变更: 未分析

@zhwesky2010 zhwesky2010 added API Compatibility and removed contributor External developers labels Jun 14, 2026
@paddle-bot paddle-bot Bot added the contributor External developers label Jun 14, 2026
@zhwesky20 zhwesky20 force-pushed the claude branch 3 times, most recently from 7ad2b9c to 4e1e6e9 Compare June 16, 2026 14:38
PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

@zhwesky20 zhwesky20 force-pushed the claude branch 4 times, most recently from fde6d61 to 20f8c4d Compare June 17, 2026 16:04
PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

@zhwesky20 zhwesky20 force-pushed the claude branch 2 times, most recently from 29187e7 to 6eeb8a8 Compare June 18, 2026 19:47
PaddlePaddle-bot

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

…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

This comment was marked as outdated.

PaddlePaddle-bot

This comment was marked as outdated.

@PaddlePaddle-bot PaddlePaddle-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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 绑定,建议修复后再继续推进。

Comment thread python/paddle/__init__.py
mv,
norm,
permute,
pinv,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Bug PR 声明覆盖 torch.det,但这里只新增了 pinv,没有把 detpaddle.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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 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]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Bug 这里只把 paddle.absolute / paddle.Tensor.absolute 写进 YAML,但当前 Python 包没有绑定这些名字。

python/paddle/__init__.py 仍只导入 abs / abs_python/paddle/tensor/__init__.pytensor/math.py 也没有 absolute / absolute_ 变量;新增测试里的 paddle.absolute(x) 会直接找不到入口。

建议修复方式:在 Python 侧补齐 absolute = absabsolute_ = abs_ 的顶层和 paddle.tensor 导出,并加入对应 __all__;确认 Tensor method 也被生成或显式 alias 后再保留这些兼容测试。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants