PhysicsNeMo 技术解析:面向工程仿真的物理机器学习栈

摘要:PhysicsNeMo 提供神经算子、图网络、PINN、科学数据管线和分布式 GPU 组件,用于训练工业代理模型。本文梳理其技术栈、方法选择、数据与验证要求,并说明它与传统 CFD、FEA 和试验体系的合理分工。

PhysicsNeMo 将高保真工程仿真与神经算子结合

在流体、结构、热、电磁与地球系统建模中,高保真求解器常要处理复杂几何、非线性偏微分方程以及跨度很大的时空尺度。一次 CFD 或 FEA 计算可以提供可信的局部细节,但参数扫描、设计优化、风险分析和在线控制往往需要成千上万次求解。NVIDIA PhysicsNeMo 面向这一计算缺口,提供基于 PyTorch 的开源物理机器学习框架,用于构建、训练、微调和部署神经算子、图神经网络、Transformer、扩散模型及物理信息神经网络。

理解 PhysicsNeMo 的关键,是把它看成一套工程化组件和参考配方。框架负责模型模块、科学数据管线、网格处理、物理残差、分布式计算、日志与检查点;企业仍需定义问题边界,生产训练数据,建立验证规则,并决定代理模型在 CAE 流程里拥有多大权限。它能显著缩短重复预测的时间,却不会自动替代经过认证的求解器与试验体系。

一、技术架构:六层协同的 Physics AI 栈

PhysicsNeMo 2.0 的主体结构可整理为六层:

  1. 数据与几何层physicsnemo.datapipes 面向规则张量、点云、网格和大型图,采用 GPU 优先、线程化及异步执行思路;Zarr、XArray、HDF5、NetCDF 等格式可承接高分辨率数据。physicsnemo.mesh 提供 GPU 加速的单纯形网格处理,统一表达二维三角网格、三维表面、四面体体网格、曲线、图和点云。
  2. 模型层physicsnemo.models 包含 FNO、MeshGraphNet、GraphCast、DoMINO、U-Net、扩散模型和多类 Transformer;physicsnemo.nn 提供可复用层。模型保持 PyTorch 风格,已有 torch.nn.Module 也能接入训练循环。
  3. 物理约束层physicsnemo.sym 使用 SymPy 定义 PDE,以自动微分或数值梯度计算空间导数和方程残差。原独立的 physicsnemo-sym 仓库已经归档,相关能力并入主仓库,可通过 nvidia-physicsnemo[sym] 安装。
  4. 训练层:优化器和主循环沿用 PyTorch,PhysicsNeMo 补充指标、混合精度、日志、检查点、模型注册及参考配置。官方训练教程展示了 FNO、Darcy2D DataPipe、DDP、MLflow/W&B 和推理加载的组合方式。
  5. 并行层DistributedManager 统一管理 rank、设备和进程组;DDP 负责样本级数据并行,ShardTensor 与域并行负责拆分单个超大网格或点云,FSDP2 可分片参数、梯度和优化器状态。
  6. 推理与集成层:训练模型可加载检查点执行批量或在线推理,并能接入现有 Python、PyTorch、CAE 后处理及数字孪生服务。生产系统通常还需要模型服务、输入合法性检查、版本治理和回退求解器。

这套分层设计允许团队只采用部分组件。例如,现有 PyTorch 代理模型可以仅使用 DataPipes 和分布式工具;已有 CFD 数据平台也可以保留原 ETL,只引入 DoMINO 或 MeshGraphNet;PINN 项目则可集中采用 SymPy 方程定义和 PhysicsInformer

PhysicsNeMo 数据、模型、分布式训练、验证和设计优化架构
PhysicsNeMo 数据、模型、分布式训练、验证和设计优化架构

二、神经算子与代理模型如何工作

传统监督网络学习有限维向量之间的映射,神经算子尝试学习函数空间之间的映射。以稳态 Darcy 流为例,输入是空间变化的渗透率场 (a(x)),输出是压力场 (u(x)),目标可写为:

[
\mathcal{G}: a(x) \mapsto u(x), \qquad -\nabla\cdot(a(x)\nabla u(x))=f(x)
]

FNO 在频域对场进行卷积,只保留一定数量的 Fourier 模态,再配合逐点线性变换和非线性层。它对规则网格效率较高,适合参数化 PDE、天气场和结构化 CFD 数据。所谓“网格无关”需要谨慎理解:算子形式可以适配不同离散分辨率,但训练分布、频谱截断、插值误差和边界表达仍会影响跨分辨率表现。

