Skip to content

Commit c85cfea

Browse files
authored
Adding hackathon 6th. No 40 SDGD optimizer RFC.md (#843)
1 parent 82ba479 commit c85cfea

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
> 本文档为 PaddleScience 开发者任务 RFC(**R**equest **F**or **C**omment) 模板
2+
3+
# 任务名
4+
5+
> RFC 文档相关记录信息
6+
7+
| | |
8+
| ------------ | ----------------- |
9+
| 提交作者 | jiamingkong |
10+
| 提交时间 | 2024-03-28 |
11+
| RFC 版本号 | v1.0 |
12+
| 依赖飞桨版本 | release 2.6.0 版本 |
13+
| 文件名 | 20240328_SDGD_optimizer.md |
14+
15+
## 1. 概述
16+
17+
### 1.1 相关背景
18+
19+
[community/hackathon/hackathon_6th/【Hackathon 6th】开源贡献个人挑战赛科学计算任务合集.md at master · PaddlePaddle/community (github.com)](https://github.com/PaddlePaddle/community/blob/master/hackathon/hackathon_6th/【Hackathon 6th】开源贡献个人挑战赛科学计算任务合集.md#no40-sdgd-优化器实现)
20+
21+
根据原始论文https://arxiv.org/pdf/2307.12306.pdf的公式和实验条件,用 paddle 实现 SDGD 优化器,支持单机训练和多卡并行训练,最终在 Allen-Cahn 问题上,复现出红框中的四个精度。
22+
23+
### 1.2 功能目标
24+
25+
> 具体需要实现的功能点。
26+
27+
1. (任务要求目标)复现SDGD的优化器,使其可以在PaddleScience中直接应用,求解PINN偏微分方程。
28+
29+
### 1.3 意义
30+
31+
该任务的顺利完成,将会为PaddleScience和PaddlePaddle贡献一个全新的optimizer,让一些高维度的高参数量的优化问题求解所需的显存量显著减少。
32+
33+
## 2. PaddleScience 现状
34+
35+
当前的PaddleScience中仅实现了常见的神经网络优化器,例如SGD、Adam等,没有该论文中提到的全新的优化器。
36+
37+
## 3. 目标调研
38+
39+
> 如果是论文复现任务,则需说明复现论文解决的问题、所提出的方法以、复现目标以及可能存在的难点;如果是 API 开发类任务,则需说明已有开源代码中类似功能的实现方法,并总结优缺点。
40+
41+
该任务是论文复现任务,论文中提到的问题是一些输入维度高的PINN模型,在求解的时候通常会因为求导项目过多,导致显存占用非常巨大,难以训练。论文中提出的方法是通过每次采样不同的输入维度,降低每个批次中显存的占用,同时通过其他技术手段保证估算的梯度仍然是完整的、无偏的梯度。
42+
43+
复现目标:实现与论文中参考案例一致的内存占用量、训练速度,和最后收敛精度。
44+
45+
可能存在的难点:由于作者没有释放官方代码,所以我们按照论文中重新构建的代码在实现细节上无法和作者设想、和当时的实验环境完全统一。
46+
47+
## 4. 设计思路与实现方案
48+
49+
思路:
50+
51+
优化器在ppsci的大多数问题求解的例子中,都是一个独立可调整的超参数,我们打算使用ppsci作为实验环境,重现文中的例子。并且将优化器的实现也放在ppsci里面。
52+
53+
实现方案:
54+
55+
1. 通过在`ppsci/optimizer/optimizer.py` 中补充优化器的实现,使其全局可用
56+
2. 补充相应的examples,证明该优化器实现细节与原文一致或足够接近。
57+
58+
### 4.1 补充说明[可选]
59+
60+
> 可以是对设计方案中的名词、概念等内容的详细解释。
61+
62+
## 5. 测试和验收的考量
63+
64+
> 说明如何对复现代码/开发API进行测试,以及验收标准,保障任务完成质量。
65+
66+
依据论文的构造方法,在examples文件夹中补充相应的例子和配置,并调用sdgd优化器求解,记录精度、耗时等信息,与原文对比。
67+
68+
标准:与原文一致。
69+
70+
## 6. 可行性分析和排期规划
71+
72+
> 可以以里程碑列表的方式,细化开发过程,并给出排期规划。
73+
74+
- 2024/3/28 提交RFC
75+
- 2024/4/1 利用ppsci已有框架构造实验环境
76+
- 2024/4/5 初步实现计算逻辑与原文一致的sdgd optimizer
77+
- 2024/4/12 性能调优完成
78+
79+
总耗时:两周
80+
81+
## 7. 影响面
82+
83+
- 影响到`ppsci/optimizer/optimizer.py`,在其中新增SDGD的定义;
84+
- 影响到`examples`,在其中新增一个与原文接近的试验配置。

0 commit comments

Comments
 (0)