graphcast

GitHub
6.6k 860 困难 1 次阅读 今天Apache-2.0其他
AI 解读 由 AI 自动生成,仅供参考

GraphCast 是由 Google DeepMind 开源的先进气象预测模型,旨在利用人工智能技术进行中短期天气预报。它主要解决了传统数值天气预报计算成本高、耗时长的痛点,能够基于历史大气数据快速生成高精度的全球天气序列预测,甚至在某些指标上超越了传统的物理模拟方法。

这款工具特别适合气象领域的研究人员、数据科学家以及具备机器学习背景的开发者使用。用户不仅可以加载官方提供的预训练权重直接进行推理评估,还能利用其模块化代码架构,基于 ERA5 等数据集从头训练或微调模型,以探索更复杂的气象应用场景。

GraphCast 的核心技术亮点在于其独特的图神经网络(GNN)架构。它将地球球面网格转化为多面体网格结构,通过消息传递机制高效地捕捉大气变量在空间上的复杂依赖关系。此外,项目还包含了其进阶版本 GenCast,引入了扩散模型技术来实现集合预报,进一步提升了预测的不确定性量化能力。整套代码基于 JAX 框架编写,提供了从数据预处理、模型训练到自回归推理的完整流程,是研究 AI 驱动气象科学的宝贵资源。

使用场景

某省级气象中心的预报团队正面临台风路径预测的紧急任务,需要在极短时间内生成高精度的中期天气集合预报以指导防灾减灾。

没有 graphcast 时

  • 依赖传统数值天气预报模式,单次运行需在超级计算机上耗时数小时,难以满足突发天气的即时响应需求。
  • 确定性预报无法有效量化不确定性,面对复杂大气系统时,缺乏多场景推演能力,导致决策风险较高。
  • 模型分辨率受限,难以捕捉小尺度极端天气特征,且随着预报时效延长,误差累积迅速,准确率大幅下降。
  • 运维成本高昂,需要维护庞大的物理方程组代码库及专用硬件设施,迭代更新新算法的周期长达数月。

使用 graphcast 后

  • 利用预训练的 GenCast 模型,在单块 GPU 上即可在几分钟内完成未来 10 天的全球高分辨率集合预报,响应速度提升百倍。
  • 基于扩散模型的生成式架构天然支持集合预报,能一次性输出多种可能的天气演变路径,清晰展示台风登陆的概率分布。
  • 0.25 度的高分辨率网格结合图神经网络技术,精准还原了气压场与风场的细微结构,显著降低了中长期预报的累积误差。
  • 直接调用 Google DeepMind 提供的预训练权重与标准化接口,团队无需从头训练,仅需少量本地数据进行微调即可部署业务。

graphcast 将原本需要超算集群跑半天的任务压缩至分钟级,同时通过概率化预测大幅提升了极端天气应对的科学性与安全性。

运行环境要求

操作系统
  • Linux
GPU
  • 运行大型模型(0.25 度分辨率)需要 Google Cloud TPU VM 或配备特定 Attention 实现的 GPU
  • 小型模型(GenCast Mini)可在免费 Colab 笔记本中运行
  • 具体显存和 CUDA 版本未说明,但需支持 JAX
内存

未说明(大型模型需要高内存,小型模型 GenCast Mini 专为低资源演示设计)

依赖
notes1. 核心框架为 JAX 而非 PyTorch。2. 完整训练需下载 ERA5 数据集(受单独条款约束)。3. 提供多种预训练模型,其中'GenCast 1p0deg Mini'和'GraphCast_small'适用于低算力环境或免费 Colab。4. 在 GPU 上运行 GenCast 需要使用不同的 Attention 实现。5. 模型权重采用 CC BY-NC-SA 4.0 许可(非商业用途)。6. 数据存储在 Google Cloud Bucket 中。
python未说明
JAX
Haiku
Chex
Dask
XArray
Numpy
Pandas
SciPy
Trimesh
Jraph
graphcast hero image

快速开始

Google DeepMind GraphCast 和 GenCast

本软件包包含用于运行和训练研究论文 GraphCastGenCast 中所用天气模型的示例代码。

