Skip to content

【PaddlePaddle Hackathon 3】CINN算子开发任务合集 #44069

@Ligoml

Description

@Ligoml

(此 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,并进行相关单测。

提交内容

  1. 包含算子的设计文档,以及必要的代码讲解和背景知识。 提交至 PaddlePaddle/community repo 的 rfcs/CINN/APIs 目录;
  2. 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群的通知,及时参与。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions