Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Paddle API Docs
docs/api/paddle @jzhang533 @sunzhongkai588 @mattheliu @Echo-Nie
docs/api/paddle @jzhang533 @sunzhongkai588 @mattheliu @Echo-Nie @zhwesky2010
4 changes: 4 additions & 0 deletions docs/api/paddle/bernoulli__cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ Inplace 版本的 :ref:`cn_api_paddle_bernoulli` API,对输入 x 采用 Inplac
更多关于 inplace 操作的介绍请参考 `3.1.3 原位(Inplace)操作和非原位操作的区别`_ 了解详情。

.. _3.1.3 原位(Inplace)操作和非原位操作的区别: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/beginner/tensor_cn.html#id3

.. note::

参数名 ``input`` 可替代 ``x``,如 ``bernoulli_(input=tensor_x)`` 等价于 ``bernoulli_(x=tensor_x)``。
2 changes: 1 addition & 1 deletion docs/api/paddle/imag_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ imag
参数
::::::::::::

- **x** (Tensor) - 输入的 Tensor,其数据类型可以为 complex64 或 complex128。
- **x** (Tensor) - 输入的 Tensor,其数据类型可以为 complex64 或 complex128。别名 ``input``。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

返回
Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/linalg/det_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ det
参数
::::::::::::

- **x** (Tensor):输入一个或批量矩阵。``x`` 的形状应为 ``[*, M, M]``,其中 ``*`` 为零或更大的批次维度,数据类型支持 float32、float64。
- **x** (Tensor):输入一个或批量矩阵。``x`` 的形状应为 ``[*, M, M]``,其中 ``*`` 为零或更大的批次维度,数据类型支持 float32、float64。别名 ``input``。

返回
::::::::::::
Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/linalg/inv_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ inv

参数
:::::::::
- **x** (Tensor) – 输入 Tensor,最后两维的大小必须相等。如果输入 Tensor 的维数大于 2,则被视为 2-D 矩阵的批次(batch)。支持的数据类型:float32,float64。
- **x** (Tensor) – 输入 Tensor,最后两维的大小必须相等。如果输入 Tensor 的维数大于 2,则被视为 2-D 矩阵的批次(batch)。支持的数据类型:float32,float64。别名 ``input``。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

返回
Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/linalg/pinv_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ pinv

参数
:::::::::
- **x** (Tensor):输入变量,类型为 Tensor,数据类型为 float32、float64、complex64、complex12,形状为(M, N)或(B, M, N)。
- **x** (Tensor):输入变量,类型为 Tensor,数据类型为 float32、float64、complex64、complex12,形状为(M, N)或(B, M, N)。别名 ``input``。
- **rcond** (float64,可选):奇异值(特征值)被截断的阈值,奇异值(特征值)小于 rcond * 最大奇异值时会被置为 0,默认值为 1e-15。
- **hermitian** (bool,可选):是否为 ``hermitian`` 矩阵或者实对称矩阵,默认值为 False。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。
Expand Down
4 changes: 2 additions & 2 deletions docs/api/paddle/nn/Flatten_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Flatten
参数
::::::::::::

- **start_axis** (int,可选) - 展开的起始维度,默认值为 1。
- **stop_axis** (int,可选) - 展开的结束维度,默认值为-1。
- **start_axis** (int,可选) - 展开的起始维度,默认值为 1。别名 ``start_dim``。
- **stop_axis** (int,可选) - 展开的结束维度,默认值为-1。别名 ``end_dim``。

返回
::::::::::::
Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/nn/LogSoftmax_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ LogSoftmax 激活层,计算公式如下:

参数
:::::::::
- **axis** (int,可选) - 指定对输入 Tensor 进行运算的轴。``axis`` 的有效范围是[-D, D),D 是输入 Tensor 的维度,``axis`` 为负值时与 :math:`axis + D` 等价。默认值为-1。
- **axis** (int,可选) - 指定对输入 Tensor 进行运算的轴。``axis`` 的有效范围是[-D, D),D 是输入 Tensor 的维度,``axis`` 为负值时与 :math:`axis + D` 等价。默认值为-1。别名 ``dim``。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

