仿真算例不再为每个模型重做数据:整例加载比读VTK快88倍,重叠预处理只占一步吞吐的2.1%
核心概要
PhysicsNeMo-Mesh把仿真算例存成带命名边界和条件值的GPU原生网格,让预处理从数据集制作阶段移到每次训练时按需执行。在单台x86机器的本地NVMe上,整例加载比读VTK文件快88倍;在单块GB200上,网格操作比多线程VTK快6.2到1068倍,与训练重叠时6.0M参数Transolver的预处理只损失2.1%吞吐。合成热传导中几何与壁面条件同时变化时,按边界给出的条件把误差从几何-only的理论下限降到0.038–0.066。
深度剖析
仿真算例现在可以整例存成GPU原生对象,加载时不再解析文本格式,模型特征改在训练时从存储的网格现算。 此前的流程在数据制作阶段用CPU把每个算例压平成某个模型专用的数组,只保留该模型消费的字段,换一个架构就要重跑一遍原始数据。 在单台x86机器的本地NVMe上冷加载一个完整算例,DrivAerML从VTK读取改为内存映射副本后快88倍,HiLiftAeroML在两边读取相同字段时快8.0倍,SHIFT-SUV快56倍。
网格操作搬到了GPU上并支持批处理和PyTorch自动微分,方法名与PyVista相近,已有后处理脚本容易迁移。 对照基线是同一节点Grace CPU上最强的批量VTK滤波器,VTK多线程后端开启,串行滤波器只用一个线程。 在17,684,913个三角形的DrivAerML车身上,旋转带矢量场快6.2倍,单元法向快12倍,符号距离查询快350倍,线性细分快1068倍;体积网格上边界提取快57倍,旋度快13倍。
同一份存储的DrivAerML数据集可以同时喂给Transolver、GeoTransolver和GLOBE,新增模型只需一个配置块。 过去每个模型各自把求解器输出压平成自定义数组,被丢弃的命名边界、工况和矢量列对下游所有模型都不可见。 在PhysicsNeMo公开的外气动配方中,三个模型从同一数据集目录训练,各自在加载时计算所需特征,无需重新制作数据。
算例保留每条边界的条件类型和给定值后,几何与壁面条件同时变化时的预测误差明显下降。 只看几何的模型在相对变化量取0.5时停在0.526的理论下限,只给五个壁面汇总量的全局向量把误差降到0.232–0.251。 合成二维热传导研究中,按边界存储条件后,Transolver、PointNet式模型和Transformer在相对变化量0.5处的种子中位误差分别为0.066、0.056和0.038。
启示与展望
演示范围限于PhysicsNeMo开源库中的网格模块:加载基准在单台x86机器的本地NVMe上测得,网格操作与重叠训练基准在单块GB200节点上测得,重叠训练用6.0M和1.7M参数的Transolver,合成热传导研究为二维拉普拉斯问题。面向的读者是需要为PDE代理模型准备训练数据的工程与研究团队。
重叠预处理对6.0M参数模型只损失2.1%吞吐,但对1.7M参数模型反而损失35.1%,原因是小模型的一步受主机启动限制,加深预取队列也无帮助。缓存法向和面积只省下变换开销的一小部分。库只检查形状、类型和设备,不检查边界是否覆盖内部,也不推断单位或控制方程。
