@@ -169,7 +169,7 @@ PaddleScience/examples/bracket/outputs_bracket/
169
169
170
170
1. 加载 ` * .pdparams` 文件内的参数到模型中
171
171
172
- ` ` ` py
172
+ ` ` ` py hl_lines= " 9 10 "
173
173
import ppsci
174
174
import numpy as np
175
175
@@ -186,7 +186,7 @@ PaddleScience/examples/bracket/outputs_bracket/
186
186
187
187
2 . 准备好用于预测的输入数据,并以字典 `dict` 的方式传递给 `solver.predict`。
188
188
189
- ``` py
189
+ ``` py hl_lines=" 12 13 14 15 16 "
190
190
N = 100 # 假设要预测100 个样本的结果
191
191
x = np.random.randn(N, 1 ) # 准备 字段
192
192
y = np.random.randn(N, 1 )
@@ -224,7 +224,7 @@ PaddleScience/examples/bracket/outputs_bracket/
224
224
225
225
因此我们只需要在 `Solver` 时指定 `checkpoint_path` 参数为 `latest.*` 的所在路径,即可自动载入上述的几个文件,并从 `latest` 中记录的 epoch 开始继续训练。
226
226
227
- ``` py hl_lines="9 "
227
+ ``` py hl_lines="7 "
228
228
import ppsci
229
229
230
230
...
@@ -241,19 +241,35 @@ solver = ppsci.solver.Solver(
241
241
242
242
### 1 .4 迁移学习
243
243
244
- 迁移学习是一种广泛使用、低成本提高模型精度的训练方式。在 PaddleScience 中,只需在 `model` 实例化完毕之后,手动为其载入预训练模型权重,即可进行迁移学习 。
244
+ 迁移学习是一种广泛使用、低成本提高模型精度的训练方式。在 PaddleScience 中,可以通过在 `model` 实例化完毕之后,手动为其载入预训练模型权重;也可以在 `Solver` 实例化时指定 `pretrained_model_path` 自动载入预训练模型权重,两种方式都可以进行迁移学习 。
245
245
246
- ``` py hl_lines="9 "
247
- import ppsci
248
- import ppsci.utils
249
- from ppsci.utils import save_load
246
+ === "手动载入预训练模型"
250
247
251
- ...
252
- ...
248
+ ``` py hl_lines="8 "
249
+ import ppsci
250
+ from ppsci.utils import save_load
253
251
254
- model = ...
255
- save_load.load_pretrain(model, "/path/to/pretrain")
256
- ```
252
+ ...
253
+ ...
254
+
255
+ model = ...
256
+ save_load.load_pretrain(model, "/path/to/pretrain")
257
+ ```
258
+
259
+ === "指定 `pretrained_model_path` 自动载入预训练模型"
260
+
261
+ ``` py hl_lines="9 "
262
+ import ppsci
263
+
264
+ ...
265
+ ...
266
+
267
+ model = ...
268
+ solver = ppsci.solver.Solver(
269
+ ...,
270
+ pretrained_model_path="/path/to/pretrain",
271
+ )
272
+ ```
257
273
258
274
!!! info "迁移学习建议"
259
275
@@ -278,7 +294,42 @@ solver = ppsci.solver.Solver(
278
294
solver.eval()
279
295
```
280
296
281
- ### 1 .6 使用 WandB 记录实验
297
+ ### 1 .6 使用 VisualDL 记录实验
298
+
299
+ [VisualDL](https://www.paddlepaddle.org.cn/paddle/visualdl) 是飞桨推出的可视化分析工具,以丰富的图表呈现训练参数变化趋势、数据样本、模型结构、PR曲线、ROC曲线、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
300
+
301
+ PaddleScience 支持使用 VisualDL 记录训练过程中的基础实验数据,包括 train/eval loss,eval metric,learning rate 等基本信息,可按如下步骤使用该功能。
302
+
303
+ 1 . 安装 VisualDL
304
+
305
+ ``` sh
306
+ pip install -U visualdl
307
+ ```
308
+
309
+ 2 . 在案例代码的 `Solver` 实例化时指定 `use_visualdl=True`,然后再启动案例训练
310
+
311
+ ``` py hl_lines="3 "
312
+ solver = ppsci.solver.Solver(
313
+ ...,
314
+ use_visualdl=True,
315
+ )
316
+ ```
317
+
318
+ 3 . 可视化记录数据
319
+
320
+ 根据上述步骤,在训练时 VisualDL 会自动记录数据并保存到 `${solver.output_dir} / vdl` 的目录中。`vdl` 所在路径在实例化 `Solver` 时,会自动打印在终端中,如下所示。
321
+
322
+ ``` log hl_lines="3 "
323
+ Please NOTE: device: 0 , GPU Compute Capability: 7 .0 , Driver API Version: 11 .8 , Runtime API Version: 11 .6
324
+ device: 0 , cuDNN Version: 8 .4 .
325
+ ppsci INFO: VisualDL tool enabled for logging, you can view it by running: 'visualdl --logdir outputs_darcy2 d/2023 -10 -08 /10 -00 -00 /TRAIN.epochs=400 /vdl --port 8080 '.
326
+ ```
327
+
328
+ 在终端里输入上述可视化命令,并用浏览器进入 VisualDL 给出的可视化地址,即可在浏览器内查看记录的数据,如下图所示。
329
+
330
+ 
331
+
332
+ ### 1 .7 使用 WandB 记录实验
282
333
283
334
[WandB](https://wandb.ai/) 是一个第三方实验记录工具,能在记录实验数据的同时将数据上传到其用户的私人账户上,防止实验记录丢失。
284
335
@@ -331,7 +382,7 @@ PaddleScience 支持使用 WandB 记录基本的实验数据,包括 train/eval
331
382
332
383
接下来以 `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)。
333
384
334
- 1 . 在 constraint 实例化完毕后,将 `ITERS_PER_EPOCH` 重新赋值为经过自动多卡数据切分后的 `dataloader` 的长度(一般情况下其长度等于单卡 dataloader 的长度除以卡数,向上取整),如代码中黄色高亮行所示 。
385
+ 1 . 在 constraint 实例化完毕后,将 `ITERS_PER_EPOCH` 重新赋值为经过自动多卡数据切分后的 `dataloader` 的长度(一般情况下其长度等于单卡 dataloader 的长度除以卡数,向上取整),如代码中高亮行所示 。
335
386
336
387
``` py linenums="146 " title="examples/pipe/poiseuille_flow.py" hl_lines="22 "
337
388
ITERS_PER_EPOCH = int((N_x * N_y * N_p) / BATCH_SIZE)
@@ -379,7 +430,7 @@ TODO -->
379
430
380
431
接下来介绍如何正确使用 PaddleScience 的自动混合精度功能。自动混合精度的原理可以参考:[Paddle-使用指南-性能调优-自动混合精度训练(AMP)](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/performance_improving/amp_cn.html#amp)。
381
432
382
- 实例化 `Solver` 时加上 2 个参数: `use_amp=True`, `amp_level="O1 "`(或`amp_level="O2 "`)。如代码中黄色高亮行所示 ,通过指定 `use_amp=True`,开启自动混合精度功能,接着再设置 `amp_level="O1 "`,指定混合精度所用的模式,`O1 ` 为自动混合精度,`O2 ` 为更激进的纯 fp16 训练模式,一般推荐使用 `O1 `。
433
+ 实例化 `Solver` 时加上 2 个参数: `use_amp=True`, `amp_level="O1 "`(或`amp_level="O2 "`)。如代码中高亮行所示 ,通过指定 `use_amp=True`,开启自动混合精度功能,接着再设置 `amp_level="O1 "`,指定混合精度所用的模式,`O1 ` 为自动混合精度,`O2 ` 为更激进的纯 fp16 训练模式,一般推荐使用 `O1 `。
383
434
384
435
``` py hl_lines="5 6 "
385
436
# initialize solver
@@ -395,7 +446,7 @@ solver = ppsci.solver.Solver(
395
446
396
447
接下来介绍如何正确使用 PaddleScience 的梯度累加功能。梯度累加的原理可以参考:[Paddle-使用指南-性能调优-自动混合精度训练(AMP)-动态图下使用梯度累加](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/performance_improving/amp_cn.html#dongtaituxiashiyongtiduleijia)。
397
448
398
- 实例化 `Solver` 时指定 `update_freq` 参数为大于 1 的正整数即可。如代码中黄色高亮行所示 ,`update_freq` 可以设置为 2 或者更大的整数,推荐使用 2 、4 、8 ,此时对于训练任务来说,全局 `batch size` 等价于 `update_freq * batch size`。梯度累加方法在大多数场景中能够让间接地扩大每个 batch 内的样本数量,从而让每个 batch 分布更接近真实数据分布,提升训练任务的性能。
449
+ 实例化 `Solver` 时指定 `update_freq` 参数为大于 1 的正整数即可。如代码中高亮行所示 ,`update_freq` 可以设置为 2 或者更大的整数,推荐使用 2 、4 、8 ,此时对于训练任务来说,全局 `batch size` 等价于 `update_freq * batch size`。梯度累加方法在大多数场景中能够让间接地扩大每个 batch 内的样本数量,从而让每个 batch 分布更接近真实数据分布,提升训练任务的性能。
399
450
400
451
``` py hl_lines="5 "
401
452
# initialize solver
0 commit comments