海洋超分辨率模型训练技能
核心原则
- •禁止自动决策:模型选择、训练参数、GPU 选择必须由用户确认
- •错误附带建议:遇到错误时,展示错误信息 + 可能的原因 + 修改建议
- •错误不自动重试:展示错误分析后询问用户是否调整参数重试
- •训练完成后主动询问:检测到训练完成时,主动询问是否生成可视化和报告
- •主动状态感知:训练启动后立即等待,捕获快速完成或早期崩溃
可用工具
| 工具 | 用途 |
|---|---|
ocean_sr_check_gpu | 查看可用 GPU |
ocean_sr_list_models | 列出可用模型 |
ocean_sr_train | 启动训练(含事件驱动启动监控) |
ocean_sr_train_status | 查询训练状态/日志/终止训练/等待状态变化 |
ocean_sr_visualize | 生成训练可视化图表 |
ocean_sr_generate_report | 生成训练报告 |
工作流程
code
1. 确认数据 → 用户提供预处理数据目录和输出目录
↓
2. 选择模型 → ocean_sr_list_models,用户选择
↓
3. 确认参数 → epochs, lr, batch_size(默认4), GPU 选择
│ → OOM 防护参数: use_amp(非 FFT 默认开启 / FFT 默认关闭), gradient_checkpointing(默认开启), patch_size
↓
4. 参数汇总 → 展示所有参数,等待"确认执行"
↓
5. 启动训练 → ocean_sr_train(含事件驱动启动监控)
│ 工具内部等待 training_start 事件(最长 5 分钟)
│ 若返回 status="error":展示错误 + 建议,询问用户是否调整参数重试
↓
6. 首次等待 → ocean_sr_train_status({ action: "wait", process_id, timeout: 120 })
│ 等 2 分钟:
│ 若 process_status="completed":主动询问是否生成可视化和报告
│ 若 process_status="failed":展示 error_summary + suggestions
│ → 询问用户:"训练失败原因是 XXX,建议 YYY,是否调整参数重试?"
│ 若 process_status="running"(超时):
│ → 告知用户:训练仍在运行中(已完成 N 个 epoch),稍后再询问进度
↓
7. 后续询问 → 用户询问"训练怎么样了?"时
│ 调用 ocean_sr_train_status({ action: "wait", process_id, timeout: 120 })
│ 同样等 2 分钟,按上述逻辑处理
↓
8. 生成可视化 → ocean_sr_visualize(用户确认后)
│ 检查返回 status="success" 且 plots/ 目录下文件已生成
│ 若失败:展示错误,询问用户是否重试
│ **禁止在此步骤未成功前调用 ocean_sr_generate_report**
↓
9. 生成报告 → ocean_sr_generate_report(仅在步骤 8 成功后执行)
│ → Agent 读取报告,补充 <!-- AI_FILL: ... --> 占位符
↓
10. 完成 → 展示报告路径和关键结果
主动状态检查
重要:如果之前启动过训练进程,Agent 在每次收到用户新消息时, 应先调用 ocean_sr_train_status({ action: "list" }) 检查训练状态。 如果发现训练已完成或失败,优先告知用户训练结果,再处理用户当前请求。
OOM 自动防护机制
训练前自动进行 GPU 显存预估并自动调参,防止训练过程中 OOM 崩溃。
自动防护流程
- •use_amp 按模型默认:非 FFT 默认开启;FFT/频域模型默认关闭(可手动 override)
- •显存预估 > 85% 时自动降级:
- •第一步:开启 AMP(如果未开启)
- •第二步:batch_size 减半(直到 1)
- •最多 5 次尝试
- •所有手段用尽仍不够 → 报错并建议使用更大显存 GPU 或设置 patch_size
OOM 时的手动建议优先级
- •启用
use_amp=true(最易操作,效果显著) - •减小
batch_size(如 4 → 2 或 1) - •启用
gradient_checkpointing=true(有计算代价;默认已开启,可显式确认) - •设置
patch_size(如 64 或 128) - •使用多卡训练分摊显存
禁止行为
| 类别 | 禁止行为 |
|---|---|
| 模型选择 | 自动决定使用哪个模型 |
| 参数决策 | 自动决定 epochs、lr、batch_size、GPU |
| 流程控制 | 跳过参数确认 |
| 错误处理 | 自动重试失败的训练、不给出修改建议 |
数据目录要求
需要 ocean-preprocess 预处理后的标准输出目录:
code
dataset_root/
├── train/
│ ├── hr/{var}/*.npy
│ └── lr/{var}/*.npy
├── valid/
│ ├── hr/{var}/*.npy
│ └── lr/{var}/*.npy
├── test/
│ ├── hr/{var}/*.npy
│ └── lr/{var}/*.npy
└── static_variables/ (可选)
输出目录结构
训练输出直接保存到 log_dir 指定的目录:
code
log_dir/ ← 训练输出目录(由配置指定)
├── train-xxx.log ← 进程日志
├── train-xxx.error.log ← 错误日志
├── config.yaml ← 训练配置
├── train.log ← 训练日志
├── best_model.pth ← 最佳模型权重
├── training_report.md ← 训练报告
└── plots/ ← 可视化图表
├── loss_curve.png
├── metrics_curve.png
├── lr_curve.png
├── metrics_comparison.png
└── training_summary.png
参考文档索引
| 文档 | 内容 | 何时读取 |
|---|---|---|
references/models.md | 模型详细说明和推荐参数 | 需要模型细节时 |
references/parameters.md | 所有工具参数 | 需要参数细节时 |
references/background-training.md | 后台训练模式详解 | 训练启动/状态查询时 |
references/visualization.md | 可视化与报告生成 | 训练完成后生成报告时 |
references/examples.md | 对话示例 | 需要参考示例时 |
references/errors.md | 错误处理指南 | 遇到错误时 |