DeepONet 使用 branch net 编码输入函数,trunk net 编码查询坐标,再组合两者预测任意位置的解。PhysicsNeMo 的 Darcy 物理引导示例把 FNO 用作 branch net、全连接网络用作 trunk net,坐标路径保持可微,因此可直接计算压力对坐标的导数。PINO 则常在规则网格上对 FNO 输出采用谱微分或有限差分,并把 PDE 残差加入损失。

DoMINO 面向外部空气动力学等大型三维问题。其输入可包含 STL 几何点云、符号距离场和位置编码,先学习多尺度全局几何表示,再围绕查询点建立局部区域与动态计算模板,输出车身表面压力、壁面剪切应力以及周围体积流场。官方示例使用 DrivAerML 数据集,支持表面场和体积场训练,也支持点与潜空间网格的域并行。它避免把完整 CFD 体网格直接作为推理前提,但高质量训练标签依旧依赖一致、受控的仿真流程。

GNN 更适合非结构网格。MeshGraphNet 将节点状态、边属性和连接关系编码为图,通过消息传递更新局部状态;时间问题通常采用自回归 rollout。其优势是几何表达自然,代价是大图消息通信、halo 区交换和长时滚动误差。Transformer 擅长捕获长程相互作用,Transolver 等架构可处理无序点集和不规则表面,但注意力的显存与通信开销必须结合局部化、分片和低精度训练控制。

选型时可用四个问题快速收敛。输入是否位于规则网格?若是,FNO、U-Net 和基于谱注意力的模型容易获得较高吞吐。网格连接是否承载关键物理含义?若是,MeshGraphNet 一类 GNN 更合适。预测是否需要在任意坐标查询?DeepONet、点云算子和 DoMINO 的表达更便利。任务是否存在多解、随机细节或病态逆问题?扩散模型可表示条件分布,但采样成本、概率校准和物理约束要额外评估。模型选择还应考虑目标尺度:预测全场、积分力和局部峰值对应不同损失设计,同一架构未必同时达到最佳。若业务只关心阻力系数,直接回归标量可能比生成完整流场更经济;若后续还要检查热点和流动结构,全场代理更有价值。

此外,代理模型的泛化单位应在立项时明确。它可以针对单一零件族、某类边界条件,也可以覆盖多种几何和物理参数。覆盖面扩大通常需要更多样本、更大模型和更严格的分层验证。所谓基础模型能力不能仅凭训练规模判断,应通过未见几何、未见参数组合、不同分辨率和不同求解器数据的测试来证明。工程团队应先争取窄域可靠,再逐步扩展适用域。

三、PINN、物理约束与混合训练

PhysicsNeMo 覆盖三类常见训练范式:

范式 监督信号 主要优势 主要风险
数据驱动代理模型 CFD/FEA/试验标签 收敛稳定,复杂闭合关系可由数据吸收 数据昂贵,分布外行为难控
PINN PDE、边界条件、初始条件,少量或无标签 数据稀缺时仍可训练,反问题表达直接 多尺度、湍流、刚性方程可能优化困难
数据与物理混合 标签损失加 PDE/守恒/边界残差 可作正则化,改善守恒性和小样本表现 损失权重冲突,残差小不代表场误差小

典型混合目标为:

[
\mathcal{L}=\lambda_d\mathcal{L}{data}+\lambda_r\mathcal{L}{PDE}+\lambda_b\mathcal{L}{BC}+\lambda_c\mathcal{L}{cons}
]

其中数据项衡量预测场与标签的差异,PDE 项计算控制方程残差,边界项约束入口、壁面、对称面或载荷条件,守恒项可监控质量、动量、能量及全局力。各项量纲、数值范围与梯度尺度不同,固定权重经常造成某个目标主导训练。工程项目应记录每一项损失及其梯度范数,必要时采用归一化、课程学习、自适应权重或分阶段微调。

PINN 的难点常来自优化条件,而非方程书写。高 Reynolds 数流动、薄边界层、冲击波、接触、材料屈服、裂纹尖端等问题包含尖锐梯度或非光滑响应;自动微分虽然精确计算网络导数,却不能保证网络已经解析这些局部尺度。采样点密度、网络频谱偏置、边界条件施加方式和高阶导数噪声都会左右结果。此类场景可采用局部分区、无量纲化、硬边界约束、残差自适应采样,或先进行数据训练再加入物理项。

