基于昇腾适配数据驱动的全球天气预报模型Fuxi

简介: Fuxi是由复旦大学的研究人员开发的一个基于数据驱动的全球天气预报模型,主要由Cube Embedding、U-Transformer和全连接层构成。Fuxi摒弃了传统复杂的微分方程,转而通过多阶段机器学习架构,可提供15天的全球预报。时间分辨率为6小时,空间分辨率为0.25°。

摘要

Fuxi是由复旦大学的研究人员开发的一个基于数据驱动的全球天气预报模型,主要由Cube Embedding、U-Transformer和全连接层构成。Fuxi摒弃了传统复杂的微分方程,转而通过多阶段机器学习架构,可提供15天的全球预报。时间分辨率为6小时,空间分辨率为0.25°。

Fuxi介绍

Fuxi模型是由复旦大学的研究人员开发的一个基于数据驱动的全球天气预报模型,它摒弃了传统复杂的微分方程,转而通过多阶段机器学习架构,可提供15天的全球预报。时间分辨率为6小时,空间分辨率为0.25°,相当于赤道附近约25公里 x 25公里的范围,使用ECMWF39年的ERA5再分析数据集训练,在15天预报尺度上实现了效率与精度的双重突破。

网络架构

基本的伏羲模型体系结构由三个主要组件组成,如图所示:Cube Embedding、U-Transformer和全连接层。输入数据结合了上层空气和地表变量,并创建了一个维度为69×720×1440的数据立方体,以一个时间步作为一个step。高维输入数据通过联合时空Cube Embedding进行维度缩减,转换为C×180×360。Cube Embedding的主要目的是减少输入数据的时空维度,减少冗余信息。随后,U-Transformer处理嵌入数据,并使用简单的全连接层进行预测,输出首先被重塑为69×720×1440。

图片

Cube Embedding

为了减少输入数据的空间和时间维度,并加快训练过程,应用了Cube Embedding方法。具体地,空时立方体嵌入采用了一个三维(3D)卷积层,卷积核和步幅分别为2×4×4,输出通道数为C。在空时立方体嵌入之后,采用了层归一化(LayerNorm)来提高训练的稳定性。最终得到的数据立方体的维度是C×180×360。

U-Transformer

U-Transformer还包括U-Net模型的下采样和上采样块。下采样块在图中称为Down Block,将数据维度减少为C×90×180,从而最小化自注意力计算的计算和内存需求。Down Block由一个步长为2的3×3 2D卷积层和一个残差块组成,该残差块有两个3×3卷积层,后面跟随一个组归一化(GN)层和一个Sigmoid加权激活函数(SiLU)。SiLU加权激活函数通过将Sigmoid函数与其输入相乘来计算。 上采样块在图中称为Up Block,它与Down Block使用相同的残差块,同时还包括一个2D反卷积,内核为2,步长为2。Up Block将数据大小缩放回C×180×360。此外,在馈送到Up Block之前,还包括一个跳跃连接,将Down Block的输出与Transformer Block的输出连接起来。 中间结构是由18个重复的Swin Transformer块构建而成,通过使用残差后归一化代替前归一化,缩放余弦注意力代替原始点积自注意力,Swin Transformer解决了诸如训练不稳定等训练和应用大规模的Swin Transformer模型会出现几个问题。

核心设计

  • 全局粗预测:首阶段模型基于历史气象数据(气压、温度、风速),生成未来15天的低分辨率趋势框架。
  • 局部细修正:第二阶段针对台风、暴雨等高影响天气,在关键区域进行空间精细化调整,分辨率提升至0.25°网格。
  • 动态反馈:最终阶段引入实时观测数据流,持续校准预测轨迹,抑制长期预报中的误差扩散。
    这种级联架构使得Fuxi在保持AI模型高效推理的同时(单次预测仅需数分钟),关键指标如500 hPa位势高度异常相关系数(ACC)达到0.82,性能显著优于世界上最佳的基因物理的天气预报系统——欧洲中期天气预报中心(ECMWF)的高分辨率预报系统。其训练过程中嵌入了质量守恒、能量平衡等物理规则约束,确保预测结果既符合数据规律,又不违背气象学基本原理。作为首个支持15天全球高分辨率预报的开源AI模型,Fuxi不仅为气象业务提供了快速响应的新工具,其模块化设计也为极端天气预警、航空路径优化等场景提供了可定制化基础。

实验

5.1 下载源码
https://github.com/lizhuoq/WeatherLearn
5.2 安装依赖库
python = 3.11
torch = 2.1.0
torch_npu = 2.1.0
timm = 0.9.10
numpy = 1.23.5
5.3 在WeatherLearn目录下 新建fuxi.py内容为

from weatherlearn.models import Fuxi
import torch
import torch_npu
if __name__ == '__main__':
    device = torch.device('npu' if torch_npu.npu.is_available() else 'cpu')
    B = 1  # batch_size
    in_chans = out_chans = 70  # number of input channels or output channels
    input = torch.randn(B, in_chans, 2, 721, 1440).to(device)  # B C T Lat Lon
    fuxi = Fuxi().to(device)
    output = fuxi(input)  # B C Lat Lon
    print(output.shape)