形状
Expand Down
4 changes: 2 additions & 2 deletions docs/api/paddle/nn/functional/kl_div_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ kL 发散损失计算如下:
参数
:::::::::
- **input** (Tensor) - KL 散度损失算子的输入 Tensor。维度为[N, \*]的多维 Tensor,其中 N 是批大小,\*表示任何数量的附加维度,数据类型为 float32 或 float64。
- **label** (Tensor) - KL 散度损失算子的 Tensor。与输入 ``input`` 的维度和数据类型一致的多维 Tensor。
- **reduction** (str,可选) - 要应用于输出的 reduction 类型,可用类型为none’ | ‘batchmean’ | ‘mean’ | ‘sum’,none’表示无 reduction,batchmean’ 表示输出的总和除以批大小,mean’ 表示所有输出的平均值,sum’表示输出的总和。
- **label** (Tensor) - KL 散度损失算子的 Tensor。与输入 ``input`` 的维度和数据类型一致的多维 Tensor。别名 ``target``。
- **reduction** (str,可选) - 要应用于输出的 reduction 类型,可用类型为none’ | ‘batchmean’ | ‘mean’ | ‘sum’,none’表示无 reduction,batchmean’ 表示输出的总和除以批大小,mean’ 表示所有输出的平均值,sum’表示输出的总和。
- **log_target** (bool,可选) - 表示输入的 ``label`` 变量是否属于 log 空间。默认值为 False,表示不属于。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/nn/functional/nll_loss_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ nll_loss
参数
:::::::::
- **input** (Tensor) - 输入 ``Tensor``,其形状为 :math:`[N, C]`,其中 ``C`` 为类别数。但是对于多维度的情形下,它的形状为 :math:`[N, C, d_1, d_2, ..., d_K]`。数据类型为 float32 或 float64。
- **label** (Tensor) - 输入 x 对应的标签值。其形状为 :math:`[N,]` 或者 :math:`[N, d_1, d_2, ..., d_K]`,数据类型为 int64。
- **label** (Tensor) - 输入 x 对应的标签值。其形状为 :math:`[N,]` 或者 :math:`[N, d_1, d_2, ..., d_K]`,数据类型为 int64。别名 ``target``。
- **weight** (Tensor,可选) - 手动指定每个类别的权重。其默认为 ``None``。如果提供该参数的话,长度必须为 ``num_classes``。数据类型为 float32 或 float64。
- **ignore_index** (int,可选) - 指定一个忽略的标签值,此标签值不参与计算。默认值为-100。数据类型为 int64。
- **reduction** (str,可选) - 指定应用于输出结果的计算方式,可选值有:``none``、``mean``、``sum``。默认为 ``mean``,计算 ``mini-batch`` loss 均值。设置为 ``sum`` 时,计算 ``mini-batch`` loss 的总和。设置为 ``none`` 时,则返回 loss Tensor。数据类型为 string。
Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/nn/utils/weight_norm_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ weight_norm
参数
::::::::::::

- **layer** (paddle.nn.Layer) - 要添加权重归一化的层。
- **layer** (paddle.nn.Layer) - 要添加权重归一化的层。别名 ``module``。
- **name** (str,可选) - 权重参数的名字。默认值为 ``weight``。
- **dim** (int|None,可选) - 进行归一化操作的切片所在维度,是小于权重 Tensor rank 的非负数。比如卷积的权重 shape 是 [cout,cin,kh,kw] , rank 是 4,则 dim 可以选 0,1,2,3;fc 的权重 shape 是 [cout,cin] ,rank 是 2,dim 可以选 0,1。如果为 None 就对所有维度上的元素做归一化。默认:0。

Expand Down
2 changes: 1 addition & 1 deletion docs/api/paddle/real_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ real
参数
::::::::::::

- **x** (Tensor) - 输入 Tensor,其数据类型可以为 complex64 或 complex128。
- **x** (Tensor) - 输入 Tensor,其数据类型可以为 complex64 或 complex128。别名 ``input``。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。

返回
Expand Down
43 changes: 23 additions & 20 deletions docs/dev_guides/coding_agent/api_compatibility/.claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Paddle API 对齐 PyTorch 项目

## 执行原则(最高优先级)

1. **直接执行**:全程静默执行,禁止向用户询问或讨论,在完成任务前不要停下来等待下一步指令
2. **自主判断**:分析、判断、选择均由模型独立完成
3. **自动处理异常**:遇到错误按回退规则自动处理,失败 3 次自动放弃该 API

## 项目目标
使 Paddle API 与 PyTorch API 行为完全对齐。对于任意 PyTorch API 用法,只需将 `torch.*` 替换为 `paddle.*`,计算结果完全一致。

Expand All @@ -11,9 +17,9 @@

| 工作目录 | 完整路径 | 内容说明 | 对应步骤 |
|---------|---------|---------|---------------|
| Paddle | `${ROOT_DIR}/Paddle` | Paddle 框架源码仓库,包含所有 Paddle API 的实现 | Step2代码修改 + Step3兼容测试 |
| PaConvert | `${ROOT_DIR}/PaConvert` | PyTorch 转换工具仓库,包含所有 Pytorch 单元测试 | Step4:对齐验证 |
| docs | `${ROOT_DIR}/docs` | Paddle 文档仓库,包含所有 Paddle API 中文文档 | Step5:文档更新 |
| Paddle | `${ROOT_DIR}/Paddle` | Paddle 框架源码仓库,包含所有 Paddle API 的实现 | Step2 代码修改 + Step3 兼容测试 |
| PaConvert | `${ROOT_DIR}/PaConvert` | PyTorch 转换工具仓库,包含所有 Pytorch 单元测试 | Step4 Pytorch 测试 |
| docs | `${ROOT_DIR}/docs` | Paddle 文档仓库,包含所有 Paddle API 中文文档 | Step5 更新文档 |

## 常用文件位置

Expand Down Expand Up @@ -97,34 +103,31 @@ void AtanKernel(const Context& dev_ctx, const DenseTensor& x, DenseTensor* out)
## 工作流程

### 流程概览
| Step | 名称 | 对应 Skill | 核心任务 |
| Step | 名称 | 调用对应 Skill | 核心任务 |
|------|------|-----------|----------|
| Step1 | 方案决策 | `/api-change-decider` | 分析差异,选择修改方案 |
| Step2 | 代码修改 | `/python-decorator` `/cpp-sink` `/modify-origin-api` `/add-new-api` `/add-new-compat-api` | 按方案修改 Paddle 代码 |
| Step3 | 兼容测试 | `/add-compatibility-test` | 添加兼容性单测并运行 |
| Step4 | 对齐验证 | `/pytorch-alignment-validator` | 编写 PyTorch 单测验证对齐 |
| Step5 | 文档更新 | `/api-docs-updater` | 更新中文文档和差异文档 |
| Step1 | 选择方案 | `/select-solution` | 分析差异,选择修改方案 |
| Step2 | 代码修改 | `/python-decorator` `/cpp-sink` `/modify-origin-api` `/add-new-api` `/add-new-compat-api` | 按方案修改 Paddle 代码 |
| Step3 | 兼容测试 | `/compatibility-test` | 添加兼容性单测并运行 |
| Step4 | Pytorch 测试 | `/pytorch-test` | 编写 PyTorch 单测验证对齐 |
| Step5 | 更新文档 | `/update-docs` | 更新中文文档和差异文档 |

### 流程重要约束
1. **批量处理**:每个 Step 对**所有 API** 完成后才进入下一步
2. **正向推进**:必须按 Step1 → Step2 → Step3 → Step4 → Step5 顺序执行,禁止跳过
3. **异常回退**:Step3/Step4 失败时回退到对应步骤重新执行
4. **放弃规则**:回退 3 次以上仍失败,标记为"未对齐"并放弃,需完整回退所有修改

### Step 通过标准
- Step3:单测可运行通过
- Step4:API 可配置为 `ChangePrefixMatcher`

3. **异常回退**:Step3/Step4 无法通过时回退到对应步骤重新执行,必须满足以下通过标准:
- Step3:单测可运行通过
- Step4:API 可配置为 `ChangePrefixMatcher`
4. **放弃规则**:若某个 API 回退 3 次以上仍失败,标记为"未对齐"并放弃该 API,需完整回退该 API 的所有修改,避免"修改了但没改对"的中间状态

## 注意事项
1. 严格按标准工作流程执行,杜绝自行臆断和跳过步骤
2. 每次修改代码后必须重新编译:在 `${ROOT_DIR}/Paddle/build` 目录下执行编译,否则修改不会生效
1. 每次修改 Paddle 代码后必须重新编译,否则修改不会生效:
```bash
cd ${ROOT_DIR}/Paddle/build
cmake .. && make -j$(nproc)
cmake .. && make -j$(nproc) > compile.log 2>&1
```
- 无需重装,直接生效(勿执行 setup/install 等安装操作)
- 无需重装,编译完成直接生效(勿执行 setup/install 等安装操作)
- 勿删除 build 目录(否则增量编译失效,编译时间极长)
2. 不要在 API 文档字符串中强调"PyTorch 风格"、"PyTorch 签名"、"PyTorch 适配"等 Pytorch 相关内容

## 忽略参数规则
分析差异时,以下参数直接忽略:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: add-new-api
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施『新增 API』方案。通过新增 Paddle API(新增 API 别名、新增 Python 层 API、新增 C++算子),覆盖 Pytorch API 调用路径,实现与 PyTorch API 行为对齐。
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2 代码修改,实施『新增 API』方案。通过新增 Paddle API(新增 API 别名、新增 Python 层 API、新增 C++算子),覆盖 Pytorch API 调用路径,实现与 PyTorch API 行为对齐。
context: fork
disable-model-invocation: false
---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ class TestTraceOp(OpTest):

```bash
cd ${ROOT_DIR}/Paddle/build
cmake .. && make -j$(nproc)
cmake .. && make -j$(nproc) > compile.log 2>&1
python test_xxx_op.py
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ class TestHardtanhAPI(unittest.TestCase):

```bash
cd ${ROOT_DIR}/Paddle/build
cmake .. && make -j$(nproc)
cmake .. && make -j$(nproc) > compile.log 2>&1
python test_xxx.py
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: add-new-compat-api
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2:API 代码修改,实施『新增 compat 类型 API』方案。在 `paddle.compat` 命名空间下新增 API,实现与 PyTorch API 行为对齐。
description: 负责《Paddle API 对齐 PyTorch 项目》中 Step2 代码修改,实施『新增 compat 类型 API』方案。在 `paddle.compat` 命名空间下新增 API,实现与 PyTorch API 行为对齐。
context: fork
disable-model-invocation: false
---
Expand Down
Loading