发布于 ,更新于 

配置笔记:华为盘古大模型实机推理未来天气数据

前言

作为 AI 大模型的探索者,鄙人一直在关注前沿 AI 发展,在 2023 年夏,领教了厄尔尼诺的实力,酷热席卷全球,打破了多个记录,我也开始关注天气。在 “凤羽酱SDK” 的帮助下,我将目光投向了华为盘古天气大模型——突破!华为云盘古登顶《Nature》正刊!

不同于传统LLM大语言模型,盘古天气大模型是针对特定领域的模型,也算是开辟了大模型应用的新方向。

暑假要初升高忙得不可开交,寒假来了折腾折腾。

环境: 22.04.1-Ubuntu 配置: 4核心16G运存

本次仅使用CPU推理 推理时间1分钟左右

介绍

什么是盘古天气大模型

根据来自 华为官网 的介绍:

华为云盘古气象大模型是首个精度超过传统数值预报方法的AI模型,能够提供秒级全球气象预报,原来预测一个台风未来10天的路径,需要在3000台服务器的高性能计算机集群上花费5小时进行仿真。而现在基于预训练的盘古大模型,通过AI推理的方式,只需1台服务器、1卡配置、10秒时间,就可以获得更精确的预测结果。盘古气象大模型的预测结果包括位势、湿度、风速、温度、海平面气压等,可以应用于台风路径预测、降水预测、寒潮和高温预测等多个气象研究细分场景。

2023年7月6日,国际顶级学术期刊《Nature》正刊发表了华为云盘古大模型研发团队独立研究成果,这是中国科技公司首篇作为唯一署名单位发表的《Nature》正刊论文。

《三维神经网络用于精准中期全球天气预报》(《Accurate medium-range global weather forecasting with 3D neural networks》)

盘古天气大模型的实力

“华为云盘古气象大模型在精度上有不可否认的能力,纯数据驱动的AI天气预报模型,展现出了可与欧洲中期天气预报中心业务数值模式媲美的预报实力。”

盘古天气大模型的应用

2023年7月,华为云盘古气象大模型正式上线欧洲中期天气预报中心官网,全球天气预报员、气象爱好者和普通公众都可以免费查看盘古对未来10天全球天气的预测。

同时,华为云盘古气象大模型已在香港天文台“地球天气”产品中上线,用户可查看包括未来15天的风向、风速、气温及海平面气压预报。盘古气象大模型成功预测热带气旋“小犬”在2023年10月1日不会影响香港,晚上的国庆烟花汇演得以如期举办。

引入盘古气象大模型后,天气预报的时效由之前10天延长至15天,让用户能及早了解未来天气可能出现的变化。
—— 香港天文台

模型运行环境准备

安装 conda

Conda是一个开源的包管理和环境管理系统,支持多种编程语言,方便用户创建、管理虚拟环境和安装软件包。本次主要使用 conda 安装 Python 虚拟环境。

本文使用 安装脚本 这一方法,安装方式不唯一,其它可以自行搜索。我不喜欢用就安装miniconda演示了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.下载最新版本的Miniconda安装脚本

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh

2.安装Miniconda

bash miniconda.sh -b -f -p $HOME/miniconda

3.将conda加入环境变量

echo 'export PATH="$HOME/miniconda/bin:$PATH"' >> $HOME/.bashrc
source $HOME/.bashrc

4.删除安装脚本

rm miniconda.sh

配置 CDS API

  1. 注册Copernicus Climate Data Store (哥白尼气候数据储存)
  2. 登录完成后,打开How to use the CDS API 界面上将自动显示配置。
  3. Linux/Unix 保存这两行文本在$HOME/.cdsapirc文件内。Windows 则保存在 C:\users\[用户名]\.cdsapirc 文件内。

