- Notifications
You must be signed in to change notification settings - Fork 5.9k
Description
(此 ISSUE 为 PaddlePaddle Hackathon 第三期活动的任务 ISSUE,更多详见 【PaddlePaddle Hackathon 第三期】任务总览)
为神经网络编译器 CINN 增加一系列基础算子,提交流程请参考 CINN算子开发&提交流程(coming soon),开发请参考 贡献指南,任务列表如下:
No.67:为神经网络编译器 CINN 增加 arange 算子
-
算子功能:返回一个tensor,它的值是一个范围内的数字
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.68:为神经网络编译器 CINN 增加 argmin 和 argmax 算子
-
算子功能:返回最大/最小值的索引
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.69:为神经网络编译器 CINN 增加 cast 算子
-
算子功能:转化输入的数据类型
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.70:为神经网络编译器 CINN 增加 clip 算子
-
算子功能:将输入限制在范围内,给定范围min,max,在范围内的输入则原值返回,超过max则返回max,小于min则返回min
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.71:为神经网络编译器 CINN 增加 flip 算子
-
算子功能:将一个算子的某些维度数据反转过来,如[1, 2, 3] 变成 [3, 2, 1]
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.72:为神经网络编译器 CINN 增加 layout_transform 算子
-
算子功能:更改输入的layout
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.73:为神经网络编译器 CINN 增加 one_hot 算子
-
算子功能:根据输入的索引,返回一个Tensor,该Tensor将索引的位置标注为用户指定的一个值,非索引的位置标注为另一个值。最常见的是1/0标值
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.74:为神经网络编译器 CINN 增加 repeat 算子
-
算子功能:把一个Tensor沿某些维度重复几遍
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.75:为神经网络编译器 CINN 增加 sort 算子
-
算子功能:对输入根据某些维度,进行排序
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.76:为神经网络编译器 CINN 增加 split 算子
-
算子功能:将输入根据某些维度和索引划分,分开成几个不同Tensor输出
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.77:为神经网络编译器 CINN 增加 squeeze 算子
-
算子功能:删除只有1个元素的维度,减少输入Tensor的维度
-
技术标签:深度学习框架,编译器
-
任务难度:基础
No.78:为神经网络编译器 CINN 增加 gather、gather_nd、scatter、scatter_nd 算子
-
算子功能:对输入分别进行gather、scatter相关功能
-
技术标签:深度学习框架,编译器
-
任务难度:进阶
详细描述
使用神经网络编译器 CINN IR 编写算子,大致步骤为在 CINN 底层使用 CINN IR 实现相关计算的描述,如果有优化需求再实现相关 strategy,之后打通上层的 net_builder 和 load_paddle_model,并进行相关单测。
提交内容
- 包含算子的设计文档,以及必要的代码讲解和背景知识。 提交至 PaddlePaddle/community repo 的 rfcs/CINN/APIs 目录;
- Github fork PaddlePaddle/CINN repo 为自己 repo 后,提交 PR 到 PaddlePaddle/CINN 公开 repo,提交 PR 的链接:
a. PR 代码中,使用 CINN IR 编写的算子,相应的 strategy,根据具体算子在 CINN 情况提交至相关路径;
b. 上层 net_builder 调用提交到 cinn/frontend/net_builder.h 和 .cc 文件下;
c. 上层 load_paddle_model 调用提交到 cinn/frontend/paddle_model_to_program.h 和 .cc 文件下。
技术要求
- 熟悉神经网络编译器,如 TVM 或 CINN;
- 熟悉神经网络框架,如 TensorFlow 或 Pytorch 或者 PaddlePaddle;
- 熟练掌握 C++ 、Python。
答疑交流
- 如果在开发中对于上述任务有任何问题,欢迎在本 ISSUE 下留言交流;
- 对于开发中的共性问题,在活动过程中,会定期组织答疑,请大家关注官网&QQ群的通知,及时参与。