-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Description
问题描述 Please describe your issue
1. 背景
由于任务较多,采用在线表格方式进行维护:任务列表
所有任务难度默认为2星,但存在以下特殊情况
- 只涉及Python的修改,难度为1星
- 同时涉及Python和C++ Kernel的修改,难度为3星
- 同时涉及多个分类问题的,难度可叠加
可参考项目一期:#69082
2. 任务列表和认领方式
Note
二期项目主要目标是 “API 问题修复与功能增强”,因此将已有的问题分为以下五类:
-
【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]
-
【25个】API 鲁棒性增强:某些参数组合下计算的结果不符合预期,以 paddle.arange 为例
start=0,stop=-9007199254740994,step=-9007199254740993时,结果是[0, -9007199254740992],其中-9007199254740992是不正确,正确的值应该是-9007199254740993,这需要在Kernel中进行修复 -
【19个】常用功能的复数类型支持:这类问题比较多,需要统一集中解决,目前可以先初步支持不涉及数值计算,只涉及比较判断的场景,如 paddle.equal、paddle.less、paddle.isnan,为其底层Kernel支持复数。
-
【9个】其他类型支持:大部分集中在Kernel支持布尔类型问题上,由于布尔类型本身只有两种取值,所以支持难度较低,只需要在原Kernel的基础上,额外添加布尔类型的特化版本代码,并为Kernel注册布尔类型即可。
-
【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的文档,添加复数类型支持到参数说明中)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status