多硬件支持¶
飞桨生态的繁荣离不开开发者和用户的贡献,我们非常欢迎为飞桨的多硬件适配贡献更多的模型。
1. 硬件支持列表¶
当前 PaddleScience 中对于各硬件适配模型的列表汇总如下(不包含仅在 AIStudio 上的案例)
| 问题类型 | 案例名称 | NVIDIA | 海光 | 太初 | 沐曦 |
|---|---|---|---|---|---|
| 亥姆霍兹方程 | SPINN(Helmholtz3D) | ✅ | ✅ | ✅ | |
| 相场方程 | Allen-Cahn | ✅ | ✅ | ||
| 微分方程 | 拉普拉斯方程 | ✅ | ✅ | ✅ | |
| 微分方程 | 伯格斯方程 | ✅ | ✅ | ||
| 微分方程 | 非线性偏微分方程 | ✅ | ✅ | ||
| 微分方程 | 洛伦兹方程 | ✅ | ✅ | ✅ | |
| 微分方程 | 若斯叻方程 | ✅ | ✅ | ✅ | |
| 算子学习 | DeepONet | ✅ | ✅ | ✅ | |
| 积分方程 | 沃尔泰拉积分方程 | ✅ | ✅ | ✅ | |
| 光纤怪波 | Optical rogue wave | ✅ | ✅ | ✅ | |
| 域分解 | XPINN | ✅ | ✅ | ✅ | |
| 布鲁塞尔扩散系统 | 3D-Brusselator | ✅ | |||
| 符号回归 | Transformer4SR | ✅ |
| 问题类型 | 案例名称 | NVIDIA | 海光 | 太初 | 沐曦 |
|---|---|---|---|---|---|
| 汽车表面阻力预测 | DrivAerNet | ✅ | ✅ | ||
| 一维线性对流问题 | 1D 线性对流 | ✅ | ✅ | ||
| 非定常不可压流体 | 2D 方腔浮力驱动流 | ✅ | ✅ | ||
| 定常不可压流体 | Re3200 2D 定常方腔流 | ✅ | ✅ | ||
| 定常不可压流体 | 2D 达西流 | ✅ | ✅ | ✅ | |
| 定常不可压流体 | 2D 管道流 | ✅ | ✅ | ||
| 定常不可压流体 | 3D 颅内动脉瘤 | ✅ | ✅ | ||
| 定常不可压流体 | 任意 2D 几何体绕流 | ✅ | ✅ | ✅ | |
| 非定常不可压流体 | 2D 非定常方腔流 | ✅ | ✅ | ✅ | |
| 非定常不可压流体 | Re100 2D 圆柱绕流 | ✅ | ✅ | ||
| 非定常不可压流体 | Re100~750 2D 圆柱绕流 | ✅ | ✅ | ||
| 可压缩流体 | 2D 空气激波 | ✅ | ✅ | ||
| 通用流场模拟 | 气动外形设计 | ✅ | |||
| 流固耦合 | 涡激振动 | ✅ | ✅ | ||
| 多相流 | 气液两相流 | ✅ | ✅ | ||
| 流场高分辨率重构 | 2D 湍流流场重构 | ✅ | ✅ | ||
| 求解器耦合 | CFD-GCN | ✅ | ✅ | ||
| 受力分析 | 1D 欧拉梁变形 | ✅ | ✅ | ✅ | |
| 受力分析 | 2D 平板变形 | ✅ | ✅ | ||
| 受力分析 | 3D 连接件变形 | ✅ | ✅ | ||
| 受力分析 | 结构震动模拟 | ✅ | ✅ | ||
| 受力分析 | 2D 弹塑性结构 | ✅ | ✅ | ||
| 受力分析和逆问题 | 3D 汽车控制臂变形 | ✅ | ✅ | ||
| 受力分析和逆问题 | 3D 心脏仿真 | ✅ | ✅ | ||
| 拓扑优化 | 2D 拓扑优化 | ✅ | ✅ | ||
| 热仿真 | 1D 换热器热仿真 | ✅ | ✅ | ||
| 热仿真 | 2D 热仿真 | ✅ | ✅ | ||
| 热仿真 | 2D 芯片热仿真 | ✅ | |||
| 算子学习 | NeuralOperator | ✅ | |||
| 汽车表面阻力预测 | DrivAerNetPlusPlus | ✅ | |||
| 求解器耦合 | NSFNets | ✅ | ✅ | ||
| 流场高分辨率重构 | PhyCRNet | ✅ | |||
| 求解器耦合 | NSFNet4 | ✅ |
| 问题类型 | 案例名称 | NVIDIA | 海光 | 太初 | 沐曦 |
|---|---|---|---|---|---|
| 材料设计 | 散射板设计(反问题) | ✅ | ✅ | ✅ | |
| 材料设计 | CGCNN | ✅ | ✅ |
| 问题类型 | 案例名称 | NVIDIA | 海光 | 太初 | 沐曦 |
|---|---|---|---|---|---|
| 天气预报 | Extformer-MoE 气象预报 | ✅ | ✅ | ✅ | |
| 天气预报 | FourCastNet 气象预报 | ✅ | ✅ | ||
| 天气预报 | NowCastNet 气象预报 | ✅ | ✅ | ||
| 天气预报 | GraphCast 气象预报 | ✅ | ✅ | ✅ | |
| 天气预报 | DGMR 气象预报 | ✅ | |||
| 地震波形反演 | VelocityGAN 地震波形反演 | ✅ | ✅ | ||
| 交通预测 | TGCN 交通流量预测 | ✅ | ✅ | ||
| 天气预报 | EarthFormer 气象预报 | ✅ | ✅ | ||
| 交通预测 | IOPS 交通流量预测 | ✅ | ✅ | ||
| 天气预报 | Pang-Weather 气象预报 | ✅ | ✅ | ||
| 天气预报 | FengWu 气象预报 | ✅ | ✅ |
2. 运行指南¶
针对 PaddleScience 已支持的硬件,我们为每个硬件提供了一个运行示例,以1D 欧拉梁变形为例。
Note
请确保你已经在你的环境中正确安装了计算硬件对应的 PaddlePaddle,否则请参考 PaddleCustomDevice,将你的硬件代码接入到飞桨中。
# 安装 PaddleScience
git clone -b develop https://github.com/PaddlePaddle/PaddleScience.git
# 若 github clone 速度比较慢,可以使用 gitee clone
# git clone -b develop https://gitee.com/paddlepaddle/PaddleScience.git
cd PaddleScience
# install paddlesci with editable mode
python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cd examples/euler_beam
# 安装 PaddleScience
git clone -b develop https://github.com/PaddlePaddle/PaddleScience.git
# 若 github clone 速度比较慢,可以使用 gitee clone
# git clone -b develop https://gitee.com/paddlepaddle/PaddleScience.git
cd PaddleScience
# install paddlesci with editable mode
python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cd examples/euler_beam
# 安装 PaddleScience
git clone -b develop https://github.com/PaddlePaddle/PaddleScience.git
# 若 github clone 速度比较慢,可以使用 gitee clone
# git clone -b develop https://gitee.com/paddlepaddle/PaddleScience.git
cd PaddleScience
# install paddlesci with editable mode
python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cd examples/euler_beam
# 安装 PaddleScience
git clone -b develop https://github.com/PaddlePaddle/PaddleScience.git
# 若 github clone 速度比较慢,可以使用 gitee clone
# git clone -b develop https://gitee.com/paddlepaddle/PaddleScience.git
cd PaddleScience
# install paddlesci with editable mode
python -m pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cd examples/euler_beam
3. 贡献指南¶
我们在公开的案例文档开头提供了基于 NVIDIA CUDA 训练的参考精度和对应的预训练模型权重,如果需要在指定的硬件上运行,可以参考如下步骤:
-
如果你的硬件类型尚未接入 PaddlePaddle,则可以参考 PaddleCustomDevice 官方文档,接入飞桨框架。如果你的硬件类型已接入 PaddlePaddle,但尚未添加到 PaddleScience 的硬件支持列表中,请在 ppsci/utils/config.py 和 deploy/python_infer/base.py 中添加你的硬件类型。
-
按照案例文档给出的步骤,准备好必要的数据集。
-
如果模型文档中提供了模型训练命令,则需要在你的硬件上进行全量训练,保存训练日志,记录最佳模型精度以及最佳模型权重,这些内容一般会在训练过程中,自动保存在案例文件夹下。
-
如果模型文档中提供了模型评估命令,则需要在你的硬件上对第三步所保存的最佳模型进行精度评估,保存评估日志,记录评估精度,这些内容一般会在评估过程中,自动保存在案例文件夹下。
Note
对于模型全量训练精度,默认要求最佳精度与 NVIDIA CUDA 精度对齐。具体地,如果案例精度指标为相对误差(如 L2 相对误差),则指标不能超过参考值 ± 0.5%,如果案例精度指标为 MSE/MAE 一类的误差,则与参考值应保持在同一量级。
-
如果模型文档中提供了模型导出和推理命令,请按照模型导出和推理命令,验证在新硬件上模型导出和推理是否能够正常执行并对齐 CUDA 的推理结果。
-
上述步骤完成后,可以在 1. 硬件支持列表 的表格中,给对应模型添加你的硬件支持信息(✅),然后提交 PR 到 PaddleScience。你的 PR 应该至少包括以下内容:
- 在 2. 运行指南 中添加基于你的硬件环境使用模型的运行说明文档
- 训练保存的最佳模型权重文件(
.pdparams文件) - 训练/评估等运行日志(
.log文件) - 验证模型精度所用到的软件版本,包括但不限于:
- PaddlePaddle 版本
- PaddleCustomDevice 版本(如果有)
- 验证模型精度所用到的机器环境,包括但不限于:
- 芯片型号
- 系统版本
- 硬件驱动版本
- 算子库版本等
4. 更多文档¶
更多关于飞桨多硬件适配和使用的相关文档,可以参考: