GPU 云成本腰斩指南:Spot 竞价实例跑 AI 训练的实操坑
同样的 A100/H100,用 Spot 竞价实例能把训练成本砍掉 60%–80%。但中断、重启、数据丢失三大坑会让新手崩溃。本文给出容错训练栈与成本测算。
训练一个中等规模的模型,按需实例(On-Demand)烧钱有多快?一块 H100 每小时约 3–4 美元,跑一周就是 500–700 美元。而同样的卡,Spot 竞价实例经常只要 1/3 到 1/5 的价格——代价是:它随时可能被云厂商收回,通常只给你 30 秒到 2 分钟撤离时间。
省钱的秘诀只有一个:让训练任务对”随时会死”这件事免疫。
坑一:实例被回收,进度归零
解法:把 Checkpoint 当作一等公民。
- 高频存 checkpoint:每 5–10 分钟落一次,而不是每 epoch。中断时最多丢几分钟。
- 存到外部对象存储,不是本地盘。Spot 实例被回收,本地盘一起蒸发。
- 保存完整状态:不只是模型权重,还有优化器状态、学习率调度器、随机种子、数据加载器进度。否则恢复后训练轨迹会漂移。
- 原子写入:先写临时文件再 rename,避免存到一半被中断产生损坏的 checkpoint。
坑二:重启后状态对不上
解法:确定性训练 + 断点续训脚本。
恢复时最容易出的错是”数据顺序变了”或”step 计数错了”,导致训练结果无法复现。要点:
- 固定全局随机种子,并在 checkpoint 里保存当前 epoch/step 的 RNG 状态
- 数据加载器支持从指定样本索引恢复,而不是从头 shuffle
- 启动脚本先检测最新 checkpoint,存在就自动续训
这样实例被换掉后,新实例拉起、拉取 checkpoint、无缝续训,调度层完全无感。
坑三:便宜实例抢不到
Spot 的价格随供需浮动,热门卡(H100)经常被抢光或价格飙升。
解法:多区域 + 多机型竞价策略。
- 同时挂 3–5 个区域、2–3 种机型(A100/H100/L40S),谁的价低且有空闲就用谁
- 设价格上限,超过阈值自动停,避免”便宜没占到反而更贵”
- 用竞价型托管服务(如托管式 Spot 训练平台)自动处理中断重调度
成本测算实例
假设训练需 100 卡·小时:
| 模式 | 单价/卡·时 | 总成本 | 风险 |
|---|---|---|---|
| On-Demand | $3.5 | $350 | 无 |
| Spot(平均) | $1.1 | $110 | 中断 |
| Spot + 容错(含重跑损耗 10%) | $1.21 | $121 | 可控 |
省下 65%,而多付出的工程成本主要是写好 checkpoint 和续训逻辑——这是一次性投入,长期复用。
什么时候别用 Spot
- 短任务(<30 分钟):中断重跑不划算,直接用按需
- 调试阶段:频繁改代码,checkpoint 意义不大,按需更省心
- 无法 checkpoint 的任务:某些推理实验或超长单步任务,谨慎使用
一句话总结
Spot 实例的本质是用工程确定性换取价格折扣。把 checkpoint、续训、多区域调度这三件事做扎实,AI 训练的 GPU 账单就能直接腰斩。对预算敏感的团队来说,这是 2026 年最划算的优化之一。