根据华为盘古气象模型团队在 nature 发表的论文显示,其模型准确率已经超越了 ECMWF 的 IFS 模型,但是这些论文中的检验结果都是在人工构造的理想化气象场中(ERA5)进行的,而 ERA5 与真实观测场又是有差距的,盘古在真实观测场中的表现如何,一直以来都缺乏一些实测的报告或者文章介绍。得益于盘古气象模型团队将其模型开源,使我可以在自己个人电脑上搭建盘古气象模型进行预报检验具有了可操作性。因此我专门花了一点时间,来做了一个对盘古气象模型在真实观测场中预报的小检验,以观察其在真实气象观测场中的预报效果。
本测评的代码已在 Github 开源,任何人都可以根据仓库的说明文档在自己本机跑通,仓库地址(文末原文链接):https://github.com/Clarmy/pangu-weather-verify
本次测评的所有数据均来源于互联网上的公开数据集,且数据获取的方式合理合法、公开透明。本次测评抓取的数据跨度约 5 天,抓取的时间点为 ECMWF 的逐 3 小时预报点对应的时间点。
本测评将使用中国大陆地区在中央气象台网站(http://www.nmc.cn/)上公布的2000多个站点的观测数据作为检验的真值。观测站点信息来自于中国气象数据网(http://data.cma.cn/Market/Detail/code/A.0012.0001/type/0.html),原始站点表格下载地址(http://image.data.cma.cn/static/doc/market/China_SURF_Station.xlsx),在测评中站点列表(csv文件)对原始列表做了一些经纬度表示方法的转换,主要是将度分秒表示法转换为十进制表示法,以便于后续处理。数据获取方式是以爬虫的方式抓取中央气象台网站上的观测站点数据,受网络环境影响,在实际运行中抓取的数据无法保证100%完整,会有个别站点数据缺失,属于正常现象。
我们使用的 ERA5 再分析数据作为盘古模型推理的原始输入数据。由于本次测评是以真实业务化运行的标准,而非实验室中的理想化场景来进行的,因此我们作为初始场输入盘古做推理的 ERA5 数据实际上是距离观测时间点向前推大约 5 天前的数据。
ECMWF 的预报产品有多种品类,本项目使用的是其中对外免费公开的实时预报数据集,获取渠道可以参考ECMWF的文档说明(https://confluence.ecmwf.int/display/DAC/ECMWF+open+data:+real-time+forecasts)。本项目中 ECMWF 的实时预报数据作为盘古模型的对比预报数据(陪跑),用于对比盘古模型的预报效果。由于该数据集的空间分辨率为0.4°。因此在最终计算检验指标时,我们将其插值到与其他数据集一致的 0.25° 的空间分辨率。
我们使用 0.25 度分辨率的 GFS 预报数据作为另一个陪跑的对比预报,GFS 的数据下载地址:https://nomads.ncep.noaa.gov/gribfilter.php?ds=gfs_0p25_1hr
RMSE(Root Mean Square Error)即均方根误差,是一种常用的预测结果误差评估指标。RMSE反映预测值与实际值偏差的均方差,它能很好地反映预测的整体准确性。RMSE值越小,表示预测结果整体误差越小,预测效果越好。
RMSE具有非负值、同量纲等特点,易于理解和解释。它既可以用于连续型预测,也可用于分类预测的误差评估。RMSE是机器学习中回归模型及时间序列预测常用的评估指标之一。总体来说,RMSE是一个简单直观而有效的预测误差评价指标。
对于非二值化的预报要素,可以通过误差阈值过滤的方式来定义“准确”与“不准确”,进而再进行准确率的统计计算。误差准确率是对于误差在允许范围内计为“预报准确”,然后计算“预报准确”样本数与观测总样本数之间的比值。本次测评使用以下几个指标:
风级偏强为风力等级预报偏强次数与风力等级预报总次数的百分比。预报风力所在的检验等级大于实况风力所在的检验等级,则为风力等级预报偏强。同理,风级偏弱率为风力等级预报偏弱次数与风力等级预报总次数的百分比。预报风力所在的检验等级小于实况风力所在的检验等级,则为风力等级预报偏弱。
风速评分是衡量预报风级与观测风级之间匹配程度的分值。其算法为:若预报与观测处于同一风级,则记1分;若二者为相邻风级,则记0.6分;若二者风级相差2级,则记0.4分;其余情况不得分,累加所有样本的评分后取算数平均值即为样本的风速评分。
风向评分是衡量风向准确率的一个指标,风向评分使用风向方位(而非风向角度)作为基准进行评估。
本测评采用 8 分位风向进行评估。
盘古在气温上的测评结果相比于其他两个预报系统来说,具有比较明显的优势。具体来看,盘古气温的 RMSE 总体上是略优于 ECMWF 的,且比较稳定地优于 GFS。
1°C 准确率方面,盘古的结果相对于 ECMWF 有一个比较明显的优势,并且较为稳定地优于 GFS。但在 2°C 和 3°C 准确率方面,盘古相对于 ECMWF 的优势逐渐缩小,二者呈现一种势均力敌的状态,但稳定地优于 GFS。
盘古在风的预报方面就不那么尽如人意了,首先我们来看风速的 RMSE:
可以看到,盘古风速的 RMSE 在三个预报系统中基本是垫底的(越高越差),而 ECMWF 和 GFS 的却难分秋色,这一点似乎打破我们一直以来认为 ECMWF 稳定优于 GFS 的固有认知。
再来看 1m/s、2m/s、3m/s 误差阈值下的准确率:
可以看出,盘古的结果都还是比较明显地比 ECMWF 和 GFS 要差一些。
从风级的准确率来看,盘古的结果还是逊色于其他两个预报系统的。
再看风速和风向评分,盘古的结果依旧是不敌其他两个系统。
从风级的偏强和偏弱率来看,盘古应该是对风速倾向于低估,而 GFS 倾向于高估。
总体来说,盘古的预报相对于 ECMWF 和 GFS 在气温上具有比较明显且稳定的优势,而在风相关的预报效果基本上全面逊色于其他两个系统,但其预报效果与其他两个系统也已经相当接近。另一个可能比较颠覆我们认知的是,一直以来认为 ECMWF 稳定优于 GFS 的认知似乎正在发生变化:GFS 在风预报上的表现已经与 ECMWF 不相上下了。
虽然依据上述的测评,在真实观测场中并没有重现盘古全面优于 ECMWF 的效果。但我们也要知道这是在盘古使用的是 5 天前的 ERA5 数据作为初始场的条件下得到的结果。也就好比说是百米赛跑,ECMWF 和 GFS 先跑 40 米,结果最后三个人几乎同时撞线,这也侧面反应了盘古恐怖的实力。以下是初始场与观测场时间间隔对比图:
由于我是从一个实用角度出发进行的这个测评,所以不可能像论文里做的那样排除所有数据时效性问题,在完全理想化的情况下做测评。从某种程度上来说我的测评可能对盘古来说是不公平的,但这却是具有现实意义和可操作性的。如果把盘古比作在学校里是一个超级大学霸,那么它早晚有一天需要走出校园面对真实的世界,而这真实的世界绝不可能处处公平一样。
虽然盘古在真实观测场中的预报效果并没有论文中那么完美,但我认为盘古具有非常大的工程价值:
虽然盘古模型在工程上能给行业带来上面这些诸多的好处,但是目前来说盘古模型的应用还是有一些局限性的:
我觉得盘古最难能可贵的是,研发团队敢于把模型开源出来让大家使用、测试和检验,体现了他们的自信和开源精神,值得肯定和学习。
最开始我是想用 ECMWF 每次预报的初始场作为推理的初始场的,但是 ECMWF 公开的数据集中每次预报的初始场并不能满足盘古初始场的维度要求,盘古的初始场高空最高达到 50 hPa,而我能拿到的公开的 ECMWF 的初始场最高只到 200hPa,如果使用外推插值我认为会对结果产生不利影响,因此选择牺牲时效性来保证准确性。而至于为什么不用 GFS,因为根据盘古研发团队的建议应该使用 EC 系的数据才能体现盘古的优势,所以一开始就排除了使用 GFS 作为初始场的选项。
中央气象台网站后台的 API 系统的规则是用气象站号来查询的,在抓包的时候只需要知道气象站号即可查询,详细的过程可以参考开源仓库:https://github.com/Clarmy/pangu-weather-verify。
由于我并不想因为时间插值引入更多的误差,因此虽然 GFS 和盘古都是(或可以是)逐小时预报,但我还是以 ECMWF 公开的 3 小时预报作为基准。这个时候对于盘古来说会有一个情况,也就是说在这 3 小时间隔中,ERA5 会有新的时次的数据发布出来,因此盘古可以在三小时中做三次不同结果的预报。出于一种现实最差情况的模拟,我使用的是盘古第一次做的预报结果来做的评估,而 3 小时间隔中新补充的 ERA5 的预报是被我舍弃的。