作者​:昇腾实战派
知识地图​:https://blog.csdn.net/Lumos_Lovegood/article/details/161601003

背景概述

随着汽车工业对气动性能仿真精度与效率要求的不断提升,传统计算流体力学(CFD)方法在高复杂度三维车体几何场景下面临计算资源消耗大、仿真周期长等挑战。基于深度学习的神经偏微分方程(PDE)求解器为这一问题提供了新的解决思路。本文介绍Car-Design-ShapeNetCar模型——一款基于Transformer改进的神经PDE求解器,并详细阐述其在昇腾AI平台上的部署、迁移与性能优化实践,为工业级气动设计场景提供高效、可复现的技术方案。

模型介绍

Car-Design-ShapeNetCar 是清华大学 THUM Transolver 项目下面向汽车气动设计的工程应用模块,依托 Transolver 核心框架与 ShapeNetCar 汽车数据集构建。该模型是一款基于 Transformer 改进的神经偏微分方程(PDE)求解器,专注于复杂三维车体几何下的流体力学仿真与气动性能预测,相关成果发表于 ICML 2024(Spotlight),广泛应用于汽车工业气动设计场景 [8]。以下结合论文、技术文档与开源信息,完整说明模型定位、整体结构、核心机制、应用场景、数据集与工程能力。

在这里插入图片描述

从左到右完整数据流:原始几何输入 → 预处理 → 特征嵌入 → 核心主干 → 三路任务输出。

Transolver Block 内部结构:

在这里插入图片描述

Physics-Attention 物理注意力细分结构:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

传统 Transformer 直接对每一个网格点计算注意力,车体数万网格会导致算力爆炸;Transolver 反其道而行之,基于物理状态分组而非空间位置分组,分为三步执行:

  1. Slice(切片分组):自适应将全域网格点划分为若干可学习切片(slice/token),遵循规则:物理状态相似的网格点划入同一个切片(如车头高压区、车身侧流区、车尾涡流区各自成组),而非按空间距离分组。
  2. 切片级自注意力计算:仅在少量切片 Token 之间计算自注意力(切片数量远小于网格点数),大幅降低复杂度;捕捉不同车体区域之间的气动关联(如车头气流如何影响车尾涡流)。
  3. Deslice(反切片投影):将切片级的注意力特征,重新映射回原始逐网格点特征,保证输出保留每个位置的精细物理信息。

版本信息

软件 版本
CANN 8.3.RC1
HDK 25.5.0
Python 3.11
Torch 2.7.1

CANN镜像获取

docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.3.rc1-a3-openeuler24.03-py3.11
  • 更多版本下载请参考CANN镜像仓库
  • 注意:Atlas 800I A3 机器请下载带 a3 关键字的版本,Atlas 800I A2 机器请下载带 910b 关键字的版本
  • 可使用 npu-smi info 命令检查驱动是否正常

创建容器

docker run --privileged -it -u root --ipc=host --network=host \
    --device=/dev/davinci_manager \
    --device=/dev/devmm_svm \
    --device=/dev/hisi_hdc \
    -v /etc/localtime:/etc/localtime \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
    -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
    -v /home:/home \
    -v /data:/data \
    --name=car swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.3.rc1-a3-openeuler24.03-py3.11 /bin/bash

Conda安装(可选)

也可使用容器系统默认Python环境,可忽略此步骤。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh  # 最后初始化环境变量记得输入yes
conda create -n car_py311 python=3.11  # -n 为Python环境名配置参数,本文命名为car_py311,可按需自定义
conda activate car_py311

其他依赖安装

pip install -r requirements.txt

requirements.txt 内容如下:

hydra-core
omegaconf
tfrecord
wandb
warp-lang
s3fs
treelib
termcolor
cftime
einops
gitpython
h5py
jaxtyping
nvtx
onnx
pandas
tensordict
tensorboard
scikit-learn
huggingface_hub
safetensors
torch_geometric
torchvision==0.22.1
pip install torch-cluster --no-build-isolation
pip install timm --no-deps  # --no-deps参数阻止timm覆盖安装torch和torchvision

torch_npu安装

wget https://gitcode.com/Ascend/pytorch/releases/download/v7.3.1-pytorch2.7.1/torch_npu-2.7.1.post3-cp311-cp311-manylinux_2_28_aarch64.whl
pip install torch_npu-2.7.1.post3-cp311-cp311-manylinux_2_28_aarch64.whl  # torch版本会自动安装
pip install numpy==1.26.0 pyyaml decorator scipy attrs psutil  # torch_npu依赖

Transolver安装

git clone https://github.com/thuml/Transolver.git
cd Transolver/Car-Design-ShapeNetCar

数据下载

wget http://www.nobuyuki-umetani.com/publication/mlcfd_data.zip
unzip mlcfd_data.zip

迁移配置

在入口脚本中导入 torch_npu 进行自动迁移适配:

vim main.py

在文件开头添加:

import torch_npu
from torch_npu.contrib import transfer_to_npu 

在这里插入图片描述

启动训练

bash scripts/Transolver.sh

注意修改 --data_dir 为自定义数据目录。

精度测试

Loss收敛趋势稳定下降,符合预期,迁移完毕

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