5.4 source cann
source /usr/local/Ascend/ascend-toolkit/set_env.sh
5.5 运行脚本
python3 fuxi.py
报错Conv3dv2 only support static shape
图片

解决办法在实例化模型前添加

torch.npu.config.allow_internal_format = True
torch.npu.set_compile_mode(jit_compile=True

图片
再次运行,报错out of memory
图片
解决办法1
禁用梯度计算和降低计算精度(混合精度)vi fuxi.py在第21、22行添加

with torch.no_grad():
    with torch.npu.amp.autocast():

图片
解决办法2
减少网络结构的层数vi /WeatherLearn/weatherlearn/models/fuxi/fuxi.py在144行Fuxin类的初始化中添加参数depth=12,将161行的depth=48修改为depth
图片
图片
图片
图片

相关文章
|
11月前
|
并行计算 PyTorch 开发工具
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
OpenFold是一种基于深度学习的蛋白质结构预测模型,广泛应用于蛋白质从头预测、功能位点解析、突变效应模拟等领域。该模型的核心目标是通过大规模预训练和多阶段优化,从氨基酸序列中高效、准确地推断蛋白质的三维结构。
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
|
2月前
|
自然语言处理 PyTorch 算法框架/工具
大模型太慢?别急着上 GPU 堆钱:Python + ONNX Runtime 优化推理性能实战指南
大模型太慢?别急着上 GPU 堆钱:Python + ONNX Runtime 优化推理性能实战指南
672 10
大模型太慢?别急着上 GPU 堆钱:Python + ONNX Runtime 优化推理性能实战指南
conda常用操作和配置镜像源
conda常用操作和配置镜像源
33966 0
|
11月前
|
机器学习/深度学习 数据采集 API
|
11月前
|
算法 定位技术
我已证明P=NP
无论多难的问题,其实都有一个前提和”线索“。只要找到线索,就能解题。 I think I have proved P=NP problem from math.
639 136
|
11月前
|
机器学习/深度学习 PyTorch API
昇腾AI4S图机器学习:DGL消息传递接口的PyG替换
DGL (Deep Graph Learning) 和 PyG (Pytorch Geometric) 是两个主流的图神经网络库,它们在API设计和底层实现上有一定差异,在不同场景下,研究人员会使用不同的依赖库,昇腾NPU对PyG图机器学习库的支持亲和度更高,因此有些时候需要做DGL接口的PyG替换。
|
11月前
|
机器学习/深度学习 人工智能 并行计算
基于昇腾适配蛋白质序列模型ProteinMPNN
ProteinMPNN是一种基于深度学习的蛋白质序列设计模型,核心目标是解决“逆向折叠问题”(inverse folding problem),即根据给定的蛋白质三维结构,设计出能够折叠成该结构的氨基酸序列。ProteinMPNN在计算和实验测试中都有出色的性能表现,不同位置的氨基酸序列可以在单链或多链之间偶联,从而广泛的应用于当前蛋白质设计上。ProteinMPNN不仅在天然蛋白质序列恢复率上面性能要高于传统的Rosetta方法,并且可以恢复先前设计失败的蛋白质。通过前沿AI技术突破科学研究的效率瓶颈,对于蛋白质工程、药物设计、酶设计等领域有极其重要的意义。
基于昇腾适配蛋白质序列模型ProteinMPNN
|
11月前
|
机器学习/深度学习 数据采集 算法
基于昇腾适配基因表达预测模型Geneformer
Geneformer被广泛应用于疾病建模、治疗靶点发掘、基因网络预测与调控分析、基因功能预测与剂量敏感性分析、单细胞转录组数据集成与标准化、遗传变异解释与GWAS靶点优先排序。该案例既有算法原理,也有手把手的昇腾部署教学,包含细胞分类、基因分类、提取细胞嵌入图、细胞多分类的微调任务
基于昇腾适配基因表达预测模型Geneformer
|
11月前
|
机器学习/深度学习 人工智能 API
基于昇腾适配Meta AI在Science正刊发表的蛋白质结构预测模型ESMFold
ESMFold是由Meta AI团队开发的一种基于深度学习的高效蛋白质结构预测模型,其核心目标是利用大规模蛋白质语言模型(ESM)直接从氨基酸序列快速推断蛋白质的三维结构。ESMFold通过预训练的语言模型捕捉序列中的进化与结构关联性,结合几何优化模块生成高精度原子坐标,显著降低了传统方法对多重序列比对(MSA)和模板依赖的计算成本。该模型在蛋白质从头预测(de novo prediction)、功能位点解析、突变效应模拟等领域具有重要价值,以高效的推理性能,推动结构预测技术的普惠化应用。
|
11月前
|
并行计算 PyTorch 算法框架/工具
OpenFold2.0 基于NPU的推理适配与测试
本教程详细介绍了 OpenFold 的环境搭建、代码部署、依赖安装、数据集准备及推理测试全流程。首先通过 Anaconda 创建 Python3.9 环境并配置相关库,接着克隆 OpenFold 代码仓库并安装必要依赖(如 PyTorch、dllogger、hhsuite 等)。随后准备 PDB 数据集与模型参数,调整脚本路径以适配运行环境。最后执行推理脚本完成测试,并针对常见报错提供了解决方案,例如更新 NumPy、SciPy 或调整 GPU 配置等,确保流程顺利运行。