Agent Skills
返回列表
💻

Earth2Studio 创建诊断模型

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/earth2studio-create-diagnostic。

技能介绍

要解决什么问题

Earth2Studio 里的诊断模型(diagnostic)做的是单时刻场变换:给定一组输入变量与张量,输出另一组变量,不做时间积分,也不走预报(prognostic)那套 lead_time 与迭代器接口。把第三方 PyTorch 权重、HuggingFace/NGC 检查点或纯衍生算子接进仓库时,容易在坐标顺序、可选依赖、加载路径和测试约定上踩坑。

技能如何组织工作

本技能用按顺序执行的清单约束实现路径,避免跳过依赖声明或测试就宣称完成:

  • 类型分流:简单衍生(仅 torch.nn.Module)、AutoModel 诊断(含 AutoModelMixin)、生成式诊断(多样本/sample 维)三类,对应不同的 load_model 与 output_coords 要求。
  • 依赖先行:在改 pyproject.toml 前分类并提议 [project.optional-dependencies] 的 extra,与 OptionalDependencyFailure、@check_optional_dependencies() 对齐。
  • 标准 API 面:在 earth2studio/models/dx/<name>.py 实现 input_coords / output_coords(@batch_coords())、__call__(@torch.inference_mode() + @batch_func()),用 handshake_dim / handshake_coords 校验;AutoModel/生成式需固定检查点来源(如 hf://org/repo@commit)。
  • 测试与质量门:test/models/dx/test_<name>.py 覆盖 mock 前向、异常坐标与可选 @pytest.mark.package 真实权重;仓库内 Python 命令统一 uv run pytest / uv run python,收尾跑 make format && make lint && make license。

可选步骤还包括对照参考脚本做验证、按模板起草 PR 说明;若流程本身有误,技能要求先改 SKILL 或 references/ 再继续实现。

边界与注意点

  • 只处理单步诊断,不支持时间填充模型(应使用 prognostic 相关技能)。
  • 带 @pytest.mark.package 的测试可能需要 NGC、HuggingFace、S3 等网络与合法检查点;生成式对比往往要 GPU 与固定随机种子。
  • 诊断封装不要继承 PrognosticMixin、不要引入 lead_time 坐标、不要在 earth2studio/ 内用 print()(用 loguru.logger)。

使用场景

  • 要把 HuggingFace 上的降水或风场检查点接进 Earth2Studio,需新建 `models/dx` 模块并跑通 mock 与 package 测试
  • 参考论文推理脚本实现了单步场变换,需在仓库里按坐标规范(batch/lat/lon)封装成可 `__call__` 的诊断 API
  • 扩散或 VAE 类生成式诊断要在 `output_coords` 加 sample 维,并写固定种子的确定性前向测试
  • 合并上游前先在 `pyproject.toml` 提议模型 extra,避免 CI 里其他人 `uv sync` 时触发 OptionalDependencyFailure

适合人员

  • 维护 Earth2Studio 模型目录、需要把 NGC/S3 权重按 `load_default_package` 固定到不可变版本的贡献者
  • 写 `test/models/dx` 的工程师,要在无 GPU 时用 mock 覆盖前向,又在有网络时用真实检查点跑 package 标记测试
  • 按团队规范用 uv 工作流落地新诊断类,并负责 `make format/lint/license` 与 CHANGELOG 文档更新的开发者
  • 从第三方仓库迁移单步衍生算子(如风速合成),只需 `torch.nn.Module`、不加载检查点的简单诊断封装作者