Earth2Studio 创建诊断模型
将以下提示词粘贴到你的 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`、不加载检查点的简单诊断封装作者