Skip to content

Commit e9e4f6c

Browse files
[Doc] Update paddle version to release/3.0 (#1127)
* update paddle release/3.0 * update externals/paddle_scatter submodule commit * update color logger from cyan to bold_cyan * fix phycrnet * fix plot * update more document
1 parent d9ef780 commit e9e4f6c

File tree

12 files changed

+53
-58
lines changed

12 files changed

+53
-58
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ PaddleScience 是一个基于深度学习框架 PaddlePaddle 开发的科学计
157157
### 安装 PaddlePaddle
158158

159159
<!-- --8<-- [start:paddle_install] -->
160-
请在 [PaddlePaddle](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html) 官网按照您的运行环境,安装 <font color="red"><b>3.0-beta 或 develop</b></font> 版的 PaddlePaddle。
160+
请根据您的运行环境,访问 [PaddlePaddle](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html) 官网,安装 <font color="red"><b>3.0 或 develop</b></font> 版的 PaddlePaddle。
161161

162162
安装完毕之后,运行以下命令,验证 Paddle 是否安装成功。
163163

@@ -216,7 +216,7 @@ python -c "import paddle; paddle.utils.run_check()"
216216

217217
- 设置 PYTHONPATH 并手动安装 requirements
218218

219-
如果在您的环境中,上述两种方式都无法正常安装,则可以选择本方式,在终端内将环境变量 `PYTHONPATH` 临时设置为 `PaddleScience`**绝对路径**,如下所示。
219+
如果在您的环境中,上述两种方式都无法正常安装,则可以选择本方式,在终端内临时将环境变量 `PYTHONPATH` 设置为 PaddleScience 的**绝对路径**,如下所示。
220220

221221
``` shell
222222
cd PaddleScience
@@ -270,7 +270,7 @@ python -c "import paddle; paddle.utils.run_check()"
270270
<!-- --8<-- [start:support] -->
271271
## 💬支持与建议
272272

273-
如使用过程中遇到问题或想提出开发建议,欢迎在 [**Discussion**](https://github.com/PaddlePaddle/PaddleScience/discussions/new?category=general) 提出建议,或者在 [**Issue**](https://github.com/PaddlePaddle/PaddleScience/issues/new/choose) 页面新建 issue,会有专业的研发人员进行解答。
273+
如在使用过程中遇到问题或想提出开发建议,欢迎在 [**Discussion**](https://github.com/PaddlePaddle/PaddleScience/discussions/new?category=general) 中提出,或者在 [**Issue**](https://github.com/PaddlePaddle/PaddleScience/issues/new/choose) 页面新建 issue,会有专业的研发人员进行解答。
274274
<!-- --8<-- [end:support] -->
275275

276276
<!-- --8<-- [start:contribution] -->

docs/zh/api/visualize.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
- VisualizerWeather
1616
- save_plot_from_1d_dict
1717
- save_plot_from_3d_dict
18+
- save_vtp_from_dict
1819
- save_vtu_from_dict
1920
- save_vtu_to_mesh
2021
show_root_heading: true

docs/zh/examples/allen_cahn.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,19 +208,19 @@ examples/allen_cahn/allen_cahn_piratenet.py:132:136
208208

209209
在训练过程中通常会按一定轮数间隔,用验证集(测试集)评估当前模型的训练情况,因此使用 `ppsci.validate.SupervisedValidator` 构建评估器。
210210

211-
``` py linenums="138"
211+
``` py linenums="146"
212212
--8<--
213-
examples/allen_cahn/allen_cahn_piratenet.py:138:156
213+
examples/allen_cahn/allen_cahn_piratenet.py:146:164
214214
--8<--
215215
```
216216

217217
### 3.8 模型训练、评估与可视化
218218

219219
完成上述设置之后,只需要将上述实例化的对象按顺序传递给 `ppsci.solver.Solver`,然后启动训练、评估、可视化。
220220

221-
``` py linenums="158"
221+
``` py linenums="166"
222222
--8<--
223-
examples/allen_cahn/allen_cahn_piratenet.py:158:184
223+
examples/allen_cahn/allen_cahn_piratenet.py:166:192
224224
--8<--
225225
```
226226

@@ -247,3 +247,4 @@ examples/allen_cahn/allen_cahn_piratenet.py
247247

248248
- [PIRATENETS: PHYSICS-INFORMED DEEP LEARNING WITHRESIDUAL ADAPTIVE NETWORKS](https://arxiv.org/pdf/2402.00326.pdf)
249249
- [Allen-Cahn equation](https://github.com/PredictiveIntelligenceLab/jaxpi/blob/main/examples/allen_cahn/README.md)
250+
- [Gradient Alignment in Physics-informed Neural Networks: A Second-Order Optimization Perspective](https://arxiv.org/abs/2502.00604)

docs/zh/examples/phycrnet.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
``` sh
88
# linux
99
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyCRNet/burgers_1501x2x128x128.mat -P ./data/
10-
1110
# windows
1211
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyCRNet/burgers_1501x2x128x128.mat --create-dirs -o ./data/burgers_1501x2x128x128.mat
1312

@@ -24,6 +23,7 @@
2423

2524
python main.py mode=eval DATA_PATH=./data/burgers_1501x2x128x128.mat EVAL.pretrained_model_path=https://paddle-org.bj.bcebos.com/paddlescience/models/phycrnet/phycrnet_burgers.pdparams
2625
```
26+
2727
| 预训练模型 | 指标 |
2828
|:--| :--|
2929
| [phycrnet_burgers_pretrained.pdparams](https://paddle-org.bj.bcebos.com/paddlescience/models/phycrnet/phycrnet_burgers.pdparams) | a-RMSE: 3.20e-3 |
@@ -81,9 +81,9 @@ $$K_s = \begin{bmatrix}
8181

8282
![image](https://paddle-org.bj.bcebos.com/paddlescience/docs/phycrnet/Hard_IC_BC.png)
8383

84-
``` py linenums="43"
84+
``` py linenums="15"
8585
--8<--
86-
examples/phycrnet/main.py:43:45
86+
examples/phycrnet/main.py:15:37
8787
--8<--
8888
```
8989

@@ -96,39 +96,39 @@ examples/phycrnet/conf/burgers_equations.yaml:34:42
9696
### 3.2 数据载入
9797
我们使用RK4或者谱方法生成的数据(初值为使用正态分布生成),需要从.mat文件中将其读入,:
9898

99-
``` py linenums="54"
99+
``` py linenums="38"
100100
--8<--
101-
examples/phycrnet/main.py:54:72
101+
examples/phycrnet/main.py:38:63
102102
--8<--
103103
```
104104

105105
### 3.3 约束构建
106106

107107
设置约束以及相关损失函数:
108108

109-
``` py linenums="74"
109+
``` py linenums="65"
110110
--8<--
111-
examples/phycrnet/main.py:74:90
111+
examples/phycrnet/main.py:65:82
112112
--8<--
113113
```
114114

115115
### 3.4 评估器构建
116116

117117
设置评估数据集和相关损失函数:
118118

119-
``` py linenums="92"
119+
``` py linenums="84"
120120
--8<--
121-
examples/phycrnet/main.py:92:109
121+
examples/phycrnet/main.py:84:102
122122
--8<--
123123
```
124124

125125
### 3.6 优化器构建
126126

127127
训练过程会调用优化器来更新模型参数,此处选择 `Adam` 优化器并设定 `learning_rate`
128128

129-
``` py linenums="112"
129+
``` py linenums="104"
130130
--8<--
131-
examples/phycrnet/main.py:112:116
131+
examples/phycrnet/main.py:104:106
132132
--8<--
133133
```
134134

@@ -142,33 +142,33 @@ $$
142142

143143
这一步需要通过设置外界函数来进行,因此在训练过程中,我们使用`function.transform_out`来进行训练
144144

145-
``` py linenums="47"
145+
``` py linenums="38"
146146
--8<--
147-
examples/phycrnet/main.py:47:51
147+
examples/phycrnet/main.py:38:42
148148
--8<--
149149
```
150150

151151
而在评估过程中,我们使用`function.tranform_output_val`来进行评估,并生成累计均方根误差。
152152

153-
``` py linenums="142"
153+
``` py linenums="124"
154154
--8<--
155-
examples/phycrnet/main.py:142:142
155+
examples/phycrnet/main.py:124:125
156156
--8<--
157157
```
158158

159159
完成上述设置之后,只需要将上述实例化的对象按顺序传递给 `ppsci.solver.Solver`
160160

161-
``` py linenums="117"
161+
``` py linenums="108"
162162
--8<--
163-
examples/phycrnet/main.py:117:129
163+
examples/phycrnet/main.py:108:120
164164
--8<--
165165
```
166166

167167
最后启动训练、评估即可:
168168

169-
``` py linenums="132"
169+
``` py linenums="122"
170170
--8<--
171-
examples/phycrnet/main.py:132:140
171+
examples/phycrnet/main.py:122:126
172172
--8<--
173173
```
174174

docs/zh/install_setup.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# pull image
1111
docker pull hydrogensulfate/paddlescience
1212

13-
# create a container named 'paddlescience_container' based on pulled image
13+
# create a container named 'paddlescience_container' using the pulled image
1414
## docker version < 19.03
1515
nvidia-docker run --name paddlescience_container --network=host -it --shm-size 64g hydrogensulfate/paddlescience:latest /bin/bash
1616

@@ -40,7 +40,7 @@
4040

4141
如果你还没有 python 环境或者 python 版本小于 3.9,则推荐使用 Anaconda 安装并配置 python 环境,否则可以忽略本步骤。
4242

43-
1. 根据系统环境,从 [https://repo.anaconda.com/archive/](https://repo.anaconda.com/archive/) 中下载对应的 Anaconda3 安装包,并手动安装
43+
1. 根据系统环境,从 [https://repo.anaconda.com/archive/](https://repo.anaconda.com/archive/) 中下载对应的 Anaconda3 安装包并手动安装
4444
2. 创建 python 3.9 环境,并进入该环境。
4545

4646
``` sh
@@ -113,7 +113,7 @@
113113

114114
PaddleScience 提供了两种复杂几何类型,如下所示:
115115

116-
| API 名称 | 支持文件类型 | 安装方式 | 使用方式 |
116+
| API 名称 | 支持的文件类型 | 安装方式 | 使用方式 |
117117
| -- | -- | -- | -- |
118118
|[`ppsci.geometry.Mesh`](./api/geometry.md#ppsci.geometry.Mesh) | `.obj`, `.ply`, `.off`, `.stl`, `.mesh`, `.node`, `.poly` and `.msh`| 参考下方的 "PyMesh 安装命令"| `ppsci.geometry.Mesh(mesh_path)`|
119119
|[`ppsci.geometry.SDFMesh`](./api/geometry.md#ppsci.geometry.SDFMesh "实验性功能") | `.stl` | `pip install warp-lang 'numpy-stl>=2.16,<2.17'` | `ppsci.geometry.SDFMesh.from_stl(stl_path)` |
@@ -144,7 +144,7 @@ PaddleScience 提供了两种复杂几何类型,如下所示:
144144
=== "PyMesh 安装命令"
145145

146146
在安装 PyMesh 之前,首先需通过 `cmake --version` 确认环境中是否已安装 cmake。
147-
如未安装,可按照下列命令下载、解压 cmake 包,并添加到 `PATH` 变量中即可完成安装
147+
如果未安装,可以按照下列命令下载并解压 cmake 包,然后将其添加到 PATH 变量中以完成安装
148148

149149
``` sh
150150
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/cmake-3.23.0-linux-x86_64.tar.gz
@@ -158,7 +158,7 @@ PaddleScience 提供了两种复杂几何类型,如下所示:
158158
# CMake suite maintained and supported by Kitware (kitware.com/cmake).
159159
```
160160

161-
PyMesh 库需要以 setup 的方式进行安装,命令如下:
161+
推荐以 setup 的方式安装 PyMesh 库,命令如下:
162162

163163
``` sh
164164
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/PyMesh.tar.gz
@@ -238,7 +238,7 @@ PaddleScience 提供了多种第三方库供用户在开发时使用,这些库
238238
``` python
239239
>>> from ppsci import externals
240240
>>> print(externals.__all__)
241-
['deepali', 'open3d', 'paddle_harmonics', 'tensorly', 'warp']
241+
['deepali', 'open3d', 'paddle_harmonics', 'paddle_scatter', 'tensorly', 'warp']
242242
243243
>>> tl = externals.tensorly
244244
>>> tl.set_backend("paddle")

docs/zh/tutorials.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22

33
## 教程课件
44

5+
- [飞桨AI for Science代码入门](https://space.bilibili.com/476867757/lists/4215120?type=season)
6+
- [飞桨AI for Science前沿讲座](https://space.bilibili.com/476867757/lists/4215252?type=season)
57
- [深度学习技术与科学计算](https://aistudio.baidu.com/course/introduce/29929?sharedType=1&sharedUserId=438690&ts=1705731573142)
68
- [飞桨AI for Science流体力学公开课第一期](https://aistudio.baidu.com/course/introduce/27926?sharedType=1&sharedUserId=438690&ts=1705892946215)

docs/zh/user_guide.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pip install hydra-core
2424

2525
!!! warning
2626

27-
注意本教程内的打印运行配置方法**只作为调试使用**,hydra 默认在打印完配置后会立即结束程序。因此在正常运行程序时请勿加上 `-c job` 参数。
27+
请注意,本教程中的打印运行配置方法**仅用于调试**,hydra 默认在打印完配置后会立即结束程序。因此,在正常运行程序时请勿加上 `-c job` 参数。
2828

2929
以 bracket 案例为例,其正常运行命令为:`python bracket.py`。若在其运行命令末尾加上 `-c job`,则可以打印出从运行配置文件 `conf/bracket.yaml` 中解析出的配置参数,如下所示。
3030

@@ -78,7 +78,7 @@ TRAIN:
7878
python bracket.py {++TRAIN.lr_scheduler.learning_rate=0.002++}
7979
```
8080

81-
这种方式通过命令行参数临时重载运行配置,而不会对 `bracket.yaml` 文件本身进行修改,能灵活地控制运行时的配置,保证不同实验之间互不干扰
81+
这种方式通过命令行参数临时重载运行配置,而不会修改 bracket.yaml 文件本身,能够灵活地控制运行时的配置,确保不同实验之间互不干扰
8282

8383
!!! tip "设置含转义字符的参数值"
8484

@@ -211,7 +211,7 @@ ppsci MESSAGE: Inference model has been exported to: ./inference/aneurysm, inclu
211211
212212
!!! Warning
213213
214-
Paddle 在 3.0 以及之后的版本中将 PIR 设置为默认的静态图执行模式,因此移除了 `*.pdmodel` `*.pdiparams` 格式的文件,而由 `*.json` 文件代替。
214+
在 Paddle 3.0 及之后的版本中,PIR 被设置为默认的静态图执行模式,因此 `*.pdmodel` 格式的文件被移除,改由 `*.json` 文件代替。
215215
为此 PaddleScience 进行了适配([deploy/python_infer/base.py](https://github.com/PaddlePaddle/PaddleScience/blob/develop/deploy/python_infer/base.py#L105-L107)),用户无需关心后缀格式,会根据 Paddle 版本是否支持 PIR,在加载上述文件时,自动替换为正确的后缀名。
216216
217217
#### 1.2.2 ONNX 推理模型导出
@@ -370,6 +370,7 @@ PaddleScience 提供了多种推理配置组合,可通过命令行进行组合
370370
371371
| | Native | ONNX | TensorRT | macaRT | MKLDNN |
372372
| :--- | :--- | :--- | :--- | :--- | :--- |
373+
| Intel(CPU) | ✅ | ✅ | / | / | ✅ |
373374
| NVIDIA | ✅ | ✅ | ✅ | / | / |
374375
| MetaX | ✅ | ✅ | / | ✅ | / |
375376
@@ -831,7 +832,7 @@ hydra 的自动化实验功能可以与 [optuna](https://optuna.readthedocs.io/e
831832
3. `direction: minimize`:这指定了优化的目标方向。minimize 表示我们希望最小化目标函数(例如模型的验证损失)。如果我们希望最大化某个指标(例如准确率),则可以设置为 maximize。
832833
4. `study_name: viv_optuna`:这设置了 Optuna 研究(Study)的名称。这个名称用于标识和引用特定的研究,有助于在以后的分析或继续优化时跟踪结果。
833834
5. `n_trials: 20`:这指定了要运行的总试验次数。在这个例子中,Optuna 将执行 20 次独立的试验来寻找最佳的超参数组合。
834-
6. `n_jobs: 1`这设置了可以并行运行的试验数量。值为 1 意味着试验将依次执行,而不是并行。如果你的系统有多个 CPU 核心,并且希望并行化以加速搜索过程,可以将这个值设置为更高的数字或 -1(表示使用所有可用的 CPU 核心)。
835+
6. `n_jobs: 1`这设置了可并行运行的试验数量。值为 1 表示试验将顺序执行,而不是并行。如果你的系统有多个 CPU 核心,并且希望并行化以加速搜索过程,可以将这个值设置为更高的数字或 -1(表示使用所有可用的 CPU 核心)。
835836
7. `params:`: 这一节定义了要优化的超参数以及它们的搜索空间。
836837
8. `MODEL.num_layers: choice(2, 3, 4, 5, 6, 7)`:这指定了模型层数的可选值。choice 函数表示 Optuna 在 2, 3, 4, 5, 6, 和 7 中随机选择一个值。
837838
9. `TRAIN.lr_scheduler.learning_rate: interval(0.0001, 0.005)`:这指定了学习率的搜索范围。interval 表示学习率的值将在 0.0001 和 0.005 之间均匀分布地选择。
@@ -895,7 +896,7 @@ best_value: 0.02460772916674614
895896
896897
#### 2.2.1 数据并行
897898
898-
接下来以 `examples/pipe/poiseuille_flow.py` 为例,介绍如何正确使用 PaddleScience 的数据并行功能。分布式训练细节可以参考:[Paddle-使用指南-分布式训练-快速开始-数据并行](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/06_distributed_training/cluster_quick_start_collective_cn.html)。
899+
接下来以 `examples/pipe/poiseuille_flow.py` 为例,介绍如何正确使用 PaddleScience 的数据并行功能进行训练。分布式训练细节可以参考:[Paddle-使用指南-分布式训练-快速开始-数据并行](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/06_distributed_training/cluster_quick_start_collective_cn.html)。
899900
900901
1. 在 constraint 实例化完毕后,将 `ITERS_PER_EPOCH` 重新赋值为经过自动多卡数据切分后的 `dataloader` 的长度(一般情况下其长度等于单卡 dataloader 的长度除以卡数,向上取整),如代码中高亮行所示。
901902
@@ -923,8 +924,8 @@ best_value: 0.02460772916674614
923924
924925
# wrap constraints together
925926
constraint = {pde_constraint.name: pde_constraint}
926-
927-
EPOCHS = 3000 if not args.epochs else args.epochs
927+
...
928+
...
928929
```
929930
930931
2. 使用分布式训练命令启动训练,以 4 卡数据并行训练为例

examples/phycrnet/main.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,16 @@
22
PhyCRNet for solving spatiotemporal PDEs
33
Reference: https://github.com/isds-neu/PhyCRNet/
44
"""
5-
from os import path as osp
6-
75
import functions
86
import hydra
97
import paddle
108
import scipy.io as scio
119
from omegaconf import DictConfig
1210

1311
import ppsci
14-
from ppsci.utils import logger
1512

1613

1714
def train(cfg: DictConfig):
18-
# set random seed for reproducibility
19-
ppsci.utils.misc.set_random_seed(cfg.seed)
20-
# initialize logger
21-
logger.init_logger("ppsci", osp.join(cfg.output_dir, f"{cfg.mode}.log"), "info")
22-
2315
# set initial states for convlstm
2416
NUM_CONVLSTM = cfg.num_convlstm
2517
(h0, c0) = (paddle.randn((1, 128, 16, 16)), paddle.randn((1, 128, 16, 16)))
@@ -79,6 +71,7 @@ def _transform_out(_in, _out):
7971
},
8072
"batch_size": 1,
8173
"num_workers": 0,
74+
"auto_collation": True,
8275
},
8376
ppsci.loss.FunctionalLoss(functions.train_loss_func),
8477
{
@@ -97,6 +90,7 @@ def _transform_out(_in, _out):
9790
},
9891
"batch_size": 1,
9992
"num_workers": 0,
93+
"auto_collation": True,
10094
},
10195
ppsci.loss.FunctionalLoss(functions.val_loss_func),
10296
{
@@ -107,10 +101,11 @@ def _transform_out(_in, _out):
107101
)
108102
validator_pde = {sup_validator_pde.name: sup_validator_pde}
109103

110-
# initialize solver
104+
# initialize optimizer & scheduler
111105
scheduler = ppsci.optimizer.lr_scheduler.Step(**cfg.TRAIN.lr_scheduler)()
112-
113106
optimizer = ppsci.optimizer.Adam(scheduler)(model)
107+
108+
# initialize solver
114109
solver = ppsci.solver.Solver(
115110
model,
116111
constraint_pde,
@@ -132,11 +127,6 @@ def _transform_out(_in, _out):
132127

133128

134129
def evaluate(cfg: DictConfig):
135-
# set random seed for reproducibility
136-
ppsci.utils.misc.set_random_seed(cfg.seed)
137-
# initialize logger
138-
logger.init_logger("ppsci", osp.join(cfg.output_dir, f"{cfg.mode}.log"), "info")
139-
140130
# set initial states for convlstm
141131
NUM_CONVLSTM = cfg.num_convlstm
142132
(h0, c0) = (paddle.randn((1, 128, 16, 16)), paddle.randn((1, 128, 16, 16)))

ppsci/externals/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"neuraloperator",
88
"open3d",
99
"paddle_harmonics",
10+
"paddle_scatter",
1011
"tensorly",
1112
"warp",
1213
]

0 commit comments

Comments
 (0)