Skip to content
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

【PaddlePaddle Hackathon 3】数据类型扩展任务合集 #44071

Closed
Ligoml opened this issue Jul 4, 2022 · 0 comments
Closed

【PaddlePaddle Hackathon 3】数据类型扩展任务合集 #44071

Ligoml opened this issue Jul 4, 2022 · 0 comments

Comments

@Ligoml
Copy link
Contributor

Ligoml commented Jul 4, 2022

(此 ISSUE 为 PaddlePaddle Hackathon 第三期活动的任务 ISSUE,更多详见 【PaddlePaddle Hackathon 第三期】任务总览

为飞桨框架一系列算子增加支持的数据类型,提交流程请参考 算子数据类型扩展&提交流程,开发请参考 贡献指南,请注意:算子数据类型扩展是针对飞桨已有的算子,因此可以只在必要情况下提供设计文档。 任务列表如下:

No.45:为 Paddle cumsum 算子实现 float16 数据类型支持

  • 技术标签:深度学习框架,C++,CUDA

  • 任务难度:基础

  • 详细描述:由于 sum 类运算直接采用 float16 累加会有溢出风险,因此该功能要求为 cumsum 算子注册 float16 类型,同时改写算子 Kernel,使得 float16 下精度与期望结果的误差不超过 1e-3,并且性能不差于使用 float32 类型计算。

  • 任务提交:

No.46:为 Paddle logcumsumexp 算子实现 float16 数据类型支持

No.47:为 Paddle logsumexp 算子实现 float16 数据类型支持

  • 技术标签:深度学习框架,C++,CUDA

  • 任务难度:基础

  • 详细描述:由于 sum 类运算直接采用 float16 累加会有溢出风险,因此该功能要求为 logsumexp 算子注册 float16 类型,同时改写算子 Kernel,使得 float16 下精度与期望结果的误差不超过 1e-3,并且性能不差于使用 float32 类型计算。

  • 任务提交:

No.48:为 Paddle elementwise 系列算子实现 float16 数据类型支持

  • 技术标签:深度学习框架,C++,CUDA

  • 任务难度:基础

  • 详细描述:elementwise 类的部分算子未支持 float16 类型,因此该功能要求为这类算子注册 float16 类型,同时改写算子实现,使得 float16 下精度与期望结果的误差不超过 1e-3,并且性能不差于使用 float32 类型计算。

    • 任务1:需注册 float16 类型,并对算子实现做简单改写的有 elementwise_pow、elementwise_pow_grad、elementwise_pow_raw、elementwise_mod;
    • 任务2:只需注册 float16 类型的有 elementwise_fmax、elementwise_fmax_grad、elementwise_fmin、elementwise_fmin_grad、elementwise_heaviside_raw、elementwise_heaviside。
  • 任务提交:

No.49:为 Paddle group_norm 算子实现 float16 数据类型支持

  • 技术标签:深度学习框架,C++,CUDA

  • 任务难度:进阶

  • 详细描述:group_norm 前反向算子未支持 float16 类型,因此该功能要求为该算子注册 float16 类型,同时改写算子实现,使得 float16 下精度与期望结果的误差不超过 1e-3,并且性能不差于使用 float32 类型计算。

  • 任务提交:

No.50:为 Paddle linear_interp_v2 算子实现 float16 数据类型支持

No.51:为 Paddle nearest_interp_v2 算子实现 float16 数据类型支持

No.52:为 Paddle bilinear_interp_v2 算子实现 float16 数据类型支持

No.53:为 Paddle trilinear_interp_v2 算子实现 float16 数据类型支持

No.54:为 Paddle bicubic_interp_v2 算子实现 float16 数据类型支持

No.55:为 Paddle depthwise_conv2d 算子实现 float16 数据类型支持

No.56:为 Paddle deformable_conv_v1 算子实现 float16 数据类型支持

合入标准

  • 精度:依据各任务描述为算子扩展数据类型,通过算子的单元测试;
  • 性能:OP Benchmark 对应 OP 的全部配置 case 性能不出现下降问题,使用 float16 类型的算子性能不差于使用 float32 类型。

技术要求

  • 熟练掌握 C++、CUDA 代码编写;
  • 掌握 OP Benchmark 使用方法。

答疑交流

  • 如果在开发中对于上述任务有任何问题,欢迎在本 ISSUE 下留言交流;
  • 对于开发中的共性问题,在活动过程中,会定期组织答疑,请大家关注官网&QQ群的通知,及时参与。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants