
GraphCast完全新手教程从零跑通AI天气预报亲手生成全球多日预测【免费下载链接】weathernext项目地址: https://gitcode.com/GitHub_Trending/gr/weathernextGraphCast 是 Google DeepMind 开源的 AI 天气预报工具包它把全球大气观测场建模成图结构用神经网络直接预测未来几天的气温、风速、降水等要素单次推理只需几秒到几分钟。本教程带你走完选环境 → 跑通模型 → 理解原理 → 上云端的完整动线最终让你在自己的机器或免费算力上产出一份可评估的全球天气预报。GraphCast 能干什么把大气当成一张图来预报传统的数值天气预报要解流体方程动辄需要超级计算机跑数小时。GraphCast 换了个思路把地球表面切成网格节点、节点之间连成边让图神经网络GNN在图上做消息传递一次前向推理就得到未来 6 小时的大气状态再把这个输出喂回去作为下一次输入一步步滚出 10 天甚至更远的预报。仓库里同时提供两代模型GraphCast确定性预报0.25° 高分辨率适合对标数值模式的单点预测GenCast基于扩散模型的集合预报一次采样出一批样本能直接给出不确定性而不仅仅是一个答案。适合谁想入门 AI 气象的算法工程师、需要低成本全球预报的研究者、以及任何想亲手跑一遍 DeepMind 天气模型的初学者。代码遵循 Apache 2.0模型权重遵循 CC BY-NC-SA 4.0非商用使用前建议确认自己的用途在许可范围内。先跑起来30 分钟出第一份预报最短路径是官方提供的 gencast_mini_demo.ipynb——它使用内存占用最小的GenCast 1p0deg Mini模型在 Colab 的免费 TPU 上就能跑通完整的加载数据 → 推理 → 画动画 → 算损失 → 算梯度流程。路线一免费 TPU 笔记本零成本推荐用浏览器打开 Colab导入仓库中的gencast_mini_demo.ipynb菜单运行时→更改运行时类型硬件加速器选 TPU重启运行时按顺序执行各单元格。首次运行会自动拉取示例数据和预训练权重。⚠️ 这一步容易踩坑Colab 自带的 JAX/libtpu 版本偏旧notebook 里有专门的单元格负责卸载旧版并重装 TPU 版 JAX请按顺序执行不要跳过。执行到 Autoregressive rollout 单元格时核心逻辑就是这段——用 8 个随机数种子并行采样、按 12 小时一步做自回归展开chunks [ c for c in rollout.chunked_prediction_generator_multiple_runs( predictor_fnrun_forward_pmap, rngsrngs, inputseval_inputs, targets_templateeval_targets * np.nan, forcingseval_forcings, num_steps_per_chunk1, num_samples8, pmap_devicesjax.local_devices()) ] predictions xarray.combine_by_coords(chunks)跑完后你得到的predictions是一个 xarray 数据集每个样本一路滚 30 步即约 15 天的全球预报序列notebook 会把它和真实值并排画出逐日对比动画。路线二本地机器跑 GraphCast 小模型git clone https://gitcode.com/GitHub_Trending/gr/graphcast cd graphcast python -m venv graphcast-env source graphcast-env/bin/activate pip install -e .然后打开 graphcast_demo.ipynb把模型参数来源切到 Random随机权重用于熟悉管线或选择GraphCast_small1° 低分辨率预训练版加载真实权重。JAX 需要按你的 CPU/GPU 型号单独安装版本兼容问题建议先查 JAX 官方安装指南。本地跑 0.25° 大模型基本不现实学习阶段用 1° 版本即可。它是怎么把现在变出十天后的白话版只需三句话先把网格上的气象场打包成节点特征 边特征的图网络在图上跑几轮消息传递后一次性输出未来一个步长的全字段预报然后把这个预报当成新输入继续滚直到滚满你要的天数。其中 graphcast/model_utils.py 负责网格与图特征之间的转换graphcast/deep_typed_graph_net.py 是 GraphCast 的消息传递骨干graphcast/rollout.py 负责推理时的自回归展开graphcast/gencast.py 则是 GenCast 的扩散式单步预测器。各模块的分工一表看懂模块在管线中的角色gencast.py/graphcast.py单步预测网络一个 12h/6h 增量rollout.py自回归滚动拼出多日预报normalization.py用历史统计量归一化输入输出sparse_transformer.py在三角网格上稀疏注意力的消息传递losses.py纬度加权损失评估用预报有多可靠仓库自带 Mini 模型与传统集合预报ENS的对比评分卡Mini 版精度够用但不代表大模型水平这也是官方反复提示的一点按模型版本挑算力路径四个预训练模型怎么选权重和示例数据托管在 Google Cloud 存储桶dm_graphcast官方文档列出了四个 GenCast 版本加上三个 GraphCast 版本差异集中在分辨率和显存门槛模型分辨率系统内存 / 加速卡显存TPU 推理典型场景GenCast 1p0deg Mini1°~21GB / ~8GB HBM免费 Colab 演示GenCast 1p0deg1°~21GB / ~8GB HBM中端研究GenCast 0p25deg含运营版0.25°~250GB / ~32GB HBM高精度业务对标GraphCast 系列另有 0.25°37 压层、1° small、0.25° 运营微调三个版本。具体硬件门槛和区域可用性会随时间变化以官方最新说明为准。Google Cloud 上开 TPU VM 跑大模型完整步骤见 docs/cloud_vm_setup.md主线如下在 Cloud Console 的 Compute Engine → TPU 里创建实例选好区域、芯片数芯片数 能并行的集合预报样本数建议勾选排队queuing否则库存不足会直接报StockoutSSH 进 VM 后安装 TPU 版 JAX 与 Jupyterpip install -U jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html pip install jupyter把示例数据、权重、统计文件拷到 VMgcloud storage cp gs://dm_graphcast/gencast/dataset/source-era5_date-2019-03-29_res-1.0_levels-13_steps-30.nc . gcloud storage cp gs://dm_graphcast/gencast/params/GenCast 1p0deg 2019.npz . gcloud storage cp --recursive gs://dm_graphcast/gencast/stats/ .启动本地运行时复制终端输出的http://localhost:8081/...地址粘贴到 gencast_demo_cloud_vm.ipynb 的 Connect to local runtime 对话框即可接管⚠️ 用 Spot抢占式TPU 可以省 60% 以上费用但它随时会被回收且无法重启实验任务用完记得删掉 VM否则持续计费。各 TPU 型号的单价和可部署区域变动频繁以官方计费页为准。没有 TPU 想用 GPU需要把注意力实现从splash_mha换成triblockdiag_mha加载检查点后覆盖配置cfg ckpt.denoiser_architecture_config.sparse_transformer_config cfg.attention_type triblockdiag_mha cfg.mask_type full代价是 0.25° 模型需要约 60GB 显存且精度相比 TPU 路径有约 0.3%~0.4% 的小幅下降速度也更慢报错别慌先查这几处QColab 里报libtpu相关错误或 TPU 识别不到A几乎总是 JAX 与 libtpu 版本不匹配。按 notebook 里的单元格卸载libtpu/libtpu-nightly后重装jax[tpu]然后重启运行时。Q创建 TPU 实例报Stockout或一直排队ATPU 库存紧张是常态。勾选Enable queuing让请求进入排队队列若Queued Resources里出现过失败任务先删掉再重建失败的占位任务会吃掉配额。Q推理直接 OOM内存不足A编译阶段吃的是系统内存而非显存0.25° 模型需要约 250GB 主机内存单机放不下时要请求多芯片主机如 2x2x1 拓扑。学习阶段建议直接从 1° 或 Mini 模型起步。QGPU 上跑出来的结果和 TPU 上的不一样A这是已知现象。两种注意力实现在代数上等价但数值不完全一致叠加 GPU 与 TPU 的默认 matmul 精度差异会带来上述约 0.3% 量级的精度偏移属于正常偏差而非代码 bug。Q预测出 NaN 或海温字段异常A海表温度在陆地格点是 NaN模型内部靠 graphcast/nan_cleaning.py 填充后推理、再还原 NaN。若你自行替换了输入数据需要保证变量清单、压层、时间分辨率与训练数据一致。跑通之后去哪继续按由浅入深的顺序延伸路径大致是换模型对比同一份初始场分别跑 Mini 和 0.25° 模型用 notebook 里的 CRPS 计算对比不确定性表现直观感受分辨率的价值读单步网络从 graphcast/gencast.py 的GenCast类入手再看denoiser.py的扩散去噪结构理解集合预报的采样来源接入自己的数据参考 graphcast/data_utils.py 里extract_inputs_targets_forcings的切分方式把自己的 ERA5/HRES 场切进同样的 inputs/targets/forcings 三元组复现训练notebook 末尾的 loss 与梯度单元格已演示完整反传扩展到多步训练需要 ERA5 全量数据约 TB 级通过 ECMWF/Weatherbench2 渠道获取注意各自的使用条款。入口汇总README 是模型清单与许可总览docs/cloud_vm_setup.md 是云端部署唯一权威文档学术背景读 GraphCast 的 Science 论文与 GenCast 的 arXiv 论文引用信息见 README 末尾。官方反馈邮箱在 README 的 Contact 一节遇到管线级问题可以先翻 GitHub Issues。【免费下载链接】weathernext项目地址: https://gitcode.com/GitHub_Trending/gr/weathernext创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考