高性能计算服务
>
软件专区
>
最佳实践
>
基于Aurora-1.5气象预报大模型的台风预报检验
Aurora-1.5气象预报大模型由微软研究院AI for Science团队与Microsoft Weather联合发布,在地球系统基础模型Aurora基础上通过三阶段微调流程(扩展变量集、注入噪声优化CRPS、自回归微调)得到,在变量覆盖、时间分辨率、预报范式三个维度实现了结构性升级。Aurora-1.5气象预报大模型不仅能实现更高预报技巧的中期天气预报(未来10天),也具备集合天气预报(Ensemble Prediction)能力。Aurora-1.5气象预报大模型在超过100万小时的异构数据上完成预训练,支持26个气象变量的逐小时分辨率预报,能满足能源、农业、交通等多行业需求。
Aurora-1.5气象预报大模型包含以下两个模型:
•Aurora-1.5(确定性预报模型):经过优化后的单点最佳估计预报模型。
•Aurora-1.5-ENS(概率预报模型):通过噪声注入与概率损失训练出的集合预报模型。
安装后的软件目录结构如下:
~/apprepo/aurora/1-singularity_bw
├── app
│ ├── aurora_image.sif # 环境镜像
├── scripts
│ ├── env.sh # 环境配置文件
├── case # 工作目录
│ ├── logs # 模型推理日志
│ ├── input_data # 输入数据路径
│ │ ├── Aurora_input_sfc_2026070906.nc # 表层驱动数据
│ │ ├── Aurora_input_upper_2026070906.nc # 高空驱动数据
│ ├── static # 静态数据路径
│ │ ├── aurora-0.25-v1.5-static.pickle # 静态数据
│ ├── model # 模型权重路径
│ │ ├── aurora-0.25-v1.5.ckpt # 确定性预报模型权重
│ │ ├── aurora-0.25-v1.5-ensemble.ckpt # 概率预报模型权重
│ ├── output_data # 输出数据路径
│ │ ├── Aurora_output_sfc_YYYYmmddhh.nc # 表层预报数据
│ │ ├── Aurora_output_upper_YYYYmmddhh.nc # 高空预报数据
├── process_era5.py # ERA5再分析数据处理代码
├── decode_aurora.py # Aurora大模型的变量解码
├── run_aurora.py # Aurora大模型的推理代码
├── submit.slrum # 提交作业的脚本为便于模型的部署和测试,已针对核心节点异构加速卡进行了适配。您可在“应用商城”中找到并购买的Aurora软件,点击“命令行”图标,选择开通区域后进入eshell界面。

终端会显示商品自带的软件应用版本、环境变量和启动路径信息。由启动路径可以得到软件部署的位置。以下述软件为例(注:实际使用中请根据下方红框内提供的算例示例进入对应路径)。

Aurora-1.5气象预报大模型运用包含以下两个阶段:
•数据预处理阶段:对ERA5再分析数据进行处理,生成Aurora-1.5气象预报大模型所需的驱动数据。
•模型推理阶段:基于预处理后的驱动数据完成Aurora-1.5气象预报大模型推理,并将Aurora-1.5气象预报大模型预报结果保存为NetCDF格式。
第一步:Aurora-1.5气象预报大模型驱动数据处理
样例数据来自ERA5再分析数据集,包含两个时间步长(间隔6小时)的ERA5表层和高空数据。
•2个时间步长的表层数据:era5_2d_2026070900.nc、era5_2d_2026070906.nc
•2个时间步长的高空数据:era5_3d_2026070900.nc、era5_3d_2026070906.nc
将下载的ERA5再分析数据合并为Aurora-1.5气象预报大模型驱动数据。
python process_era5.py -t 2026070906 -i ./input_data -o ./input_data
其中,-t表示起报时刻,-i表示输入数据路径,-o表示输出数据路径

如果使用自己的数据集,操作步骤如下:
(1)将自己的数据集上传至case/input_data目录下,确保数据路径下包含两个时间步长(间隔6小时)的ERA5数据集(地表数据和高空数据),文件命名格式为era5_2d_YYYYmmddhh.nc和era5_3d_YYYYmmddhh.nc;
(2)执行ERA5再分析数据处理命令python process_era5.py -t YYYYmmddhh -i ./input_data -o ./input_data;
(3)随后,case/input_data目录下会生成Aurora_input_sfc_YYYYmmddhh.nc和Aurora_input_upper_YYYYmmddhh.nc文件。
第二步:Aurora-1.5气象预报大模型推理
算力要求:Aurora-1.5气象预报大模型使用单卡即可进行推理。
作业脚本:在case目录下有作业脚本submit.slurm,如下所示。