配置项目

  1. 克隆 https://github.com/HaxyMoly/Pangu-Weather-ReadyToGo项目。
    1
    2
    3
    apt install git -y
    git clone https://github.com/HaxyMoly/Pangu-Weather-ReadyToGo
    cd Pangu-Weather-ReadyToGo

    该项目为演示项目:盘古天气大模型全流程演示( 输入数据准备、预测及结果可视化

  2. 使用 conda 创建 Python 环境
    1
    2
    conda create -n pangu -y python=3.10
    conda activate pangu

    -n pgwdome: 这里的 -n 是 –name 的简写,后面的 pgwdome 是您要创建的环境的名称。您可以根据需要自定义这个名称。

-y: 这个选项表示“yes”,它会自动确认所有提示,避免在创建环境时需要手动输入确认。这在脚本或自动化任务中非常有用。

此时 命令提示符 的括号应变为 (pgw) 。例如 (pgw) @RamSong ➜ / $

3.使用 pip 安装 cdsapi 第三方库

1
pip install cdsapi

推理准备与模型安装

  1. 安装模型依赖包

    CPU和GPU环境安装一个即可

如果您使用CPU环境,请运行:

1
pip install -r requirements_cpu.txt

如果您使用GPU环境,请首先确认 cuda 版本为 11.6,cudnn版本为 Linux 8.2.4 和 Windows 8.5.0.96。然后,请运行:

1
pip install -r requirements_gpu.txt
  1. 安装 cartopy 依赖包
    1
    conda install -c conda-forge cartopy
  2. 模型下载

参考https://github.com/198808xc/Pangu-Weather提供的模型

我的方案

1
2
3
4
5
6
apt install gdown -y
mkdir models
gdown --id 1fg5jkiN_5dHzKb-5H9Aw4MOmfILmeY-S --output pangu_weather_1.onnx
gdown --id 1EdoLlAXqE9iZLt9Ej9i-JW9LTJ9Jtewt --output pangu_weather_3.onnx
gdown --id 1a4XTktkZa5GCtjQxDJb_fNaqTAUiEJu4 --output pangu_weather_6.onnx
gdown --id 1lweQlxcn9fG0zKNW8ne1Khr9ehRTI6HP --output pangu_weather_24.onnx

也可以根据需要任意下载一个测试,下载使用到了 Google Drive ,国内环境请注意。

推理

查找可用性

1
2
cd ..
python test_avaliable_time.py

这里展示的是可获取的最新数据( UTC时间 ),你的输出会是这样的: The latest date available for this dataset is: 2024-02-19 13:00.

数据下载

  1. 修改 data_prepare.py 中初始场的 date_time。这里是要基于你这个时间(UTC)的数据推演。
    1
    2
    3
    4
    5
    6
    date_time = datetime(
    year=2024,
    month=1,
    day=30,
    hour=18,
    minute=0)
  2. 执行 python data_prepare.py 下载初始场数据并转换为npy格式。此过程可能会花费大量时间。(可能需要排队)

完整输出大概是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(pangu) @RamSong ➜ /workspaces/Pangu-Weather-ReadyToGo (main) $ python data_prepare.py 

2024-08-13 04:13:02,936 INFO Welcome to the CDS.
As per our announcements on the Forum, this instance of CDS will soon be decommissioned.
Please update your cdsapi package to a version >=0.7.0, create an account on CDS-Beta and update your .cdsapirc file. We strongly recommend users to check our Guidelines at https://confluence.ecmwf.int/x/uINmFw
The current legacy system will be kept for a while, but we will reduce resources gradually until full decommissioning in September 2024.
2024-08-13 04:13:02,936 WARNING MOVE TO CDS-Beta
2024-08-13 04:13:02,936 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/reanalysis-era5-single-levels
2024-08-13 04:13:03,243 INFO Request is queued
2024-08-13 04:13:17,306 INFO Request is completed
2024-08-13 04:13:17,306 INFO Downloading https://download-0011-clone.copernicus-climate.eu/cache-compute-0011/cache/data8/adaptor.mars.internal-1723522394.3529243-22425-17-dc5a9a2e-289d-40b2-81f8-6d406fb52923.nc to /workspaces/Pangu-Weather-ReadyToGo/forecasts/2024-01-30-18-00/surface.nc (7.9M)
2024-08-13 04:13:20,351 INFO Download rate 2.6M/s
2024-08-13 04:13:20,698 INFO Welcome to the CDS.
As per our announcements on the Forum, this instance of CDS will soon be decommissioned.
Please update your cdsapi package to a version >=0.7.0, create an account on CDS-Beta and update your .cdsapirc file. We strongly recommend users to check our Guidelines at https://confluence.ecmwf.int/x/uINmFw
The current legacy system will be kept for a while, but we will reduce resources gradually until full decommissioning in September 2024.
2024-08-13 04:13:20,698 WARNING MOVE TO CDS-Beta
2024-08-13 04:13:20,698 INFO Sending request to https://cds.climate.copernicus.eu/api/v2/resources/reanalysis-era5-pressure-levels
2024-08-13 04:13:20,955 INFO Request is queued
2024-08-13 04:14:37,464 INFO Request is completed
2024-08-13 04:14:37,464 INFO Downloading https://download-0017.copernicus-climate.eu/cache-compute-0017/cache/data6/adaptor.mars.internal-1723522470.1147904-5979-6-df8dce56-ff70-43c3-82a1-006576c39238.nc to /workspaces/Pangu-Weather-ReadyToGo/forecasts/2024-01-30-18-00/upper.nc (128.7M)
2024-08-13 04:14:47,945 INFO Download rate 12.3M/s

开始预测

  1. 根据需要修改 inference.py 中以下变量。主要是是否使用GPU和开始时间(和下载的数据一样)以及要预测的时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # Use GPU or CPU
    use_GPU = False

    # The date and time of the initial field
    # date = '2023-07-03'
    date_time = datetime(
    year=2024,
    month=2,
    day=15,
    hour=12,
    minute=0)
    # time = '23:00'

    # The date and time of the final approaches
    date_time_final = datetime(
    year=2024,
    month=2,
    day=15,
    hour=13,
    minute=0)
  2. 执行 python inference.py 进行预测。结束后的文件在./results下。

格式转换

预测完成后,执行 python forecast_decode.py 将npy转换回NetCDF格式。转换后的文件在./outputs下。

查看结果

  1. 安装 ncvue (mcuntz开源的优秀NetCDF可视化项目)

    也可用其它查看器

  2. ncvue+文件名弹出窗口查看。例:ncvue output_surface_2024-02-15-13-00.nc

效果2024-02-15-13-00:

验证

参考 https://github.com/Clarmy/pangu-weather-verify