SuperAPI AI 工具集

compute-budget-planner

数据与分析

查看项目

更新于 10-13 14:48

技能介绍

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 小时在可用资源范围内,否则已提交风险条目