Earth2Studio 创建预报模型
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/earth2studio-create-prognostic。
技能介绍
要解决什么问题
Earth2Studio 需要把第三方 ML 天气预报模型接进统一运行时:模型做的是时间积分前向推进——给定初始场,按固定步长(例如 6 小时)逐步推到未来状态。若缺少规范的 PrognosticMixin 封装,坐标、批维、迭代器与 HuggingFace 权重加载很容易和框架约定不一致,测试与文档也会脱节。
技能如何工作
本技能按固定清单驱动实现,核心是让新模型同时继承 torch.nn.Module、AutoModelMixin、PrognosticMixin,并在 earth2studio/models/px/ 下落地完整类。
- 依赖与可选 extra:分析包、I/O 形状、时间步与检查点,在
pyproject.toml中为每个模型增加可选依赖组(可为空,但需存在)。 - 坐标:
input_coords/output_coords遵循 Earth2Studio 公开约定(如纬度 90→-90、经度 0→360);变量映射到E2STUDIO_VOCAB;用handshake_dim/handshake_coords做输入校验。 - 前向与迭代:
__call__使用@batch_func,形状为(batch, time, lead_time, var, lat, lon);create_iterator在 step 0 重置边界条件,并通过front_hook/rear_hook注入扰动。 - 加载:
load_default_package锁定hf://org/repo@commit;load_model经package.resolve()、map_location="cpu"、eval(),并用@check_optional_dependencies()装饰。 - 测试与注册:在
test/models/px/编写test__call、test__iter、坐标异常与@pytest.mark.package等用例;按需更新__init__.py、RST API 页、安装说明与CHANGELOG.md。
执行 Python 相关命令时优先 uv run(如 uv run pytest),避免裸 pytest 缺依赖;格式化与 lint 走 make format && make lint。
适用边界与注意点
- 不要为复用而抽通用基类;每个
.py文件需 SPDX 头;日志用loguru.logger,避免print()。 - 纬度若与检查点内部顺序相反,应在模型核心前后内部翻转张量,不要在
input_coords/output_coords里写反转后的纬度。 - 验证/PR 阶段遵循
references/validation-guide.md:勿提交 API 密钥、对比脚本产物或从evals/targets/读取尺寸;卡住时不要重复同一无效修复,应先按技能内的自我改进流程排错。
使用场景
- 第三方 ML 天气模型已有检查点,需在 `earth2studio/models/px/` 实现三重继承封装并通过 `uv run pytest` 验收
- 新模型接入后 `handshake_coords` 报错,需按规范重写 `input_coords`/`output_coords` 与 E2STUDIO_VOCAB 变量映射
- 团队自研全球或区域预报模型,要按 SKILL 清单补齐可选 extra、HF 锁定 URL 与 `load_model` 加载逻辑
- 准备向上游 Earth2Studio 提 PR,需同步 `docs/modules/models_px.rst`、安装说明与 CHANGELOG,并按 validation-guide 做对比验证
适合人员
- 维护 Earth2Studio 模型包、需把 HuggingFace 气象权重接进统一前向积分接口的 Python 工程师
- 发表或部署自研 NWP/ML 混合模型、希望产出符合 PrognosticMixin 契约的上游贡献者
- 负责 `test/models/px/` 中 package 级真实权重测试与迭代器多步推理回归的气象 ML 工程师
- 在 monorepo 内管理 `pyproject.toml` 可选依赖组与 SPDX 头、并跑 `make format && make lint` 的仓库维护者