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

【快乐开源】基于hydra的案例改造计划 #571

Closed
HydrogenSulfate opened this issue Oct 16, 2023 · 8 comments
Closed

【快乐开源】基于hydra的案例改造计划 #571

HydrogenSulfate opened this issue Oct 16, 2023 · 8 comments
Assignees
Labels
HappyOpenSource 快乐开源活动issue与PR

Comments

@HydrogenSulfate
Copy link
Collaborator

HydrogenSulfate commented Oct 16, 2023

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 参考教程,改造案例代码

  1. 参考 PaddleScience + hydra 的使用教程:https://paddlescience-docs.readthedocs.io/zh/latest/zh/user_guide/#11-yaml-hydra
  2. 改造现有案例代码:将原来的 __main__下面的代码移动至 train(cfg)中,然后将 train 部分的评估/推理代码放至新建的 evaluate(cfg)函数中,最后在__main__中通过 def main(cfg: DictConfig)启动案例代码
  3. 修改对应文档中引用代码块的起始位置和终止位置,并在文档开头添加训练命令(考虑到快乐开源开发者可能没有算力,无需添加对应的预训练模型和推理命令,如需数据集则需要加上下载、解压命令)

整体代码可参考 bracket 案例改造 PR 中的 bracket.pybracket.yamlbracket.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 #572
2 examples/laplace2d.md @xusuyong #572 #575
@HydrogenSulfate
3 examples/viv.md @dddlli
@GreatV #622
4 examples/aneurysm.md @enkilee #607
5 examples/shock_wave.md @DrRyanHuang #627
6 examples/cylinder2d_unsteady.md @zbt78 #624
7 examples/ldc2d_unsteady.md @lknt #580
8 examples/ldc2d_steady.md @lknt #599
9 examples/darcy2d.md @co63oc #590
10 examples/labelfree_DNN_surrogate.md @co63oc #591
11 examples/hpinns.md @co63oc #582
12 examples/deephpms.md @co63oc #603
13 examples/lorenz.md @co63oc #587 #602
14 examples/rossler.md @co63oc #588 #602
15 examples/deeponet.md @co63oc #589
16 examples/cylinder2d_unsteady_transformer_physx.md @co63oc #602
17 examples/tempoGAN.md @co63oc #592
18 examples/deepcfd.md @MayYouBeProsperous #583
19 examples/phylstm.md @co63oc #579
20 examples/bubble.md @co63oc #581

3.3 整理代码并提交PR

参考 PaddleScience文档-贡献指南-整理代码并提交

4. 参考资料

5. 奖励

看板信息

任务方向 任务数量 提交作品 / 任务认领 提交率 完成 完成率
热身赛 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)

@enkilee
Copy link
Contributor

enkilee commented Oct 18, 2023

【报名】:1

@MayYouBeProsperous
Copy link
Contributor

【报名】:18

@lknt
Copy link
Contributor

lknt commented Oct 18, 2023

【报名】:7、8

@HydrogenSulfate
Copy link
Collaborator Author

HydrogenSulfate commented Nov 2, 2023

【报名】:1、2

@PaddlePaddle PaddlePaddle deleted a comment from moosewoler Nov 2, 2023
@DrRyanHuang
Copy link
Member

DrRyanHuang commented Nov 2, 2023

【报名】:5
(11月6号之前没见到PR就释放🧐😆😆😆)

@GreatV
Copy link
Contributor

GreatV commented Nov 3, 2023

【报名】:3

@zbt78
Copy link
Contributor

zbt78 commented Nov 3, 2023

【报名】:6

@luotao1
Copy link
Collaborator

luotao1 commented Nov 15, 2023

基于hydra的案例改造计划 已全部完成,感谢参与的小伙伴们!

排名不分先后 @HydrogenSulfate (1) @xusuyong (1) @GreatV (1) @enkilee (1) @DrRyanHuang (1) @zbt78 (1) @lknt (2) @co63oc (11) @MayYouBeProsperous (1)

欢迎继续参与快乐开源的其他任务

@luotao1 luotao1 closed this as completed Nov 15, 2023
@github-project-automation github-project-automation bot moved this from In Progress to Done in Call for Contributions Nov 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HappyOpenSource 快乐开源活动issue与PR
Projects
Development

No branches or pull requests

8 participants