这是一个用于预测汽车设计任务的模型,它用于预测驾驶汽车周围的风速和表面压力,以此来计算风阻系数。模型参照Transolver 中的开源模型代码进行构建。
记录了周围风、表面压力和阻力系数的相对误差,以及斯皮尔曼等级相关性,可用于量化模型对不同设计进行排名的能力。
Transolver是一种基于物理感知令牌的Transformer PDE求解器,通过将网格点自适应划分为物理相关的切片,实现令牌级别的物理注意力计算,显著降低计算复杂度并提升几何泛化能力。其核心特点包括线性复杂度的高效注意力机制、对非结构化网格的天然适应性,以及在复杂物理场景和分布外条件下的强泛化性能。
除了基础版本Transolver我们还引入了Transolver++模型[Paper],采用了 局部自适应机制 和 切片重参数化(slice reparameterization) 技术。这些方法使得模型能够自适应地控制切片权重的分布,避免了物理状态之间的区分度丧失。具体来说,Ada-Temp 调整通过动态微调 softmax 函数的温度,确保在必要时产生更加集中或尖锐的分布。此外,使用 Gumbel-Softmax 进行可微分采样,使得 Transolver++ 即使在大规模数据上,也能保持强健和多样的物理状态表示。
可以通过conf目录下的transolver_car.yaml文件中选择相应的Transolver++模型。
- 数据准备
原始数据可以此处[下载],由Nobuyuki Umetani提供。
使用SCNET-华中一区计算环境,可在「/public/share/sugonhpcapp01/onestore/onedatasets/Transolver-Car-Design」获取数据集
使用前需要
source ../../../env.sh- 训练和评估模型
详细的训练参数可以参考transolver_car.yaml文件中的参数注释
单卡训练:
python train.py多卡训练:
mpirun -np <num_GPUs> --allow-run-as-root python train.pytorchrun启动多节点多卡训练:
torchrun --standalone --nnodes=<num_nodes> --nproc_per_node=<num_GPUs> train.py若在 Docker 容器内运行,多GPU命令可能需加 --allow-run-as-root。
推理和可视化:
python inference.py生成可视化结果:启用 save_vtk: True 保存 VTK 文件,可使用 ParaView 进行高级可视化。启用 visualize: True 生成静态可视化图片。
以下可视化结果表明,Transolver可以成功地将相似物理状态下的点归因于同一切片,如挡风玻璃、车牌和前照灯。
Figure 2. Transolver学习物理状态的可视化.
Transolver在复杂几何形状和混合物理中实现了最佳性能。
Transolver: A Fast Transformer Solver for PDEs on General Geometries


