Description
This project will be mentored by @HydrogenSulfate
报名格式参考:【报名】:2、3
,多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
PR 提交格式:在 PR 的标题中以 【hydra No.xxx】 开头,注明任务编号
1. 背景
PaddleScience 现有案例只提供了训练代码,没有显式地给出训练命令,也没有提供预训练模型供用户快速进行推理体验;同时现有案例的超参数与代码文件耦合,在实验管理上并不方便。因此为了提升用户体验,期望在案例文档开头,提供训练命令;另外经过调研,引入了 facebook/hydra 配置管理和解析库,方便实验管理和解析。
1.1 Hydra 是什么
Hydra是漫威漫画旗下的超级反派组织,初次登场于《Strange Tales》第135期。该组织的起源可以追溯到一位名叫蜂巢的异人,因其能力过强而被送往遥远的星球。Hydra的标志为骷髅头与下方的蛇足,口号是“砍掉一个头,再长出两个头取而代之”,与神话中的九头蛇海德拉形象相契合。该组织以其无穷无尽的杂兵和强大的再生能力实现这一口号。在现代,一般是将分支NAZI Hydra作为九头蛇组织的主要代表,但并非正统的Hydra。该组织曾隶属于二战中的纳粹德国,并在纳粹政权倒台后渗透进神盾局中,利用神盾局的旗号制造恐慌混乱,从战争中获得利益。- 来自文心一言
Hydra是一个开源的Python框架,简化了研究和其他复杂应用程序的开发。 关键功能是能够按组合动态创建分层配置,并通过配置文件和命令行覆盖它。 Hydra这个名字来自于它能够运行多个类似的工作 - 很像具有多个头的Hydra
Hydra 是一个基于 YAML 格式配置文件和 Omegaconf 分层配置系统的实验管理工具。
1.2 如何利用 Hydra 如何提升实验效率
- 利用 hydra 支持配置组合的特性,可以将实验所需配置子集分散到各个 YAML 文件中,然后在启动的时候通过命令行读取特定的配置,来启动特定的实验。实验启动后会按照运行日期建立文件夹并用于保存实验输出内容,避免数据丢失等问题。
- 利用 hydra 的另一个功能 -
multirun
,通过命令行设置实验参数列表,即可在 python 启动自动串行的实验
由于 hydra 功能丰富而开发者并不需要完全了解这些功能,因此 PaddleScience 提供了简要的说明:https://paddlescience-docs.readthedocs.io/zh/latest/zh/user_guide/#111。 可参考该文档了解在 PaddleScience 中如何使用 hydra 的基本功能。
2. 收益
了解开源组合配置管理工具 hydra 及其基本语法,提升实验效率。
3. 开发流程
3.1 安装 PaddleScience
下载安装 PaddleScience 套件:https://paddlescience-docs.readthedocs.io/zh/latest/zh/install_setup/#121-git
3.2 参考教程,改造案例代码
- 参考 PaddleScience + hydra 的使用教程:https://paddlescience-docs.readthedocs.io/zh/latest/zh/user_guide/#11-yaml-hydra
- 改造现有案例代码:将原来的
__main__
下面的代码移动至train(cfg)
中,然后将 train 部分的评估/推理代码放至新建的evaluate(cfg)
函数中,最后在__main__
中通过def main(cfg: DictConfig)
启动案例代码 - 修改对应文档中引用代码块的起始位置和终止位置,并在文档开头添加训练命令(考虑到快乐开源开发者可能没有算力,无需添加对应的预训练模型和推理命令,如需数据集则需要加上下载、解压命令)
整体代码可参考 bracket 案例改造 PR 中的 bracket.py
、bracket.yaml
、bracket.md
三个文件:https://github.com/PaddlePaddle/PaddleScience/pull/569/files#diff-66a907ab8353125bfd79670b3892e23360967493faf6fd74c2b8aa9bc99b7b6b。
文档改造效果可以参考 bracket 文档:https://paddlescience-docs.readthedocs.io/zh/latest/zh/examples/bracket/
序号 | 案例 | 认领人/状态/PR号 |
---|---|---|
1 | examples/volterra_ide.md | @enkilee @HydrogenSulfate |
2 | examples/laplace2d.md | @xusuyong @HydrogenSulfate |
3 | examples/viv.md | @dddlli @GreatV |
4 | examples/aneurysm.md | @enkilee |
5 | examples/shock_wave.md | @DrRyanHuang |
6 | examples/cylinder2d_unsteady.md | @zbt78 |
7 | examples/ldc2d_unsteady.md | @lknt |
8 | examples/ldc2d_steady.md | @lknt |
9 | examples/darcy2d.md | @co63oc |
10 | examples/labelfree_DNN_surrogate.md | @co63oc |
11 | examples/hpinns.md | @co63oc |
12 | examples/deephpms.md | @co63oc |
13 | examples/lorenz.md | @co63oc |
14 | examples/rossler.md | @co63oc |
15 | examples/deeponet.md | @co63oc |
16 | examples/cylinder2d_unsteady_transformer_physx.md | @co63oc |
17 | examples/tempoGAN.md | @co63oc |
18 | examples/deepcfd.md | @MayYouBeProsperous |
19 | examples/phylstm.md | @co63oc |
20 | examples/bubble.md | @co63oc |
3.3 整理代码并提交PR
参考 PaddleScience文档-贡献指南-整理代码并提交
4. 参考资料
5. 奖励
- 飞桨快乐开源活动全新升级🔥 Paddle#56689 每 3 个月统计一次贡献情况,具体来说就是标签为 HappyOpenSource 的 PR,并依据贡献情况为各位开发者邮寄礼物 🎁,本期活动从 8.11 开启,至 11.11 截止统计。
看板信息
任务方向 | 任务数量 | 提交作品 / 任务认领 | 提交率 | 完成 | 完成率 |
---|---|---|---|---|---|
热身赛 | 20 | 20 / 20 | 100.0% | 20 | 100.0% |
统计信息
排名不分先后 @HydrogenSulfate (1) @xusuyong (1) @GreatV (1) @enkilee (1) @DrRyanHuang (1) @zbt78 (1) @lknt (2) @co63oc (11) @MayYouBeProsperous (1)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status