Skip to content
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

【Hackathon 5th No.7】为 Paddle 新增 apply API #635

Closed
wants to merge 1 commit into from

Conversation

robinbg
Copy link

@robinbg robinbg commented Sep 17, 2023

No description provided.


1. **Python层**: 在 Python 层,我们将获取用户的 callable,然后将其传递给 C++ 层。

2. **C++层**: 在 C++ 层,我们将遍历 Tensor 的每个元素,并使用 Pybind11 调用用户提供的 Python 函数。对于 `apply_` 方法,我们将直接在原Tensor上修改值。对于 `apply` 方法,我们将创建一个新的 Tensor 来存放结果。
Copy link
Contributor

@jeff41404 jeff41404 Sep 18, 2023

Choose a reason for hiding this comment

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

C++中的实现方案是此文档的重点,最好有demo 或者 稍微展开描述下其中的一些关键细节,比如:是否需要实现OP和kernel,如何调用用户提供的 Python 函数进行计算,Tensor在GPU上如何调用Python 函数,是否要实现反向逻辑,是否要实现静态图逻辑,及说明这样设计和考虑的原因


参考:[飞桨API 设计及命名规范](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/dev_guides/api_contributing_guides/api_design_guidelines_standard_cn.html)

API将被命名为 `apply` 和 `apply_`,其中 `apply_` 表示原地操作。
Copy link
Contributor

@jeff41404 jeff41404 Sep 18, 2023

Choose a reason for hiding this comment

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

需要写出完整的 API签名,包括 接口名称 和 参数

# 六、测试和验收的考量

- 单测代码,位于Paddle repo的 `test/` 目录。
- 在 `paddle/test/legacy_test/test_inpalce.py` 中新增对应的inplace api单测。
Copy link
Contributor

Choose a reason for hiding this comment

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

要说明主要的测试用例,比如 要测试哪些功能,期望得到什么结果;异常的测试有哪些,期望得到什么异常

Comment on lines +43 to +47
- **TensorFlow**: `tf.map_fn` 方法提供了强大的功能,但其接口相对复杂,不太适合初学者。

- **PyTorch**: 虽然 `torch.Tensor.apply_` 方法提供了所需的功能,但由于其局限性,它在新代码中不被推荐使用。

- **NumPy**: `numpy.vectorize` 是一个简单且强大的工具,但它在某些情况下可能不如专门设计的函数高效。
Copy link
Contributor

Choose a reason for hiding this comment

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

最好把这些接口的签名都列出来,特别是参数方面的比较,会影响到下面的设计

@luotao1
Copy link
Collaborator

luotao1 commented Dec 18, 2023

已经有 RFC 合入了,如果需要更新和完善,可以在原来的 RFC 上进行修改,感谢!

@luotao1 luotao1 closed this Dec 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants