PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.05k stars 5.54k forks source link

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

Closed Ligoml closed 11 months ago

Ligoml commented 1 year ago

公告

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

    活动介绍

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

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

活动已经过半,本 issue 发布下半程挑战赛任务,上半程任务详见:

NEWS:

8月3日晚,导师对赛题进行了在线详解,感兴趣的同学可以查看回放: 主题: PFCC第二十五次会议-软件开源创新大赛赛题讲解 录制文件:https://meeting.tencent.com/v2/cloud-record/share?id=336f340f-9f4d-4bbc-9127-c37f363aae81&from=3

赛题列表

赛题名称 导师 队员 tracking issue
赛题二(更新):改进 CINN 日志和报错系统 @ZzSean
赛题八:paddleviz能力扩展——Tensor信息展示 @wanghuancoder @qiuwenbogdut @Tomoko-hjf #56479
赛题九:优化飞桨开源模型Mask R-CNN训练性能 @zhangting2020 #55907
赛题十:为 PaddleSOT 项目添加 Python 3.11 版本支持 @SigureMo @zrr1999 @gouzil PaddlePaddle/PaddleSOT#360
赛题十一:新 IR 组件及API Python端适配 @YuanRisheng @Aurelius84 @0x45f #55737
赛题十二:新 IR 模型结构的可视化工具建设 @xiaoguoguo626807 @Aurelius84 @qiuwenbogdut @Tomoko-hjf #55599
赛题十三:飞桨支持复数 @GGBond8488
赛题十四:PaddleScience 领域经典论文复现 @HydrogenSulfate @co63oc https://github.com/PaddlePaddle/PaddleScience/pull/535 https://github.com/PaddlePaddle/PaddleScience/pull/502 https://github.com/PaddlePaddle/PaddleScience/pull/511
赛题十五:PaddleScience 领域前沿论文复现 @wangguan1995 @co63oc https://github.com/PaddlePaddle/PaddleScience/pull/536
赛题十六:Fluid 分布式算子迁移到 PHI @hitywt @GhostScreaming @AndSonder @GreatV @BeingGod @huangjiyi @gouzil @yangguohao @zeroRains https://github.com/PaddlePaddle/Paddle/issues/55716

赛题详情

赛题二(更新):改进 CINN 日志和报错系统

赛题简介:

Paddle的CINN模块当前的日志和报错是使用的 GLOG,通过 VLOG 宏输出日志,通过 CHECK 宏检查正确性。由于 GLOG 本身的缺陷,以及缺乏统一的日志规范,导致 CINN 内冗余日志信息较多,报错内容中有效信息较少。

本赛题,要求为Paddle的CINN模块改进实现一套完整的日志和报错系统,类似 Paddle 框架中的 PADDLE_ENFORCE 体系,可以在开发时为开发者提供规范的日志指引,在报错时为调试者提供有效的调试信息。从而提供友好的开发体验和调试体验,提升开发和调试效率。

在此简述不能直接使用PADDLE_ENFORCE的原因:

赛题要求:

产出要求:

赛题导师:

@ZzSean

参考链接:

赛题八:paddleviz能力扩展——Tensor信息展示

赛题简介:

飞桨深度学习框架提供了动态图编程的模式来开发深度学习模型(方便开发与调试),但动态图的反向图调试能力仍存在不足。@qiuwenbogdut 和 @Tomoko-hjf 两位社区开发者为Paddle开发了反向图可视化工具 paddleviz,很大程度上提升了反向图的调试能力。但我们还希望,在现有 paddleviz 基础上,扩展 paddleviz 的能力,进一步提升反向图的调试能力。

赛题要求:

产出要求:

赛题导师:

@wanghuancoder

参考链接:

赛题九:优化飞桨开源模型Mask R-CNN训练性能

赛题简介:

飞桨深度学习框架已经发布了很多涵盖多个领域的开源模型,本赛题旨在通过对飞桨深度学习框架支持的开源模型进行优化,提高模型的训练性能,探索飞桨在模型上的性能优化最佳实践。欢迎对深度学习框架和模型优化感兴趣的开发者,展示在模型优化领域的经验和创新性。

赛题要求:

产出要求:

赛题导师:

@zhangting2020

参考链接:

赛题十:为 PaddleSOT 项目添加 Python3.11 版本支持

赛题简介:

PaddleSOT 是一个 Opcode-Based 的动转静孵化项目,借助 Symbolic Opcode Translator(简称:SOT)在运行时将 PaddlePaddle 动态图组网代码转换为静态图组网代码,具体设计参见:PaddleSOT 项目介绍

PaddleSOT 从一开始是基于 Python 3.8 开发的,并分别在 PaddlePaddle/PaddleSOT#109 和 PaddlePaddle/PaddleSOT#112 支持了 3.9 和 3.10,但 3.11 还是不支持的。因为 3.11 的字节码和 3.8-3.10 的字节码有较大的差异,而 PaddleSOT 是依赖于字节码进行模拟执行的,因此 3.11 的支持需要对 PaddleSOT 进行较多的改动。

本赛题要求为 PaddleSOT 增加 Python 3.11 的支持,使 PaddleSOT 能够正确地进行模拟执行、CodeGen 等流程。并在 PaddleSOT 添加 Python 3.11 流水线,使其能够在 CI 中进行测试。

赛题要求:

产出要求:

赛题导师:

@SigureMo

参考链接:

赛题十一:新 IR 组件及 API Python 端适配

赛题简介:

随着新IR底层核心逻辑已经成熟,需要进一步推广验证。当前新IR仅限于在C++底层进行操作,为了能够尽快让新 IR 替代现有的 IR 体系,需要打通 Python 端到C++端的新IR链路。其中有一项重要工作是需要在C++端开发新IR的组网用API ,并且暴露到 Python 端,从而为大规模验证新 IR 体系奠定基础。

赛题要求:

产出要求:

赛题导师:

@YuanRisheng

参考链接:

赛题十二:新ir模型结构的可视化工具建设

赛题简介:

飞桨深度学习框架近期在重构底层的中间表示(下称:IR),替换原来的 ProgramDesc 为新的 MLIR。具体技术设计详见:IR Dialect。此项目处于高效迭代期,为了加速开发者们对模型、子图级别下新 IR 表示的熟悉,降低功能开发中的调试成本,希望能够给 IR Dialect 添加「可视化」功能.

赛题要求:

产出要求:

赛题导师:

@Aurelius84 @xiaoguoguo626807

参考链接:

赛题十三:飞桨支持复数

赛题简介:

现有的深度学习框架主要是基于对实数函数的优化设计的,在主流的深度学习应用场景中,网络的输入变量,中间变量,输出变量都是实数,与此相关的基础设施,比如数组,优化器等组件也都是适用于实数类型。

但随着深度学习应用的扩展,也出现对复数支持的需求,比如图像,语音等领域的傅里叶变换,量子物理领域,其理论体系都是基于复数建立的。虽然并非不能用实数表示复数运算,但稍显繁琐,深度学习框架有原生的复数支持,可以使建模更接近其理论。

目前飞桨已经完成复数基础设施的建设,包括复数 Attribute 的支持、复数自动微分、数值微分和梯度检测功能,这是实现支持复数的算子的基础。在此基础上需要渐进式添加 & 增强飞桨复数功能,包括新增支持复数的算子、为已有算子添加复数 kernel、以及为相关 API 添加复数支持等。

赛题要求:

完成 paddlepaddle 支持复数 中的67个子任务。

产出要求:

赛题导师:

@GGBond8488

参考链接:

赛题十四:PaddleScience 领域经典论文复现

赛题简介:

PaddleScience 作为开源科学计算套件,希望通过复现各类领域内的相关论文,提高该套件的领域覆盖度,验证套件和框架 API 的正确性和完备性,最终提升用户体验,助力科学计算开发者的开发实验。

赛题要求:

完成三篇论文的复现如下(复现两篇有资格进入答辩环节)

论文一

题目:Extended Physics-Informed Neural Networks (XPINNs): A Generalized Space-Time Domain Decomposition Based Deep Learning Framework for Nonlinear Partial Differential Equations

论文地址:https://github.com/AmeyaJagtap/XPINNs/blob/master/XPINNs_Paper.pdf

参考源码:https://github.com/AmeyaJagtap/XPINNs (基于tensorflow)

论文二

题目:Deep Spatio-Temporal Wind Power Forecasting

论文地址:https://arxiv.org/abs/2109.14530

参考源码:https://github.com/jiangyuan-li/Deep-Spatio-Temporal/tree/main (基于torch)

论文三 (换题说明:https://github.com/PaddlePaddle/Paddle/issues/55663#issuecomment-1691077782

题目:An a priori evaluation of a principal component and artificial neural network based combustion model in diesel engine conditions

论文地址:https://www.sciencedirect.com/science/article/abs/pii/S1540748920303552?via%3Dihub

参考源码:https://github.com/deepakdalakoti/PCA-ANN/tree/master (基于keras)

题目:Deep learning based denoising process

论文地址:https://arxiv.org/abs/2208.12544

参考源码:https://github.com/ytg7146/DU_CNN

产出要求:

赛题导师:

@HydrogenSulfate

参考链接:

赛题十五:PaddleScience 领域前沿论文复现

赛题简介:

物理信息神经网络(PINN)在计算力学方向有越来越多的进展。首先通过神经正切核(NTK)理论研究 PINN 的训练动态。 根据数值实验,Queensland University of Technology LAMSE实验室发现:

关于单层RB神经网络:

赛题要求:

完成论文 PIRBN 的复现 题目:Physics-informed radial basis network (PIRBN): A local approximation neural network for solving nonlinear PDEs 论文地址:https://arxiv.org/abs/2304.06234 参考源码:https://github.com/JinshuaiBai/PIRBN (基于 tensorflow)

产出要求:

赛题导师:

@wangguan1995

参考链接:

赛题十六:Fluid 分布式算子迁移到 PHI

赛题简介:

当前 Fluid 下分布式算子由于未完全迁移到新的 PHI 算子体系,无法具备 PHI 下函数式算子注册时"记录自身输入输出属性“的能力,在分布式场景也就无法使用框架新的通信模块和调度系统,给分布式训练调试、优化等工作带来较大的负担。我们一共收集了17个需要迁移的算子,欢迎大家提交PR一起对这些算子做迁移改造。

赛题要求:

将17个 Fluid 分布式算子的迁移到PHI,完成算子的 cpu/gpu/xpu kernel 以及 InferShape函数的迁移。任务拆解和详细说明见 tracking issue:

产出要求:

赛题导师:

@hitywt @GhostScreaming

参考链接:

Liyulingyue commented 1 year ago

那么,该如何报名赛题9呢/doge

qiuwenbogdut commented 1 year ago

【队名】:小馒头 【序号】:赛题八 【状态】:报名 【链接】:None

Ligoml commented 1 year ago

下周四(8.3)晚上7:00会邀请各位研发导师对赛题做详解与答疑,预计周三(8.2)会公布会议链接,请大家关注~

greasebig commented 1 year ago

【队名】:lujunda 【序号】:赛题九 【状态】:报名 【链接】:None

njjtan commented 1 year ago

【队名】:costan 【序号】:赛题十四 【状态】:报名 【链接】:无

zrr1999 commented 1 year ago

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

luotao1 commented 1 year ago

8.3日晚上7-9点邀请了飞桨研发进行中国软件开源创新大赛赛题讲解,这次会议时间较长(预计两小时),有兴趣的同学可以来参加~

议程:https://github.com/PaddlePaddle/community/blob/master/pfcc/meetings/2023/2023-08-03-meeting-agenda.md

会议时间:2023/08/03 19:00-21:00 (GMT+08:00) 中国标准时间 - 北京

👇 点击链接入会,或添加至会议列表: https://meeting.tencent.com/dm/VojjLHgcOv2S

腾讯会议:983-161-320

会议密码:0803

@greasebig @njjtan @sususama

ximlel commented 1 year ago

【队名】:PIRBN-NO1 【序号】:赛题十五 【状态】:报名 【链接】:无

172w commented 1 year ago

【队名】:TWSQ 【序号】:赛题十四 【状态】:报名 【链接】:无

co63oc commented 1 year ago

赛题十四 论文三 题目:An a priori evaluation of a principal component and artificial neural network based combustion model in diesel engine conditions https://github.com/deepakdalakoti/PCA-ANN/tree/master

源码中没有配置文件和数据集下载地址

图片

图片 图片

下载地址为pdf文件无数据 图片

HydrogenSulfate commented 1 year ago

赛题十四 论文三 题目:An a priori evaluation of a principal component and artificial neural network based combustion model in diesel engine conditions https://github.com/deepakdalakoti/PCA-ANN/tree/master

源码中没有配置文件和数据集下载地址

图片

图片 图片

下载地址为pdf文件无数据 图片

看了一下论文三确实没有给出数据和配置文件,可以考虑做赛题一的XPINNs,@172w @njjtan @co63oc

luotao1 commented 1 year ago

@co63oc 赛题14的论文3已经换题了,可以看下最新题目。

co63oc commented 1 year ago

@co63oc 赛题14的论文3已经换题了,可以看下最新题目。

ok

qiuwenbogdut commented 1 year ago

【队名】:小馒头 【序号】:赛题十二 【状态】:报名 【链接】:None

jiamingkong commented 1 year ago

【队名】:什么是惊喜 【序号】:赛题十五 【状态】:报名 【链接】:None

Difers commented 1 year ago

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

co63oc commented 12 months ago

@HydrogenSulfate 赛题14的论文一 对paddle.cos求多次导数,但是paddle.cos有错误,使用paddle.sin是可以运行,运行的代码

import paddle

# sin
x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.sin(x)
dx = paddle.grad(y, x, retain_graph=False, create_graph=True)[0]
d2x = paddle.grad(dx, x)
print(d2x)

paddle.sin结果 图片

import paddle

# cos 
x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.cos(x)
dx = paddle.grad(y, x, retain_graph=False, create_graph=True)[0]
d2x = paddle.grad(dx, x)
print(d2x)

paddle.cos为错误 Unable to get phi::DenseTensor data of Output d2d1y in operator CosDoubleGrad 图片

PaddlePaddle版本2.5.1 图片

HydrogenSulfate commented 12 months ago

@HydrogenSulfate 赛题14的论文一 对paddle.cos求多次导数,但是paddle.cos有错误,使用paddle.sin是可以运行,运行的代码

import paddle

# sin
x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.sin(x)
dx = paddle.grad(y, x, retain_graph=False, create_graph=True)[0]
d2x = paddle.grad(dx, x)
print(d2x)

paddle.sin结果 图片

import paddle

# cos 
x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.cos(x)
dx = paddle.grad(y, x, retain_graph=False, create_graph=True)[0]
d2x = paddle.grad(dx, x)
print(d2x)

paddle.cos为错误 Unable to get phi::DenseTensor data of Output d2d1y in operator CosDoubleGrad 图片

PaddlePaddle版本2.5.1 图片

根据 $cos(x) = sin(\dfrac{2}{\pi} + \alpha)$,可以这样用sin模拟cos绕过吧?

half_pi = np.pi / 2
def cos(x):
    return paddle.sin(half_pi + x)
co63oc commented 12 months ago

@HydrogenSulfate 三次方求二阶导数错误,可能多次导数这部分不适合转换 ddout should not be null

import paddle
import numpy as np

x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = x ** 3
dx = paddle.grad(y, x, retain_graph=True, create_graph=True)[0]
d2x = paddle.grad(dx, x, retain_graph=True, create_graph=True)[0]

图片

co63oc commented 12 months ago

paddle.exp错误

import paddle
import numpy as np

x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.exp(x)
dx = paddle.grad(y, x, retain_graph=True, create_graph=True)[0]
d2x = paddle.grad(dx, x, retain_graph=True, create_graph=True)[0]

图片

HydrogenSulfate commented 12 months ago

@HydrogenSulfate 三次方求二阶导数错误,可能多次导数这部分不适合转换 ddout should not be null

import paddle
import numpy as np

x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = x ** 3
dx = paddle.grad(y, x, retain_graph=True, create_graph=True)[0]
d2x = paddle.grad(dx, x, retain_graph=True, create_graph=True)[0]

图片

可以先用 x*x*x 代替

paddle.exp错误

import paddle
import numpy as np

x = paddle.to_tensor([1.0,2,3], stop_gradient=False, dtype=paddle.float64)
y = paddle.exp(x)
dx = paddle.grad(y, x, retain_graph=True, create_graph=True)[0]
d2x = paddle.grad(dx, x, retain_graph=True, create_graph=True)[0]

图片

程序运行开头设置一下:paddle.framework.core.set_prim_eager_enabled(True)

Ligoml commented 11 months ago

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

注:各赛题未完成的开发任务可继续进行,成果计入飞桨日常开源活动 https://github.com/PaddlePaddle/Paddle/issues/56689 ,have fun~