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

中国软件开源创新大赛:飞桨框架任务挑战赛(上) #53172

Closed
Ligoml opened this issue Apr 21, 2023 · 23 comments
Closed

中国软件开源创新大赛:飞桨框架任务挑战赛(上) #53172

Ligoml opened this issue Apr 21, 2023 · 23 comments
Labels
HappyOpenSource Pro 进阶版快乐开源活动,更具挑战性的任务 status/close 已关闭 type/new-feature 确认的新需求

Comments

@Ligoml
Copy link
Contributor

Ligoml commented Apr 21, 2023

公告

  1. 非常欢迎你对飞桨框架做贡献,我们正在运营一个组织——飞桨框架贡献者俱乐部(Paddle Framework Contributor Club, PFCC),会通过定期分享技术知识与发布开发者主导任务的形式持续为飞桨框架做贡献。如果你有意向加入 PFCC,可以提交 PR 至 Paddle,代码合入后,我们会邀请你加入,如果你对某期技术分享的内容感兴趣,也可以通过邮件(ext_paddle_oss@baidu.com)联系我们旁听例会。更多详情见 https://github.com/luotao1 主页说明。
  2. 如果你是在校的学生,并且有兴趣参加飞桨社区的框架护航项目,非常欢迎你依据这份材料来申请:百度飞桨框架护航计划。2023/7/27晚上19:00-20:00有一个简单的线上介绍会,腾讯会议:544-142-628,点击链接入会。

活动介绍

第六届“中国软件开源创新大赛”在国家自然科学基金委信息科学部的指导下,由中国计算机学会(CCF)主办,西北工业大学、绿色计算产业联盟、CCF开源发展委员会联合承办。联合百度、清华大学等企业单位以及多所高校共同设置赛题,大赛分为“开源项目贡献赛”、“开源任务挑战赛”、“开源案例教学赛”和“开源代码评注赛”四个赛道。

第六届“中国软件开源创新大赛”开源任务挑战赛赛道——飞桨框架任务挑战赛 全新上线,通过比赛机制,鼓励选手了解与参与深度学习开源项目,为中国开源生态建设贡献力量。
本次飞桨框架开源贡献赛以线上比赛的形式进行,参赛选手在规定时间内自由组队选择合适的开发任务,以 Pull Requests 的形式完成贡献,获得相应奖励(开发中遇到问题可以提 Issues),快来组队参赛吧!

赛题列表

赛题名称 导师 队员 tracking issue
赛题一:实现飞桨框架的 python level jit compiler @jzhang533 @gglin001 @zrr1999 PFCCLab/paddlefx#41 @sanbuphy PFCCLab/paddlefx#45
赛题二:改进 CINN 日志和报错系统 @thisjiang
赛题三:Fluid 算子函数式迁移专项✅(2023/5/23) @From00 @AndSonder @gouzil @huangjiyi @GreatV #52395
赛题四:在飞桨框架中引入 clang-tidy @Galaxy1458 @zhangbo9674 @GreatV PaddlePaddle/community#530 @enkilee #54073
赛题五:将 xdoctest 引入到飞桨框架工作流中 @SigureMo @megemini PaddlePaddle/community#547 #54705
赛题六:飞桨框架 C++ 文档抽取与展示 ✅(2023/6/13) @jiahy0825 @Liyulingyue PaddlePaddle/community#529 @gouzil #54075
赛题七:实现飞桨框架动态图反向图的可视化 ✅(2023/7/11) @wanghuancoder @qiuwenbogdut PaddlePaddle/community#535 #54347

赛题详情

赛题一:实现飞桨框架的 python level jit compiler

赛题简介:

飞桨深度学习框架提供了动态图编程的模式来开发深度学习模型(方便开发与调试),以动转静的方式将模型转为静态图来进行推理部署(方便全图优化和高性能运行)。
本赛题,要求为飞桨框架实现一个 python 层的 just-in-time compiler,可以通过在 python 代码执行前通过分析 python bytecode,来产出计算子图,对子图进行图优化,并在某个计算后端上进行执行。在飞桨框架实现既可以动态图灵活开发又可以高效运行的深度学习模型开发方式。

赛题要求:

  • 分析用飞桨框架实现的 ResNet 网络的 python bytecode,将其编译成一个计算图。
  • 将一个示例的,含有控制流的,用飞桨框架实现的网络,编译成多个计算子图。
  • 将编译成的计算子图转为其他后端的计算图表示,并运行推理。(可考虑的计算后端:ONNX RUNTIME,TensorRT,或其他)

产出要求:

赛题导师:@jzhang533 @gglin001

参考链接:

赛题二:改进 CINN 日志和报错系统

赛题简介:

CINN 当前的日志和报错是使用的 GLOG,通过 VLOG 宏输出日志,通过 CHECK 宏检查正确性。由于 GLOG 本身的缺陷,以及缺乏统一的日志规范,导致 CINN 内冗余日志信息较多,报错内容中有效信息较少。
本赛题,要求为 CINN 改进实现一套完整的日志和报错系统,类似 Paddle 框架中的 PADDLE_ENFORCE 体系,可以在开发时为开发者提供规范的日志指引,在报错时为调试者提供有效的调试信息。从而提供友好的开发体验和调试体验,提升开发和调试效率。

赛题要求:

  • 使用 C++,通过宏和模板来实现一套完整的日志和报错系统
  • 梳理当前日志相关代码,整理设计一套日志开发规范,逐步替换 CINN 内当前 VLOG 日志
  • 改进报错体系和报错内容,参考 PADDLE_ENFORCE,要求报错信息至少包含调用栈、检查内容和出错值,检查最好能包含对 STL 库的支持
  • 改进方案应保证易用性和可持续性

产出要求:

  • 答辩 PPT
  • 书面的技术报告,重点介绍改进后的报错效果,和开发调试体验
  • 代码提交至: https://github.com/PaddlePaddle/CINN
  • 代码运行无误,通过社区maintainers的评审并合入代码仓库。

赛题导师:@thisjiang

参考链接:

赛题三:Fluid 算子函数式迁移专项

赛题简介:

飞桨深度学习框架在2.3版本发布了高可复用算子库 PHI(Paddle HIgh reusability operator library),支持组合式算子功能复用、Primitive 算子内核复用和插件式加速库复用,可以通过对函数式算子接口组合调用的方式实现新算子。
本赛题要求将飞桨原 Fluid 算子库下的部分重要算子改写成函数式并迁移到 PHI 算子库中,从而使飞桨框架可以借助 PHI 算子库提供的功能特性,统一和低成本地对这些算子做调度优化。

赛题要求:

  • 理解给定算子 cpu、gpu 和 xpu kernel 的计算逻辑,对该算子所有 kernel 的实现代码进行改写和迁移
  • 对算子 InferShape 函数的张量信息推导进行规范化,补充必要推导信息,并迁移成 PHI 下的 InferMeta
  • 将改造后的计算 kernel 和 InferMeta 按算子规范要求注册到 PHI 算子库中
  • 任务拆解和详细说明见 tracking issue:[PHI] Functionalization for Fluid kernel #52395

产出要求:

赛题导师:@From00

参考链接:

赛题四:在飞桨框架中引入 clang-tidy

赛题简介:

飞桨是集深度学习核心训练和推理部署、基础模型库、端到端开发套件和丰富的工具组件于一体的深度学习框架。百度飞桨在追求高性能的同时,也非常关注框架自身的安全隐患以及健壮性,例如:我们严格且严谨地将一切 warning 视为 error,引入 clang-tidy 有助于增加飞桨的健壮性。
本赛题,要求在飞桨框架中引入 clang-tidy,并希望引入尽可能多的对 paddle 有利的 clang-tidy 的功能。

赛题要求:

  • 引入 clang-tidy 至飞桨框架代码中,使其作用于项目全局,即对飞桨所有在 clang-tidy 功能覆盖范围之内的所有文件都应起作用。
  • 利用 clang-tidy 使得 paddle 代码更加健壮,例如消除 paddle 尽可能多的编译 warning 等,并可顺利编译使用 paddle。

产出要求:

  • 答辩 PPT
  • 书面的技术报告
  • 代码提交至: https://github.com/PaddlePaddle
  • 代码运行无误,通过社区 maintainers 的评审并合入代码仓库。

赛题导师:@Galaxy1458 @zhangbo9674

参考链接:

赛题五:将 xdoctest 引入到飞桨框架工作流中

赛题简介:

xdoctest 是一个示例代码自动执行和检查工具,可以自动执行 Python docstring 中的示例代码,并对示例代码输出进行检查。
本赛题,要求将 xdoctest 引入到飞桨框架的工作流中,利用 xdoctest 来自动检查示例代码运行正确,且输出结果匹配,以确保示例代码输出的一致性,进一步提高飞桨框架示例代码的质量。

赛题要求:

  • 调研 Paddle 现有 CI 流水线中的示例代码检查部分,设计方案以逐步引入 xdoctest,并对现有示例代码检查工具进行替换。
  • 更新 Paddle 示例代码以使其符合 xdoctest 要求的格式。
  • 设计方案应当充分考虑新旧流水线的更替的问题,并考虑对文档生成流程的影响。

产出要求:

  • 答辩 PPT
  • 书面的技术报告
  • 代码提交至:https://github.com/PaddlePaddle/Paddle
  • CI 流水线运行正常,可以按照预期检查示例代码,通过社区 maintainers 的评审并合入代码仓库。

赛题导师:@SigureMo

参考链接:

赛题六:飞桨框架 C++ 文档抽取与展示

赛题简介:

飞桨深度学习框架为用户提供了 Python API 官方文档,便于用户查阅 API 对应的源代码、参数、返回值等。
本赛题,要求为飞桨框架自动抽取和展示 C++ 文档,并上线至飞桨官网。

赛题要求:

  • 展示对外开放的 C++ 头文件目录结构。
  • 自动化抽取并解析 C++ class 和 API 。解析的内容包括但不限于所在文件路径、接口注释、命名空间、 参数、返回值等。
  • 上线至飞桨官网。要求官网展示界面对用户友好,设计方案具有可扩展性,未来目录结构、class 和 API 发生变化可自动更新。

赛题说明:

  • C++ 头文件所在根目录指 site-packages/paddle/include/paddle
  • 解析的 C++ class 和 API 具有前缀 PADDLE_API 标识

产出要求:

  • 答辩 PPT
  • 书面的技术报告以及设计文档
  • 代码提交至:https://github.com/PaddlePaddle/docs
  • 代码运行无误,通过社区 maintainers 的评审并合入代码仓库。

赛题导师:@jiahy0825

参考链接:

赛题七:实现飞桨框架动态图反向图的可视化

赛题简介:

飞桨深度学习框架提供了动态图编程的模式来开发深度学习模型(方便开发与调试),但动态图的反向图调试能力仍存在不足。
本赛题,要求为飞桨动态图框架添加反向节点在 Python 端的访问机制。并在该机制基础上,为飞桨框架扩展反向图可视化能力。

赛题要求:

  • 学习动态图框架,有能力为动态图扩展接口。
  • 学习 PyTorchViz 使用方法和原理。
  • 为飞桨动态图框架扩展 Python 端访问反向节点的能力,包括不限于 grad_fn、next_functions等
  • 参考 PyTorchViz 实现飞桨动态图反向图的可视化
  • 丰富反向图信息:如 Tensor 名、Tensor dtype、Tensor shape、前向堆栈等

产出要求:

赛题导师:@wanghuancoder

参考链接:

@Ligoml Ligoml changed the title 中国软件开源创新大赛:飞桨框架开源贡献赛赛题介绍 中国软件开源创新大赛:飞桨框架开源贡献赛 Apr 21, 2023
@Ligoml Ligoml pinned this issue Apr 21, 2023
@Liyulingyue
Copy link
Contributor

【队名】:一根内向的腿毛
【序号】:6
【状态】:报名
【链接】:None

@flytocc
Copy link

flytocc commented Apr 22, 2023

【队名】:拼手速
【序号】:赛题三
【状态】:报名
【链接】:None

@Young-Flash
Copy link
Contributor

【队名】:LPC
【序号】:赛题二:改进 CINN 日志和报错系统
【状态】:报名
【链接】:None

@Ligoml Ligoml changed the title 中国软件开源创新大赛:飞桨框架开源贡献赛 中国软件开源创新大赛:飞桨框架任务挑战赛 Apr 23, 2023
@enkilee
Copy link
Contributor

enkilee commented Apr 23, 2023

【githubid】enkilee
【序号】:赛题五:将 xdoctest 引入到飞桨框架工作流中
【状态】:报名
【链接】:None

@RedContritio
Copy link
Contributor

【队名】:莱可可可以来试试水
【序号】:赛题六:飞桨框架 C++ 文档抽取与展示
【状态】:报名
【链接】:None

@longranger2
Copy link
Contributor

【队名】:梦之队
【序号】:赛题3
【状态】:报名
【链接】:None

@thunder95
Copy link
Contributor

【队名】:thunder95
【序号】:赛题1
【状态】:报名
【链接】:None