此外,它还在 Google Cloud Bucket 上提供了预训练的模型权重、归一化统计信息以及示例输入数据。

完整模型训练需要下载 ERA5 数据集,该数据集可从 ECMWF 获取。最佳方式是从 Weatherbench2 的 ERA5 数据 以 Zarr 格式访问。

用于业务级微调的数据同样可以在 Weatherbench2 的 HRES 第 0 步数据 中获取。

这些数据集可能受单独的条款与条件或许可协议约束。您对第三方材料的使用须遵守相关条款,并应在使用前确认自己能够遵守所有适用的限制或条款与条件。

模型通用文件概述

  • autoregressive.py: 用于运行(及训练)单步预测的封装器,通过在每一步将输出作为输入自回归地反馈,以 JAX 的可微分方式生成一系列预测。
  • checkpoint.py: 用于序列化和反序列化树结构的工具。
  • data_utils.py: 数据预处理工具。
  • deep_typed_graph_net.py: 一种通用的深度图神经网络 (GNN),作用于 TypedGraph,其输入和输出均为节点和边的特征向量。
  • grid_mesh_connectivity.py: 用于在球面上的规则网格与三角形网格之间进行转换的工具。
  • icosahedral_mesh.py: 二十面体多层网格的定义。
  • losses.py: 损失计算,包括纬度加权。
  • mlp.py: 带有归一化条件层的多层感知机构建工具。
  • model_utils.py: 从输入网格数据生成扁平化的节点和边特征向量,并将节点输出向量重新转换为多层级网格数据的实用工具。
  • normalization.py: 用于根据历史值对输入进行归一化、根据历史时间差对目标进行归一化的封装器。
  • predictor_base.py: 定义了预测器的接口,所有模型和封装器均需实现该接口。
  • rollout.py: 类似于 autoregressive.py,但仅在推理时使用 Python 循环来生成更长的、不可微轨迹。
  • typed_graph.py: TypedGraph 的定义。
  • typed_graph_net.py: 在 TypedGraph 上定义的简单图神经网络构建模块的实现,这些模块可以组合起来构建更深层次的模型。
  • xarray_jax.py: 使 JAX 能够与 xarray 配合使用的封装器。
  • xarray_tree.py: 一种适用于 xarray 的 tree.map_structure 实现。

GenCast:基于扩散的中程天气集合预报

本软件包提供了四个预训练模型:

  1. GenCast 0.25° <2019,分辨率为 0.25°、具有 13 层气压且采用 6 倍细化的二十面体网格的 GenCast 模型。该模型使用 1979 年至 2018 年(含)的 ERA5 数据进行训练,可在 2019 年及之后的年份上进行因果评估。该模型在论文《GenCast:基于扩散的中程天气集合预报》(https://arxiv.org/abs/2312.15796)中有所介绍。

  2. GenCast 0.25° 运营版 <2022,分辨率为 0.25°、具有 13 层气压且采用 6 倍细化的二十面体网格的 GenCast 模型。该模型使用 1979 年至 2018 年的 ERA5 数据进行训练,并在 2016 年至 2021 年的 HRES-fc0 数据上进行了微调,可在 2022 年及以后的年份上进行因果评估。该模型可在实际业务环境中进行预测(即从 HRES-fc0 初始化)。

  3. GenCast 1.0° <2019,分辨率为 1°、具有 13 层气压且采用 5 倍细化的二十面体网格的 GenCast 模型。该模型使用 1979 年至 2018 年的 ERA5 数据进行训练,可在 2019 年及以后的年份上进行因果评估。该模型的内存占用比 0.25° 版本更小。

  4. GenCast 1.0° Mini <2019,分辨率为 1°、具有 13 层气压且采用 4 倍细化的二十面体网格的 GenCast 模型。该模型使用 1979 年至 2018 年的 ERA5 数据进行训练,可在 2019 年及以后的年份上进行因果评估。该模型是所提供的版本中内存占用最小的,专为低成本演示而设计(例如,可在免费的 Colab 笔记本中运行)。尽管其性能尚可,但并不代表上述 GenCast 模型(1–3)的典型表现。作为参考,一份将其性能与 ENS 对比的成绩单可在 docs/ 中找到。请注意,在该成绩单中,GenCast Mini 仅使用 8 个成员的集合(而 ENS 使用 50 个),因此我们采用公平(无偏)的 CRPS 来确保比较的公正性。

最佳的入门方式是在 Colaboratory 中打开 gencast_mini_demo.ipynb,其中展示了如何加载数据、生成随机权重或加载 GenCast 1.0° Mini <2019 快照、生成预测、计算损失并求取梯度。GenCast 架构的单步实现位于 gencast.py 中,相关数据、权重和统计信息则存放在 Google Cloud Bucket 的 gencast/ 子目录下。

在 Google Cloud 计算平台上运行 GenCast 的说明

cloud_vm_setup.md 包含启动 Google Cloud TPU VM 的详细步骤。这使得用户可以通过 Colaboratory 在独立的 gencast_demo_cloud_vm.ipynb 中运行模型(1–3)。

该文档还提供了在 GPU 上运行 GenCast 的 说明。这需要使用不同的注意力机制实现。

相关库文件简述

  • denoiser.py: GenCast 去噪器,用于单步预测。
  • denoisers_base.py: 定义去噪器的接口。
  • dpm_solver_plus_plus_2s.py: 使用来自 [1] 的 DPM-Solver++ 2S 采样器。
  • gencast.py: 将 GenCast 模型架构封装为去噪器,并结合采样器生成预测结果。
  • nan_cleaning.py: 包装预测器,使其能够处理已清除 NaN 值的数据。用于去除海面温度中的 NaN 值。
  • samplers_base.py: 定义采样器的接口。
  • samplers_utils.py: 采样器的实用方法。
  • sparse_transformer.py: 通用稀疏 Transformer,作用于 TypedGraph,其输入和输出均为节点和边特征的扁平化向量。predictor.py 在网格 GNN 中使用了此类模型。
  • sparse_transformer_utils.py: 稀疏 Transformer 的实用方法。
  • transformer.py: 包装网格 Transformer,交换输入图中节点的前两个轴。

[1] DPM-Solver++:扩散概率模型引导采样的快速求解器,https://arxiv.org/abs/2211.01095

GraphCast:学习高超的中期全球天气预报

本包提供三种预训练模型:

  1. GraphCast,即 GraphCast 论文中使用的高分辨率模型(0.25 度分辨率,37 层气压),基于 1979 年至 2017 年的 ERA5 数据训练而成。

  2. GraphCast_small,是 GraphCast 的小型低分辨率版本(1 度分辨率,13 层气压,较小的网格),基于 1979 年至 2015 年的 ERA5 数据训练,适用于内存和计算资源有限的情况。

  3. GraphCast_operational,一种高分辨率模型(0.25 度分辨率,13 层气压),先基于 1979 年至 2017 年的 ERA5 数据进行预训练,再用 2016 年至 2021 年的 HRES 数据进行微调。该模型可从 HRES 数据初始化,无需降水输入。

最佳入门方式是在 Colaboratory 中打开 graphcast_demo.ipynb,其中展示了如何加载数据、生成随机权重或加载预训练快照、生成预测、计算损失以及梯度。GraphCast 架构的单步实现位于 graphcast.py 中,相关数据、权重和统计信息则存放在 Google Cloud 存储桶的 graphcast/ 子目录下。

警告:为保持向后兼容性,我们仍将 GraphCast 数据保留在存储桶的根目录中。这些数据最终将被删除,以支持 graphcast/ 子目录。

相关库文件简述:

  • casting.py: 用于包装 GraphCast,使其以 BFloat16 精度运行。
  • graphcast.py: GraphCast 主要模型架构,用于单步预测。
  • solar_radiation.py: 计算与 ERA5 兼容的大气顶层 (TOA) 入射太阳辐射。该变量用作强迫项,因此在实际业务场景中需要针对不同的预报时效进行计算。

依赖项。

Chex, Dask, Dinosaur, Haiku, JAX, JAXline, Jraph, Numpy, Pandas, Python, SciPy, Tree, Trimesh, XArrayXArray-TensorStore

许可与免责声明

Colab 笔记本及其相关代码采用 Apache License, Version 2.0 许可证授权。许可证副本可在以下网址获取:https://www.apache.org/licenses/LICENSE-2.0。

模型权重根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) 许可证条款提供使用。许可证副本可在以下网址获取:https://creativecommons.org/licenses/by-nc-sa/4.0/。