还要区分“满足训练采样点上的残差”和“满足连续域上的方程”。残差评估应使用独立配点,并检查积分守恒、边界通量及关键工程量。DoMINO 官方示例也显示,加入物理损失后,守恒相关表现可能改善,但若干体积场 L2 误差未必同步下降。这说明物理一致性与点对点精度是两个评价轴,报告时不宜合并成单一分数。

四、数据管线决定上限

物理代理模型的数据对象比普通图像更复杂:几何版本、网格拓扑、材料参数、边界条件、求解器版本、收敛状态和场变量单位必须共同保存。一个可靠的数据管线至少包括:

  • 数据契约:明确坐标系、单位、变量定义、参考压力、湍流模型、材料本构、边界类型和缺失值规则。
  • 质量门禁:剔除未收敛算例,检查质量不平衡、能量残差、网格质量、异常载荷和重复几何;原始文件使用不可变版本与校验和。
  • 几何处理:生成点云、图连接、SDF、邻域或规则体素;切分时以几何族、工况族为单位,避免同一基础 CAD 的轻微变体同时落入训练集和测试集。
  • 统计与归一化:输出场按训练集统计量标准化;坐标边界盒、裁剪区域和无量纲参数应纳入模型版本。
  • 吞吐优化:大型体网格优先采用分块、预取、缓存及 Zarr 等并行友好格式。DoMINO 示例指出,DrivAerML 单样本体积数据可达约 1.6 亿点,动态采样前读取全场可能压垮磁盘与 CPU 解码能力。

PhysicsNeMo DataPipes 提供 PyTorch 风格接口和 Hydra 配置,有利于复现实验;PhysicsNeMo Curator 可协助处理工程数据。框架解决加载与变换机制,数据语义仍需领域专家负责。若壁面剪切应力在不同求解器里采用不同符号或参考方向,再快的数据加载也只会更快地传播错误。

五、训练、推理与分布式 GPU 策略

科学机器学习的并行瓶颈与大语言模型不同。许多 FNO、GNN 代理模型参数量低于十亿,模型可以装入单张 GPU,但单个三维样本、图或点云极大。因此并行策略应按瓶颈选择:

  • DDP 数据并行:每张 GPU 保存完整模型,处理不同样本并同步梯度。模型可单卡容纳、样本数量足够时优先采用。
  • 域并行:把单个网格、点云或规则场分配给多张 GPU,子域间交换 halo 或边界数据。它适用于单样本超显存、需要更高空间分辨率的任务。
  • FSDP/模型并行:参数、梯度、优化器状态或层被分片,适合大型 Transformer、扩散模型及更大的基础模型。
  • 混合策略:域并行组处理一个样本,数据并行组复制该组合。此时通信拓扑、负载均衡和 I/O 并发度都需测量。

官方分布式文档提供 DistributedManager、可微 collective 以及 ShardTensor。DoMINO 配方可同时分片输入点和潜空间网格,并在数据并行维度应用 FSDP2。性能评估不能只看 GPU 数量,应记录每步时间、数据等待、通信占比、显存峰值、强扩展效率和弱扩展效率。若每个 rank 读同一大文件,GPU 扩容可能首先放大存储拥塞。

推理阶段通常轻得多,但上线前仍需固定预处理、归一化和坐标变换;检查点要连同代码提交、依赖、数据版本、配置和指标一起登记。批量设计筛选追求吞吐,在线数字孪生关注尾延迟,超大场重建可能仍要域并行。ONNX 或服务容器可以改善部署兼容性,数值等价性要用同一验证集复测,尤其是在 FP16、BF16 或 FP8 条件下。

六、与传统 CFD/FEA 的关系

PhysicsNeMo 适合构建“高保真求解器生产知识、代理模型重复调用”的组合体系。CFD/FEA 继续承担控制方程离散、复杂材料与闭合模型、极端工况分析、法规证据以及代理模型再校准;神经代理承担大规模参数扫描、优化内循环、实时预估、初值生成和不确定性筛选。

可行的协作模式包括:

  1. 代理模型先筛选数万组设计,保留候选方案交给 CFD/FEA 精算。
  2. 代理预测作为求解器初场,减少稳态迭代或瞬态热启动时间。
  3. 主动学习根据不确定性挑选新增仿真点,逐轮补齐稀疏区域。
  4. 在线系统使用代理模型给出低延迟估计,输入越界或置信度不足时切换高保真服务。
  5. 混合模型让网络学习湍流闭合、材料本构或未建模修正项,外层仍由数值求解器保证离散结构。

