-
Notifications
You must be signed in to change notification settings - Fork 165
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
【快乐开源】为 PaddleScience 案例添加 export 和 inference 功能 #788
Labels
HappyOpenSource
快乐开源活动issue与PR
Comments
【报名】:29 |
【报名】:3 |
【报名】:4 |
【报名】:5 |
【报名】:6 |
【报名】:7 |
【报名】:23 |
【报名】:25 |
【报名】:24 |
【报名】:22 |
【报名】:15-16 |
【报名】:31 |
【报名】:11-12 |
【报名】:21 |
【报名】:9 |
【报名】:20 |
【报名】:30 |
【报名】:26-27 |
This was referenced May 12, 2024
【报名】:13 |
【报名】:1、14 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
以下是待添加模型导出和python推理功能的案例列表:
deephpms/kuramoto_sivashinsky.py
deephpms/navier_stokes.py
deephpms/schrodinger.py
@HydrogenSulfate #901
@essos-bot
phygeonet/heat_equation_with_bc.py
fourcastnet/train_precip.py
fourcastnet/train_finetune.py
认领方式
请大家以 comment 的形式认领任务,如:
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
PR 提交格式:在 PR 的标题中以 【PPSCI Export&Infer No.】 开头,注明任务编号
看板信息
统计信息
1. 背景
PaddleScience 套件为现有的 30+ 模型支持了一键训练、一键测试功能,但通过模型导出和python推理功能才能使得每个案例可以快速部署在各种设备上。
2. 收益
学习模型导出和python推理的基本流程,为案例代码添加模型导出和python推理功能
3. 开发流程
3.1 安装 PaddleScience
3.2 代码开发
以为 aneurysm 案例添加模型导出和 python 推理函数为例
参考
train/eval
函数,以同样的方式实例化一个网络模型model
,如果实例化一个
solver
,传入model
、预训练模型路径变量cfg.INFER.pretrained_model_path
(该路径设置为案例文档开头“模型评估命令”的EVAL.pretrained_model_path
后的url值即可,如下所示)根据
model
的forwrad
函数接受的输入格式,构造同样格式的input_spec
。aneurysm 的输入格式为{"x": Tensor, "y": Tensor, "z": Tensor}
,因此构造的input_spec
为:{"x": InputSpec([None, 1], "float32", name="x"), "y": InputSpec([None, 1], "float32", name="y"), "z": InputSpec([None, 1], "float32", name="z")}
调用
solver.export
导出模型至cfg.INFER.export_path
路径下,导出成功后会打印:Inference model has been exported to: ./inference/aneurysm, including *.pdmodel, *.pdiparams and *.pdiparams.info files.
至此模型导出函数export就完成了。接下来介绍如何撰写 python 推理代码
inference
函数predictor
,因为 aneurysm 的输入都是形状为[batch_size, channels]
的Tensor,因此使用导入pinn_predictor
即可;如果输入形状语义或者组织结构与之不同,则需要参照deploy/python_infer/pinn_predictor.py
的PINNPredictor
,写一个对应的XXXPredictor
,再导入使用cfg
为参数,实例化predictor
eval
函数,构造输入数据input_dict
predictor.predict
接受输入数据并推理得到输出output_dict
model
的输出名字不同,因此需要将输出output_dict
的键重新映射回正确的键上eval
函数,用保存/打印等方式记录推理输出output_dict
运行结果如下所示
如果在模型导出/推理时需要额外的超参数,则可以将这些超参数添加到案例对应 YAML 文件的
INFER
字段下,参考:https://github.com/PaddlePaddle/PaddleScience/pull/786/files#diff-1c33a8b95e9d0c72395763d5c906936652654533714e23211e2e2bb204d379f3R50-R553.3 文档添加 export&inference 运行命令
按照 3. 编写文档教程,安装文档渲染插件并渲染文档,用网页打开文档预览链接。
以
aneurysm.md
文档为例,添加红框内两处文本即可添加后文档渲染结果如下所示
3.4 整理代码并提交PR
参考 PaddleScience文档-贡献指南-整理代码并提交
4. 参考资料
The text was updated successfully, but these errors were encountered: