Skip to content

Commit 729b4e9

Browse files
[Doc] Fix description for mkldnn (#837)
* fix description for mkldnn * merge 3 visualization chapter into one chapter * initialize loss with first constraint loss instead of 0.0, and change random seed of euler_beam for better l2error * update euler_beam doc * fix return type of PDE.set_state_dict
1 parent 8d1fd01 commit 729b4e9

File tree

6 files changed

+116
-131
lines changed

6 files changed

+116
-131
lines changed

docs/zh/examples/euler_beam.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
| 预训练模型 | 指标 |
2828
|:--| :--|
29-
| [euler_beam_pretrained.pdparams](https://paddle-org.bj.bcebos.com/paddlescience/models/euler_beam/euler_beam_pretrained.pdparams) | loss(L2Rel_Metric): 0.00000<br>L2Rel.u(L2Rel_Metric): 0.00080 |
29+
| [euler_beam_pretrained.pdparams](https://paddle-org.bj.bcebos.com/paddlescience/models/euler_beam/euler_beam_pretrained.pdparams) | loss(L2Rel_Metric): 0.00000<br>L2Rel.u(L2Rel_Metric): 0.00058 |
3030

3131
## 1. 问题定义
3232

@@ -70,17 +70,17 @@ $$
7070

7171
上式中 $f$ 即为 MLP 模型本身,用 PaddleScience 代码表示如下
7272

73-
``` py linenums="36"
73+
``` py linenums="24"
7474
--8<--
75-
examples/euler_beam/euler_beam.py:36:37
75+
examples/euler_beam/euler_beam.py:24:25
7676
--8<--
7777
```
7878

7979
其中,用于初始化模型的参数通过配置文件进行配置:
8080

81-
``` yaml linenums="34"
81+
``` yaml linenums="38"
8282
--8<--
83-
examples/euler_beam/conf/euler_beam.yaml:34:38
83+
examples/euler_beam/conf/euler_beam.yaml:38:43
8484
--8<--
8585
```
8686

@@ -90,9 +90,9 @@ examples/euler_beam/conf/euler_beam.yaml:34:38
9090

9191
Euler Beam 的方程构建可以直接使用 PaddleScience 内置的 `Biharmonic`,指定该类的参数 `dim` 为 1,`q` 为 -1,`D` 为1。
9292

93-
``` py linenums="42"
93+
``` py linenums="30"
9494
--8<--
95-
examples/euler_beam/euler_beam.py:42:43
95+
examples/euler_beam/euler_beam.py:30:31
9696
--8<--
9797
```
9898

@@ -101,9 +101,9 @@ examples/euler_beam/euler_beam.py:42:43
101101
本文中 Euler Beam 问题作用在以 (0.0, 1.0) 的一维区域上,
102102
因此可以直接使用 PaddleScience 内置的空间几何 `Interval` 作为计算域。
103103

104-
``` py linenums="39"
104+
``` py linenums="27"
105105
--8<--
106-
examples/euler_beam/euler_beam.py:39:40
106+
examples/euler_beam/euler_beam.py:27:28
107107
--8<--
108108
```
109109

@@ -113,59 +113,59 @@ examples/euler_beam/euler_beam.py:39:40
113113

114114
在定义约束之前,需要给每一种约束指定采样点个数,表示每一种约束在其对应计算域内采样数据的数量,以及通用的采样配置。
115115

116-
``` yaml linenums="49"
116+
``` yaml linenums="45"
117117
--8<--
118-
examples/euler_beam/conf/euler_beam.yaml:49:50
118+
examples/euler_beam/conf/euler_beam.yaml:45:55
119119
--8<--
120120
```
121121

122122
#### 2.4.1 内部点约束
123123

124124
以作用在内部点上的 `InteriorConstraint` 为例,代码如下:
125125

126-
``` py linenums="51"
126+
``` py linenums="33"
127127
--8<--
128-
examples/euler_beam/euler_beam.py:51:59
128+
examples/euler_beam/euler_beam.py:33:47
129129
--8<--
130130
```
131131

132132
#### 2.4.2 边界约束
133133

134134
同理,我们还需要构建边界的约束。但与构建 `InteriorConstraint` 约束不同的是,由于作用区域是边界,因此我们使用 `BoundaryConstraint` 类,代码如下:
135135

136-
``` py linenums="60"
136+
``` py linenums="48"
137137
--8<--
138-
examples/euler_beam/euler_beam.py:60:73
138+
examples/euler_beam/euler_beam.py:48:61
139139
--8<--
140140
```
141141

142142
### 2.5 超参数设定
143143

144144
接下来我们需要在配置文件中指定训练轮数,此处我们按实验经验,使用一万轮训练轮数,评估间隔为一千轮。
145145

146-
``` yaml linenums="41"
146+
``` yaml linenums="45"
147147
--8<--
148-
examples/euler_beam/conf/euler_beam.yaml:41:52
148+
examples/euler_beam/conf/euler_beam.yaml:45:51
149149
--8<--
150150
```
151151

152152
### 2.6 优化器构建
153153

154154
训练过程会调用优化器来更新模型参数,此处选择较为常用的 `Adam` 优化器。
155155

156-
``` py linenums="80"
156+
``` py linenums="68"
157157
--8<--
158-
examples/euler_beam/euler_beam.py:80:81
158+
examples/euler_beam/euler_beam.py:68:69
159159
--8<--
160160
```
161161

162162
### 2.7 评估器构建
163163

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

166-
``` py linenums="89"
166+
``` py linenums="77"
167167
--8<--
168-
examples/euler_beam/euler_beam.py:89:102
168+
examples/euler_beam/euler_beam.py:77:90
169169
--8<--
170170
```
171171

@@ -175,19 +175,19 @@ examples/euler_beam/euler_beam.py:89:102
175175

176176
本文中的输出数据是一个曲线图,因此我们只需要将评估的输出数据保存成 **png** 文件即可。代码如下:
177177

178-
``` py linenums="104"
178+
``` py linenums="92"
179179
--8<--
180-
examples/euler_beam/euler_beam.py:104:114
180+
examples/euler_beam/euler_beam.py:92:105
181181
--8<--
182182
```
183183

184184
### 2.9 模型训练、评估与可视化
185185

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

188-
``` py linenums="117"
188+
``` py linenums="107"
189189
--8<--
190-
examples/euler_beam/euler_beam.py:117:141
190+
examples/euler_beam/euler_beam.py:107:132
191191
--8<--
192192
```
193193

docs/zh/user_guide.md

Lines changed: 84 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -366,9 +366,9 @@ PaddleScience 提供了多种推理配置组合,可通过命令行进行组合
366366
367367
| | Native | ONNX | TensorRT | MKLDNN |
368368
| :--- | :--- | :--- | :--- | :--- |
369-
| CPU | ✅ | ✅| - | ✅ |
370-
| GPU | ✅ | ✅ | ✅ | - |
371-
| XPU | TODO | - | - | - |
369+
| CPU | ✅ | ✅| / | ✅ |
370+
| GPU | ✅ | ✅ | ✅ | / |
371+
| XPU | TODO | / | / | / |
372372
373373
接下来以 aneurysm 案例和 Linux x86_64 + TensorRT 8.6 GA + CUDA 11.6 软硬件环境为例,介绍如何使用不同的推理配置。
374374
@@ -447,7 +447,7 @@ PaddleScience 提供了多种推理配置组合,可通过命令行进行组合
447447
448448
=== "使用 MKLDNN 推理"
449449
450-
MDLDNN 是英伟达推出的高性能推理引擎,适用于 CPU 推理加速,PaddleScience 支持了 MKLDNN 推理功能。
450+
MKLDNN 是英伟达推出的高性能推理引擎,适用于 CPU 推理加速,PaddleScience 支持了 MKLDNN 推理功能。
451451
452452
运行以下命令进行推理:
453453
@@ -561,124 +561,124 @@ solver.eval()
561561
562562
### 1.7 实验过程可视化
563563
564-
#### 1.7.1 TensorBoardX
564+
=== "TensorBoardX"
565565
566-
[TensorBoardX](https://github.com/lanpa/tensorboardX) 是基于 TensorBoard 编写可视化分析工具,以丰富的图表呈现训练参数变化趋势、数据样本、模型结构、PR曲线、ROC曲线、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
566+
[TensorBoardX](https://github.com/lanpa/tensorboardX) 是基于 TensorBoard 编写可视化分析工具,以丰富的图表呈现训练参数变化趋势、数据样本、模型结构、PR曲线、ROC曲线、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
567567
568-
PaddleScience 支持使用 TensorBoardX 记录训练过程中的基础实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能。
568+
PaddleScience 支持使用 TensorBoardX 记录训练过程中的基础实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能。
569569
570-
1. 安装 Tensorboard 和 TensorBoardX
570+
1. 安装 Tensorboard 和 TensorBoardX
571571
572-
``` sh
573-
pip install tensorboard tensorboardX
574-
```
572+
``` sh
573+
pip install tensorboard tensorboardX
574+
```
575575
576-
2. 在案例代码的 `Solver` 实例化时指定 `use_tbd=True`,然后再启动案例训练
576+
2. 在案例代码的 `Solver` 实例化时指定 `use_tbd=True`,然后再启动案例训练
577577
578-
``` py hl_lines="3"
579-
solver = ppsci.solver.Solver(
580-
...,
581-
use_tbd=True,
582-
)
583-
```
578+
``` py hl_lines="3"
579+
solver = ppsci.solver.Solver(
580+
...,
581+
use_tbd=True,
582+
)
583+
```
584584
585-
3. 可视化记录数据
585+
3. 可视化记录数据
586586
587-
根据上述步骤,在训练时 TensorBoardX 会自动记录数据并保存到 `${solver.output_dir}/tensorboard` 目录下,具体所在路径在实例化 `Solver` 时,会自动打印在终端中,如下所示。
587+
根据上述步骤,在训练时 TensorBoardX 会自动记录数据并保存到 `${solver.output_dir}/tensorboard` 目录下,具体所在路径在实例化 `Solver` 时,会自动打印在终端中,如下所示。
588588
589-
``` log hl_lines="3" hl_lines="2"
590-
ppsci MESSAGE: TensorboardX tool is enabled for logging, you can view it by running:
591-
tensorboard --logdir outputs_VIV/2024-01-01/08-00-00/tensorboard
592-
```
589+
``` log hl_lines="3" hl_lines="2"
590+
ppsci MESSAGE: TensorboardX tool is enabled for logging, you can view it by running:
591+
tensorboard --logdir outputs_VIV/2024-01-01/08-00-00/tensorboard
592+
```
593593
594-
!!! tip
594+
!!! tip
595595
596-
也可以输入 `tensorboard --logdir ./outputs_VIV`,一次性在网页上展示 `outputs_VIV` 目录下所有训练记录,便于对比。
596+
也可以输入 `tensorboard --logdir ./outputs_VIV`,一次性在网页上展示 `outputs_VIV` 目录下所有训练记录,便于对比。
597597
598-
在终端里输入上述可视化命令,并用浏览器进入 TensorBoardX 给出的可视化地址,即可在浏览器内查看记录的数据,如下图所示。
598+
在终端里输入上述可视化命令,并用浏览器进入 TensorBoardX 给出的可视化地址,即可在浏览器内查看记录的数据,如下图所示。
599599
600-
![tensorboardx_preview](https://paddle-org.bj.bcebos.com/paddlescience/docs/user_guide/tensorboardx_preview.JPG)
600+
![tensorboardx_preview](https://paddle-org.bj.bcebos.com/paddlescience/docs/user_guide/tensorboardx_preview.JPG)
601601
602-
#### 1.7.2 VisualDL
602+
=== "VisualDL"
603603
604-
[VisualDL](https://www.paddlepaddle.org.cn/paddle/visualdl) 是飞桨推出的可视化分析工具,以丰富的图表呈现训练参数变化趋势、数据样本、模型结构、PR曲线、ROC曲线、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
604+
[VisualDL](https://www.paddlepaddle.org.cn/paddle/visualdl) 是飞桨推出的可视化分析工具,以丰富的图表呈现训练参数变化趋势、数据样本、模型结构、PR曲线、ROC曲线、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
605605
606-
PaddleScience 支持使用 VisualDL 记录训练过程中的基础实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能。
606+
PaddleScience 支持使用 VisualDL 记录训练过程中的基础实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能。
607607
608-
1. 安装 VisualDL
608+
1. 安装 VisualDL
609609
610-
``` sh
611-
pip install -U visualdl
612-
```
610+
``` sh
611+
pip install -U visualdl
612+
```
613613
614-
2. 在案例代码的 `Solver` 实例化时指定 `use_vdl=True`,然后再启动案例训练
614+
2. 在案例代码的 `Solver` 实例化时指定 `use_vdl=True`,然后再启动案例训练
615615
616-
``` py hl_lines="3"
617-
solver = ppsci.solver.Solver(
618-
...,
619-
use_vdl=True,
620-
)
621-
```
616+
``` py hl_lines="3"
617+
solver = ppsci.solver.Solver(
618+
...,
619+
use_vdl=True,
620+
)
621+
```
622622
623-
3. 可视化记录数据
623+
3. 可视化记录数据
624624
625-
根据上述步骤,在训练时 VisualDL 会自动记录数据并保存到 `${solver.output_dir}/vdl` 目录下,具体所在路径在实例化 `Solver` 时,会自动打印在终端中,如下所示。
625+
根据上述步骤,在训练时 VisualDL 会自动记录数据并保存到 `${solver.output_dir}/vdl` 目录下,具体所在路径在实例化 `Solver` 时,会自动打印在终端中,如下所示。
626626
627-
``` log hl_lines="4"
628-
Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.8, Runtime API Version: 11.6
629-
device: 0, cuDNN Version: 8.4.
630-
ppsci INFO: VisualDL tool enabled for logging, you can view it by running:
631-
visualdl --logdir outputs_darcy2d/2023-10-08/10-00-00/TRAIN.epochs=400/vdl --port 8080
632-
```
627+
``` log hl_lines="4"
628+
Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.8, Runtime API Version: 11.6
629+
device: 0, cuDNN Version: 8.4.
630+
ppsci INFO: VisualDL tool enabled for logging, you can view it by running:
631+
visualdl --logdir outputs_darcy2d/2023-10-08/10-00-00/TRAIN.epochs=400/vdl --port 8080
632+
```
633633
634-
在终端里输入上述可视化命令,并用浏览器进入 VisualDL 给出的可视化地址,即可在浏览器内查看记录的数据,如下图所示。
634+
在终端里输入上述可视化命令,并用浏览器进入 VisualDL 给出的可视化地址,即可在浏览器内查看记录的数据,如下图所示。
635635
636-
![visualdl_record](https://paddle-org.bj.bcebos.com/paddlescience/docs/user_guide/VisualDL_preview.png)
636+
![visualdl_record](https://paddle-org.bj.bcebos.com/paddlescience/docs/user_guide/VisualDL_preview.png)
637637
638-
#### 1.7.3 WandB
638+
=== "WandB"
639639
640-
[WandB](https://wandb.ai/) 是一个第三方实验记录工具,能在记录实验数据的同时将数据上传到其用户的私人账户上,防止实验记录丢失。
640+
[WandB](https://wandb.ai/) 是一个第三方实验记录工具,能在记录实验数据的同时将数据上传到用户的私人账户上,防止实验记录丢失。
641641
642-
PaddleScience 支持使用 WandB 记录基本的实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能
642+
PaddleScience 支持使用 WandB 记录基本的实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能
643643
644-
1. 安装 wandb
644+
1. 安装 wandb
645645
646-
``` sh
647-
pip install wandb
648-
```
646+
``` sh
647+
pip install wandb
648+
```
649649
650-
2. 注册 wandb 并在终端登录
650+
2. 注册 wandb 并在终端登录
651651
652-
``` sh
653-
# 登录 wandb 获取 API key
654-
wandb login
655-
# 根据 login 提示,输入 API key 并回车确认
656-
```
652+
``` sh
653+
# 登录 wandb 获取 API key
654+
wandb login
655+
# 根据 login 提示,输入 API key 并回车确认
656+
```
657657
658-
3. 在案例中开启 wandb
658+
3. 在案例中开启 wandb
659659
660-
``` py hl_lines="3 4 5 6 7 8"
661-
solver = ppsci.solver.Solver(
662-
...,
663-
use_wandb=True,
664-
wandb_config={
665-
"project": "PaddleScience",
666-
"name": "Laplace2D",
667-
"dir": OUTPUT_DIR,
668-
},
669-
...
670-
)
671-
solver.train()
672-
```
660+
``` py hl_lines="3 4 5 6 7 8"
661+
solver = ppsci.solver.Solver(
662+
...,
663+
use_wandb=True,
664+
wandb_config={
665+
"project": "PaddleScience",
666+
"name": "Laplace2D",
667+
"dir": OUTPUT_DIR,
668+
},
669+
...
670+
)
671+
solver.train()
672+
```
673673
674-
如上述代码所示,指定 `use_wandb=True`,并且设置 `wandb_config` 配置字典中的 `project`、`name`、`dir` 三个字段,然后启动训练即可。训练过程会实时上传记录数据至 wandb 服务器,训练结束后可以进入终端打印的预览地址在网页端查看完整训练记录曲线。
674+
如上述代码所示,指定 `use_wandb=True`,并且设置 `wandb_config` 配置字典中的 `project`、`name`、`dir` 三个字段,然后启动训练即可。训练过程会实时上传记录数据至 wandb 服务器,训练结束后可以进入终端打印的预览地址在网页端查看完整训练记录曲线。
675675
676-
!!! warning "注意"
676+
!!! warning "注意"
677677
678-
由于每次调用 `wandb.log` 会使得其自带的计数器 `Step` 自增 1,因此在 wandb 的网站上查看训练记录时,需要手动更改 x 轴的单位为 `step`(全小写),如下所示。
678+
由于每次调用 `wandb.log` 会使得其自带的计数器 `Step` 自增 1,因此在 wandb 的网站上查看训练记录时,需要手动更改 x 轴的单位为 `step`(全小写),如下所示。
679679
680-
否则默认单位为 wandb 自带的 `Step` (S大写) 字段,会导致显示步数比实际步数多几倍。
681-
![wandb_step settings](../images/overview/wandb_step.JPG)
680+
否则默认单位为 wandb 自带的 `Step` (S大写) 字段,会导致显示步数比实际步数多几倍。
681+
![wandb_step settings](../images/overview/wandb_step.JPG)
682682
683683
## 2. 进阶功能
684684

examples/euler_beam/conf/euler_beam.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ hydra:
1616
- mode
1717
- output_dir
1818
- log_freq
19+
callbacks:
20+
init_callback:
21+
_target_: ppsci.utils.callbacks.InitCallback
1922
sweep:
2023
# output directory for multirun
2124
dir: ${hydra.run.dir}

0 commit comments

Comments
 (0)