本项目并非 Google 官方支持的产品。

除非适用法律要求或另有书面约定,否则在此依据 Apache 2.0 或 CC-BY-NC-SA 4.0 许可证分发的所有软件和材料均按“现状”提供,不附带任何明示或暗示的保证或条件。具体权利和限制请参阅相应许可证文本。

GenCast 和 GraphCast 属于一项实验性研究项目。您需自行判断是否适合使用或分发 GenCast、GraphCast 或其生成的任何输出,并承担因使用或分发这些内容而产生的所有风险。同时,您应谨慎对待 GenCast、GraphCast 及其生成的任何输出,避免盲目依赖、发布、下载或以其他方式使用。GenCast、GraphCast 或其生成的任何输出 (i) 并非基于任何政府气象机构发布的数据;(ii) 未与任何政府气象机构合作产生;(iii) 未获得任何政府气象机构的认可,绝不能替代这些机构发布的官方警报、警告或通知。

版权所有 © 2024 DeepMind Technologies Limited。

引用

如果您使用本工作,请考虑引用我们的论文(博客文章SciencearXivarXiv GenCast):

@article{lam2023learning,
  title={Learning skillful medium-range global weather forecasting},
  author={Lam, Remi and Sanchez-Gonzalez, Alvaro and Willson, Matthew and Wirnsberger, Peter and Fortunato, Meire and Alet, Ferran and Ravuri, Suman and Ewalds, Timo and Eaton-Rosen, Zach and Hu, Weihua and others},
  journal={Science},
  volume={382},
  number={6677},
  pages={1416--1421},
  year={2023},
  publisher={American Association for the Advancement of Science}
}
@article{price2023gencast,
  title={GenCast: Diffusion-based ensemble forecasting for medium-range weather},
  author={Price, Ilan and Sanchez-Gonzalez, Alvaro and Alet, Ferran and Andersson, Tom R and El-Kadi, Andrew and Masters, Dominic and Ewalds, Timo and Stott, Jacklynn and Mohamed, Shakir and Battaglia, Peter and Lam, Remi and Willson, Matthew},
  journal={arXiv preprint arXiv:2312.15796},
  year={2023}
}

致谢

(i) GenCast 和 GraphCast 与以下独立的库和软件包进行通信和/或引用;Colab 笔记本中包含若干个 ECMWF 的 ERA5 和 HRES 数据示例,这些数据可用作模型的输入。

欧洲中期天气预报中心(ECMWF)的数据和产品,经谷歌修改而成。
哥白尼气候变化服务信息已作修改,2023 年。欧盟委员会和 ECMWF 对任何可能使用该哥白尼信息或其所含数据的行为概不负责。

ECMWF HRES 数据集
版权声明:版权所有 © 2023 欧洲中期天气预报中心(ECMWF)。
来源:www.ecmwf.int
许可声明:ECMWF 开放数据根据知识共享署名 4.0 国际许可协议(CC BY 4.0)发布。https://creativecommons.org/licenses/by/4.0/
免责声明:对于数据中的任何错误或遗漏、数据的可用性,以及因使用这些数据而引起的任何损失或损害,ECMWF 概不承担任何责任。

上述第三方材料的使用可能受单独的条款与条件或许可规定约束。您对第三方材料的使用须遵守相关条款,且在使用前应确认自己能够遵守所有适用的限制或条款与条件。

联系方式

如需反馈或有任何问题,请发送邮件至 gencast@google.com。通过电子邮件收集的任何信息将按照 Google 隐私政策 处理。

版本历史

v0.22026/03/30
v0.1.12024/10/09
v0.12023/10/31

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|1周前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|1周前
其他图像数据工具

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2周前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.8k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|2周前
开发框架其他