Ascend-SACT/FNO-3D
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

FNO-3D 昇腾迁移适配项目

本项目包含 FNO-3D (Fourier Neural Operator 3D) 模型在华为昇腾 NPU 平台的完整迁移适配方案。

🚀 开始迁移

新手用户请先阅读完整的迁移适配指导书:

📖 https://ai.gitcode.com/Ascend-SACT/FNO-3D/blob/main/FNO-3D-migration/docs/FNO-3D-%E6%98%87%E8%85%BE%E8%BF%81%E7%A7%BB%E9%80%82%E9%85%8D%E6%8C%87%E5%AF%BC%E4%B9%A6.md

该指导书包含:

  • 第1章:环境准备(容器镜像、依赖安装)
  • 第2章:模型分析(算子检查、架构差异)
  • 第3章:代码适配(FFT替代方案、精度验证)
  • 第4章:训练推理(脚本执行、参数配置)
  • 第5章:性能评测(Benchmark、加速比计算)
  • 第6章:验证报告(产物检查、精度对比)

其他参考文档:

  • 端到端迁移指导 - 完整验证流程
  • 迁移验证报告 - 验证结果汇总
  • 关键差异说明 - GPU与NPU差异分析

项目结构

FNO-3D-migration/
├── docs/                      # 文档目录
│   ├── FNO-3D-昇腾迁移适配指导书.md    # ⭐ 核心适配指导文档(从这里开始)
│   ├── FNO-3D-端到端迁移指导.md        # 端到端验证流程
│   ├── FNO-3D-迁移验证报告.md         # 验证结果报告
│   ├── FNO-3D-关键差异说明.md         # GPU与NPU差异分析
│   └── migration_issues_analysis.md   # 问题分析记录
├── ascend_train.py            # NPU训练脚本
├── ascend_infer.py            # NPU推理脚本
├── benchmark_performance.py   # 性能评测脚本
├── eval_accuracy.py           # 精度评估脚本
├── OperatorAdaptation/        # 算子适配方案
│   └── FFT替代方案.md         # FFT算子NPU适配说明
├── train_config.yaml          # 训练配置文件
├── requirements.txt           # 依赖列表
└── data/                      # 数据集目录
    ├── mini_car_cfd.pt        # Mini数据集 (1.2MB)
    └── nsforcing_train_128.pt # Navier-Stokes数据集 (7.3MB)

快速验证(适合已完成迁移的用户)

1. 环境准备

# 安装依赖
pip install -r requirements.txt

# 检查NPU状态
python -c "import torch_npu; print(torch_npu.npu.is_available())"

2. 训练

python ascend_train.py \
    --epochs 50 \
    --batch-size 1 \
    --device-id 0 \
    --modes 8 \
    --width 20

3. 推理验证

python ascend_infer.py \
    --batch-size 1 \
    --device-id 0 \
    --checkpoint npu_trained_weights.pth

4. 性能评测

python benchmark_performance.py \
    --batch-size 1 \
    --n-warmup 5 \
    --n-runs 20

关键适配说明

FFT算子替代方案

NPU不支持 torch.fft 的 complex64 操作,本项目采用 Conv3d 替代方案:

  • Phase 1: 余弦相似度验证 1.0 (PASS)
  • Phase 2: 相对误差 < 1e-6 (PASS)
  • Phase 3: 训练Loss收敛 59% (PASS)
  • Phase 4: 推理输出无NaN/Inf (PASS)

详细说明见:FFT替代方案

验证结果

指标GPU基准NPU结果状态
训练Loss下降-59%✅ PASS
推理输出维度(1,64,64,40,1)(1,64,64,40,1)✅ PASS
NaN/Inf检测无无✅ PASS
Benchmark吞吐-173 samples/s✅ PASS
NPU加速比-119x✅ PASS

数据集

本项目使用 Navier-Stokes 3D 流体仿真数据集:

  • 来源: Caltech/NVIDIA NeuralOperator Team
  • 规模: 128x128分辨率,时间序列数据
  • 下载: Zenodo

参考论文

Li, Z., et al. "Fourier Neural Operator for Parametric Partial Differential Equations." arXiv:2010.08895, 2020.

License

Apache-2.0

联系方式

  • 项目仓库: https://atomgit.com/Ascend-SACT/FNO-3D
  • 问题反馈: 提交Issue到项目仓库