确认作业队列无误后,可以通过sbatch submit.slurm命令提交作业,随后可在当前作业查询作业状态

submit.slurm会调用scripts/env.sh脚本,其中包含Aurora-1.5大模型的推理命令。
(1)Aurora-1.5气象预报大模型确定性预报的推理命令
python run_Aurora.py \
--forecast-steps 4 \ # 预报步长,4表示4*6=24小时
--output-dir ./output_data \ # 输出数据路径
--checkpoint-path ./model/aurora-0.25-v1.5.ckpt \ #模型权重路径
--static-path static/aurora-0.25-v1.5-static.pickle \ #静态数据路径
--surf-input ./input_data/Aurora_input_sfc_2026070906.nc \ #输入数据路径
--atmos-input ./input_data/Aurora_input_upper_2026070906.nc#输入数据路径确定性预报运行成功后,case/output_data目录下将生成以下文件:

(2)Aurora-1.5气象预报大模型集合预报的推理命令
python run_Aurora_ensmeble.py \
--forecast-steps 4 \ # 预报步长,4表示4*6=24小时
--members 2 \ # 集合成员数量
--seed 42 \ # 随机种子数
--output-dir ./output_data \ # 输出数据路径
--checkpoint-path ./model/aurora-0.25-v1.5.ckpt \ #模型权重路径
--static-path static/aurora-0.25-v1.5-static.pickle \ #静态数据路径
--surf-input ./input_data/Aurora_input_sfc_2026070906.nc \ #输入数据路径
--atmos-input ./input_data/Aurora_input_upper_2026070906.nc#输入数据路径概率预报运行成功后,case/output_data目录下将生成member01、member02……文件夹,每个文件夹下的文件命名格式与确定性预报的文件命名格式相同。
作业运行成功后,case/logs目录下将生成以下文件:
•logs/slurm-xxxx.out:作业运行过程的详细日志
•logs/output_det.log:确定性预报模型推理过程的详细日志

•logs/output_ens.log:概率预报模型推理过程的详细日志

Aurora-1.5大模型的预报数据为NetCDF格式,可以用Xarray库和Cartopy库进行可视化。为了检验台风巴威的预报效果,本次最佳实践的起报时刻为2026年7月9日06时(UTC时间),随后根据实际观测进行台风巴威预报路径检验。
(1)提取2609号台风巴威预报路径
以海平面气压的最低值作为台风中心,检索不同预报时效下的台风中心,并得到2609号台风巴威的预报路径。
import pandas as pd
from datetime import datetime
import xarray as xr
import numpy as np
# Aurora-1.5预报数据路径
data_path = './Aurora-1.5/output_data/'
time = pd.date_range(start='2026-07-09 12:00:00', end='2026-07-19 06:00:00', freq='6h')
ds = xr.open_mfdataset(data_path + 'Aurora_output_sfc_*.nc')
# 筛选台风附近区域数据
ds = ds.sel(time=time).sel(lon=slice(115,135),lat=slice(40,15))
msl = ds['msl']
# 创建台风相关属性列表
lon_list = [] # 台风中心经度列表
lat_list = [] # 台风中心纬度列表
msl_list = [] # 台风中心海平面最低气压列表
# 提取大模型预报的台风数据
for time in range(len(forecast_time)):
lat_coord = msl.lat.values[msl[time,:,:].argmin() // msl.lon.size]
lon_coord = msl.lon.values[msl[time,:,:].argmin() % msl.lon.size]
lat_list.append(lat_coord)
lon_list.append(lon_coord)
msl = msl.sel(lon=lon_coord,lat=lat_coord)[time].values
msl_list.append(msl)
# 创建DataFrame表格格式
df = pd.DataFrame({'time':forecast_time,
'lon':lon_list,
'lat':lat_list,
'msl':msl_list})
# 保存为xlsx文件
df.to_excel('202609_Aurora.xlsx',index=False)(2)绘制2609号台风巴威观测路径和预报路径
结合中央气象台台风网数据,绘制2609号台风巴威观测路径和预报路径,如下图所示。由图可知,Aurora-1.5气象大模型较好地预报出2609号台风巴威登陆前和登陆后的轨迹。

(3)绘制2609号台风巴威路径预报偏差时序图
为了量化Aurora-1.5大模型对2609号台风巴威路径的预报能力,进一步计算预报的台风中心与实际的台风中心距离偏差,得到路径预报偏差时序图,如下图所示。由图可知,Aurora-1.5大模型对2609号台风巴威的路径预报偏差在20~100 km之间。