代理模型的成本具有前置特征:数据生成和训练昂贵,单次推理便宜。若项目只需计算少量彼此差异很大的工况,训练投资通常难以回收。若设计族稳定、输入参数明确、同类查询频繁,代理模型的经济性会更好。

七、验证体系与误差边界

企业验证不能停留在平均 MSE。建议建立四层指标:

  • 场误差:相对 L2、L1、最大误差、分位数误差,并按空间区域统计;边界层、尾迹、接触区和热点应单列。
  • 物理误差:连续性、动量、能量或平衡方程残差;入口出口通量差;边界条件违反程度。
  • 工程量误差:阻力、升力、压降、峰值温度、最大应力、疲劳指标、固有频率等,并设置业务容差。
  • 可靠性指标:不同几何族、参数区间、网格尺度、求解器版本下的覆盖率;推理延迟、失败率与校准后的预测区间。

误差边界应绑定“适用域”。可将几何嵌入距离、输入参数范围、无量纲数、材料类别、网格统计和边界条件编码用于分布外检测。置信区间可借助深度集成、分位数回归、保形预测或概率模型估计,但它们必须在独立校准集上验证覆盖率。若声明 95% 区间,应检查各工况分组是否接近目标覆盖率,而非只看总体平均。

测试集需要包含随机留出、整族几何留出、边界工况留出和极端条件压力测试。时间模型还应检查多步 rollout 的误差累积、稳定性和守恒漂移。发布门禁可以写成明确规则:关键工程量 P95 相对误差低于阈值、守恒误差低于阈值、95% 区间实际覆盖率达标、分布外检测召回率达标;任一失败即回退求解器。

误差边界不能外推为安全承诺。数据未覆盖的激波形态、新材料相变、拓扑改变、边界条件组合或设备故障模式,都可能令预测失效。模型卡应列明训练域、排除项、指标分布、已知失败案例、允许用途和升级流程。

八、适合与不适合的场景

**适合:**固定产品族内的大量设计变体;仿真标签可稳定批量生成;输入输出定义清晰;业务容许统计误差;需要毫秒或秒级响应;优化、UQ、数字孪生会高频调用模型;规则网格、点云或非结构网格能被一致编码。

**不适合:**仅有少量且质量不明的数据;物理机制或边界条件频繁变化;首次出现的事故工况;强非光滑、多尺度问题又缺乏局部采样;法规要求逐算例使用认证求解器;一次性分析;误差阈值极严且无法建设回退机制。纯 PINN 对高 Reynolds 湍流、复杂三维几何和刚性多物理耦合尤其需要先做小规模可行性验证。

九、企业落地建议

第一阶段应选取输入维度受控、已有仿真数据库、工程 KPI 明确的单一部件。以现有求解器结果作为基线,先训练一个简单 FNO、GNN 或点云模型,再考虑物理损失和大型架构。架构复杂度只有在验证指标证明收益时才增加。

第二阶段建立可审计流水线:数据集不可变版本、求解器与网格元数据、训练配置、随机种子、代码提交、检查点、模型卡和验证报告缺一不可。训练集扩充应由误差地图和主动学习驱动,避免盲目增加相似样本。

第三阶段采用影子运行。代理模型与生产 CFD/FEA 同时接收请求,持续比较关键工程量;确认分布外检测、置信区间和回退逻辑后,再允许代理结果进入设计筛选。安全或合规决策仍保留人工审查与高保真复核。

基础设施方面,先定位数据读取、单样本显存或模型参数中的主要瓶颈,再选择 DDP、域并行或 FSDP。GPU 利用率低时,优先检查格式、分块、缓存和 CPU 解码。版本升级也应谨慎:PhysicsNeMo 2.0 调整了包结构,并将 Sym 能力并入主仓库,旧项目应依据迁移指南更新导入路径、检查点和数据管线。

PhysicsNeMo 提供了成熟度较高的物理机器学习构件,但项目成败更多取决于问题定义、数据可信度和验证纪律。最稳健的落地目标,是在清晰适用域内获得可量化的加速,同时保留传统数值求解器作为证据来源、校准工具和风险后盾。

参考资料

  1. NVIDIA/physicsnemo GitHub 仓库
  2. NVIDIA PhysicsNeMo 官方文档
  3. PhysicsNeMo Model Architectures
  4. PhysicsNeMo Distributed Training
  5. DoMINO 官方参考实现与说明
  6. Fourier Neural Operator for Parametric Partial Differential Equations
分享到