-
Notifications
You must be signed in to change notification settings - Fork 273
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
Conversation
|
||
1. **Python层**: 在 Python 层,我们将获取用户的 callable,然后将其传递给 C++ 层。 | ||
|
||
2. **C++层**: 在 C++ 层,我们将遍历 Tensor 的每个元素,并使用 Pybind11 调用用户提供的 Python 函数。对于 `apply_` 方法,我们将直接在原Tensor上修改值。对于 `apply` 方法,我们将创建一个新的 Tensor 来存放结果。 |
There was a problem hiding this comment.
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_` 表示原地操作。 |
There was a problem hiding this comment.
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单测。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
要说明主要的测试用例,比如 要测试哪些功能,期望得到什么结果;异常的测试有哪些,期望得到什么异常
- **TensorFlow**: `tf.map_fn` 方法提供了强大的功能,但其接口相对复杂,不太适合初学者。 | ||
|
||
- **PyTorch**: 虽然 `torch.Tensor.apply_` 方法提供了所需的功能,但由于其局限性,它在新代码中不被推荐使用。 | ||
|
||
- **NumPy**: `numpy.vectorize` 是一个简单且强大的工具,但它在某些情况下可能不如专门设计的函数高效。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
最好把这些接口的签名都列出来,特别是参数方面的比较,会影响到下面的设计
已经有 RFC 合入了,如果需要更新和完善,可以在原来的 RFC 上进行修改,感谢! |
No description provided.