Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

【快乐开源】Paddle Tensor 规范化二期 #69908

Open
HydrogenSulfate opened this issue Dec 3, 2024 · 1 comment
Open

【快乐开源】Paddle Tensor 规范化二期 #69908

HydrogenSulfate opened this issue Dec 3, 2024 · 1 comment
Assignees
Labels

Comments

@HydrogenSulfate
Copy link
Contributor

HydrogenSulfate commented Dec 3, 2024

问题描述 Please describe your issue

1. 背景

由于任务较多,采用在线表格方式进行维护:任务列表

所有任务难度默认为2星,但存在以下特殊情况

  • 只涉及Python的修改,难度为1星
  • 同时涉及Python和C++ Kernel的修改,难度为3星
  • 同时涉及多个分类问题的,难度可叠加

可参考项目一期:#69082

2. 任务列表和认领方式

Note

二期项目主要目标是 “API 问题修复与功能增强”,因此将已有的问题分为以下五类:

  1. 【51个】API 支持 0-size Tensor:要求 API 底层的前向、反向 kernel 支持 0-size Tensor,0-size Tensor 参与运算时,其形状遵循一般情况下的形状计算规则,如add([0,4], [0, 4]),其结果还是[0, 4],[0, 4].sum(axis=-1),其结果是[0]

  2. 【25个】API 鲁棒性增强:某些参数组合下计算的结果不符合预期,以 paddle.arange 为例

    image
    start=0,stop=-9007199254740994,step=-9007199254740993时,结果是[0, -9007199254740992],其中-9007199254740992是不正确,正确的值应该是-9007199254740993,这需要在Kernel中进行修复

  3. 【19个】常用功能的复数类型支持:这类问题比较多,需要统一集中解决,目前可以先初步支持不涉及数值计算,只涉及比较判断的场景,如 paddle.equal、paddle.less、paddle.isnan,为其底层Kernel支持复数。

  4. 【9个】其他类型支持:大部分集中在Kernel支持布尔类型问题上,由于布尔类型本身只有两种取值,所以支持难度较低,只需要在原Kernel的基础上,额外添加布尔类型的特化版本代码,并为Kernel注册布尔类型即可。

  5. 【15个】其它问题:比较基础的简单问题,如diagonal这个API没有在paddle.linalg模块下

Caution

由于一部分API是在第一期任务中添加的(如paddle.less),晚于 Paddle 3.0b2 版本,因此请务必安装 develop 版本的 Paddle

Important

选定任务之后,将表格中的单测名称复制下来,然后按照以下步骤先复现出报错:

# 安装 pytest
pip install pytest hypothesis==6.112.2

# 安装 array-api-compat
git clone https://github.com/HydrogenSulfate/array-api-compat.git -b support_paddle
cd array-api-compat
pip install -e .
cd ..

# 下载 array-api-tests
git clone https://github.com/HydrogenSulfate/array-api-tests.git -b paddle
cd array-api-tests

# 安装测试所需的依赖包
pip install -r requirements.txt

# 运行某个单测(以 array_api_tests/test_operators_and_elementwise_functions.py::test_logaddexp 为例)
ARRAY_API_TESTS_MODULE=array_api_compat.paddle \
ARRAY_API_TESTS_SKIP_DTYPES=int8,int16,uint16,uint8,uint32,uint64 \
ARRAY_API_TESTS_VERSION="2023.12" \
python -m pytest -s -vvv array_api_tests/test_operators_and_elementwise_functions.py::test_logaddexp

接着根据报错信息,分析报错原因,再视情况,对 Paddle 中的相关代码进行修复;
本地开发完毕后,重新运行上述单测,能够通过说明修复成功,提交PR到Paddle下(复数类型支持的还需要修改对应API的文档,添加复数类型支持到参数说明中)

@sealoongleft
Copy link

很想参加,但是没看懂这个活动……

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Projects
Status: In Progress
Development

No branches or pull requests

4 participants