Car-Design模型在昇腾平台的迁移适配实践
作者:昇腾实战派
知识地图: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 反其道而行之,基于物理状态分组而非空间位置分组,分为三步执行:
- Slice(切片分组):自适应将全域网格点划分为若干可学习切片(slice/token),遵循规则:物理状态相似的网格点划入同一个切片(如车头高压区、车身侧流区、车尾涡流区各自成组),而非按空间距离分组。
- 切片级自注意力计算:仅在少量切片 Token 之间计算自注意力(切片数量远小于网格点数),大幅降低复杂度;捕捉不同车体区域之间的气动关联(如车头气流如何影响车尾涡流)。
- 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收敛趋势稳定下降,符合预期,迁移完毕
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)