@Zheng-Bicheng
Copy link
Contributor

【队名】:Zheng-Bicheng
【序号】:赛题1
【状态】:报名
【链接】:None

@Difers
Copy link
Contributor

Difers commented Apr 24, 2023

【队名】:Difers
【序号】:赛题1
【状态】:报名
【链接】:None

@RedContritio
Copy link
Contributor

【队名】:莱可可可以来试试水
【序号】:赛题七:实现飞桨框架动态图反向图的可视化
【状态】:报名
【链接】:None

@WintersMontagne10335
Copy link
Contributor

【队名】:RNG
【序号】:赛题三:Fluid 算子函数式迁移专项
【状态】:报名
【链接】:None

@zrr1999
Copy link
Member

zrr1999 commented Apr 25, 2023

【队名】:六个骨头
【序号】:赛题一
【状态】:报名
【链接】:None

@yycouo
Copy link

yycouo commented Apr 26, 2023

【队名】:超级无敌旋转大璇子
【序号】:赛题四:在飞桨框架中引入 clang-tidy
【状态】:报名
【链接】:None

@Alslizi
Copy link

Alslizi commented Apr 26, 2023

【队名】:正态分布
【序号】:赛题四:在飞桨框架中引入 clang-tidy
【状态】:报名
【链接】:None

@GreatV
Copy link
Contributor

GreatV commented May 3, 2023

【队名】:GreatV
【序号】:赛题四:在飞桨框架中引入 clang-tidy
【状态】:报名 & 提交RFC
【链接】:PaddlePaddle/community#530

@zrr1999
Copy link
Member

zrr1999 commented May 4, 2023

【队名】:六个骨头
【序号】:赛题四:在飞桨框架中引入 clang-tidy
【状态】:报名
【链接】:None

@marshall-dteach
Copy link

【队名】:调查乌度卡
【序号】:赛题三:Fluid 算子函数式迁移专项
【状态】:报名
【链接】:None

@Ligoml
Copy link
Contributor Author

Ligoml commented May 6, 2023

hi all,赛题发布已有2周时间,报名的同学在群内进行了充分的讨论(未加群的同学请联系花花入群,QQ群号:532942112),我们计划下周一到三约个时间进行一次技术交流,时长预计半个小时,邀请已经熟悉技术背景甚至提交rfc的同学分享,并邀请研发导师进行答疑。欢迎大家踊跃报名分享~

@Tomoko-hjf
Copy link
Contributor

【队名】:hjyp
【序号】:赛题七:实现飞桨框架动态图反向图的可视化
【状态】:报名
【链接】:None

@qiuwenbogdut
Copy link
Contributor

qiuwenbogdut commented May 10, 2023

【队名】:小馒头
【序号】:赛题七:实现飞桨框架动态图反向图的可视化
【状态】:报名 & 提交RFC
【链接】:PaddlePaddle/community#535

@megemini
Copy link
Contributor

【队名】:megemini
【序号】:赛题五:将 xdoctest 引入到飞桨框架工作流中
【状态】:报名 & 提交RFC
【链接】:#540

@megemini
Copy link
Contributor

【队名】:megemini
【序号】:赛题五:将 xdoctest 引入到飞桨框架工作流中
【状态】:报名 & 更新RFC
【链接】:PaddlePaddle/community#547

@Ligoml Ligoml changed the title 中国软件开源创新大赛:飞桨框架任务挑战赛 中国软件开源创新大赛:飞桨框架任务挑战赛(上) Jul 24, 2023
@Ligoml Ligoml unpinned this issue Jul 24, 2023
@Ligoml Ligoml added HappyOpenSource Pro 进阶版快乐开源活动,更具挑战性的任务 type/new-feature 确认的新需求 labels Aug 29, 2023
@Ligoml
Copy link
Contributor Author

Ligoml commented Oct 10, 2023

本赛道开发成果征集与评审工作已完成,向大赛主办方推选14名优秀开发者进入预赛评审和决赛答辩,具体结果请关注大赛主办方通知,或各赛题群内通知,赛事评审通知详见:https://mp.weixin.qq.com/s/3QIJT7673cAEpd3VJPbiBg

注:各赛题未完成的开发任务可继续进行,成果计入飞桨日常开源活动 #56689 ,have fun~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HappyOpenSource Pro 进阶版快乐开源活动,更具挑战性的任务 status/close 已关闭 type/new-feature 确认的新需求
Projects
None yet
Development

No branches or pull requests