Compute Budget Planner 用于在作业提交前估算和控制计算开销,帮助避免因冒烟测试规模不足、消融实验配置过度或设计不够精简所导致的 GPU 小时浪费。
用途
在以下情况使用该技能:
- 计划中的训练运行在提交前成本未知
- 需要为冒烟测试定规模,使其在不浪费完整 GPU 日的前提下提供有效信号
- 需要在调度所有变体之前对消融矩阵进行成本核算
- 更便宜的模型变体、更短的序列或更小的数据集可能回答同一个问题
- 可用算力有限,需要为作业设定优先级
- 论文的实验预算需要向审稿人披露或辩护
该技能不用于提交作业(应在规模确定后使用 run-experiment),也不用于实验设计(应先用 experiment-design-planner)。
配套技能:
- experiment-design-planner:在设计锁定前使实验范围与计算预算对齐
- run-experiment:用正确的资源规格提交已完成规模评估的作业
- baseline-selection-audit:当基线复现成本需要计入总预算时使用
- research-project-memory:将计算决策记录为证据或风险项
技能目录结构
<installed-skill-dir>/
├── SKILL.md
└── references/
└── estimation-guide.md
渐进式加载
- 始终阅读 references/estimation-guide.md
- 当存在此前运行时,读取 jobs/、configs/ 或 experiments/ 中的现有作业配置
- 当计算估算与论文主张相关时,读取 memory/evidence-board.md
核心原则
- 在提交前估算,而不是在等待作业超时时估算
- 使用不到完整作业成本 5% 的冒烟测试应作为默认第一步
- 计算成本会叠加:一个模型 × 一个数据集 × 一个种子是原子单元,消融会成倍增加
- 在投入昂贵运行前,应始终探索更便宜的替代方案
- 披露计算且可在标准硬件上复现时,审稿人信任度更高
- 低估计算是一种投稿风险:因硬件不可用而无法复现的结果会被审稿人关注
第 1 步 — 收集训练上下文
收集:
- 模型名称和参数量(或已知的近似 FLOPs)
- 数据集大小:训练样本数、序列长度或图像尺寸
- 计划训练时长:轮数或步数
- 批大小和梯度累积步数
- 硬件:GPU 类型(A100、H100、V100、RTX 3090)、显存、GPU 数量
- 框架和混合精度:FP16、BF16 或 FP32
- 已有吞吐量:来自此前运行的样本/秒或 token/秒(若有)
若无此前运行,使用 references/estimation-guide.md 估算吞吐量。
第 2 步 — 估算完整运行成本
计算:
total_steps = ceil(dataset_size / batch_size) × epochs
or planned_steps (if step-based)
gpu_hours = total_steps × seconds_per_step / 3600 × num_gpus
报告:
- 估算的 GPU 小时(单 GPU 等效)
- 按计划 GPU 数量的实际墙钟时间
- 该运行是否落在可用时间限制内(如 SLURM 24h、RunAI 策略)
若吞吐量未知,使用估算指南中针对该模型类别和硬件的参考值给出区间。
第 3 步 — 为冒烟测试定规模
冒烟测试应:
- 使用不超过完整运行计算的 5%(理想为 1–2%)
- 在单个 GPU 上于 10–30 分钟内完成
- 产出具有清晰下降趋势的损失曲线(证明代码正确运行)
- 覆盖完整数据管线、模型前向/反向、检查点和日志
建议:
- 冒烟测试步数:max(100, 0.01 × total_steps)
- 冒烟数据集:采样训练数据的 1%,或每个分片使用 1 个批次
- 预期冒烟墙钟时间:1× GPU 上少于 30 分钟
若最小可行的冒烟运行超过 30 分钟,需标记出来。这表明 setup 开销过高。
第 4 步 — 核算消融矩阵成本
对每个消融维度,记录:
| 变体 | 变更变量 | 成本倍数 | GPU 小时 | 优先级 |
|---|---|---|---|---|
| 基线 | — | 1× | required | |
| 消融 A | [移除的组件] | 1× | required | |
| 消融 B | [更改的配置] | 0.5× | should-have | |
| 扫描 C | [超参数] | 3× | optional |
将每个变体分类为:
- required:论文主张依赖该比较
- should-have:审稿人可能会问;若有理由可省略
- optional:锦上添花;算力有限时优先舍弃
报告:
- required 总 GPU 小时
- should-have 总 GPU 小时
- optional 总 GPU 小时
- 建议的最小运行集
第 5 步 — 识别更便宜的替代方案
检查以下任一项是否能以更低成本回答同一问题:
- 更小的模型/更少参数:125M 模型能否在扩展到 1B 前证明概念?
- 更短的序列/更小的图像:方法在半分辨率下是否有效?
- 更少的训练步数:早停或学习率预热能否在 50% 步数下给出有效比较?
- 更小的数据集:10% 子样本能否以 ±5% 相对误差复现趋势?
- 低秩近似:LoRA 或适配器训练能否替代全量微调用于此消融?
- 更快的硬件:A100 能否替代 4× V100 并以四分之一墙钟时间完成?
对每个替代方案,记录预期信号质量和结果产生误导的风险。
第 6 步 — 编写预算计划
保存到:
code/.agent/compute-budget.md
计划应包含:
- 完整运行估算(GPU 小时和墙钟时间)
- 冒烟测试规范(步数、数据比例、预期墙钟时间)
- 带优先级和成本的消融矩阵
- 已考虑并拒绝或接受的更便宜替代方案
- 可用资源范围以及预算是否匹配
- 建议提交顺序:冒烟 → required 消融 → should-have → optional
记忆回写
- 若计算成本影响论文主张的可行性,添加到 memory/risk-board.md
- 若接受更便宜的替代方案并改变了实验设计,更新 memory/decision-log.md
- 当计算细节需要被论文引用时(硬件、训练时长、GPU 小时),更新 memory/evidence-board.md
最终检查
在定稿前:
- 冒烟测试规范在 1 GPU 上少于 30 分钟
- 完整运行估算落在可用时间限制内
- 消融矩阵已分配优先级
- 已考虑更便宜的替代方案
- required GPU 小时在可用资源范围内,否则已提交风险条目