老板丢过来一句「自己训一个模型要花多少钱」,你打开表格却不知道第一行该填什么。训练费用不是一张报价单,而是好几类支出叠在一起,其中最大那块还取决于你试错几次。这篇按构成项拆开讲,每一项给出估算口径、容易漏掉的隐藏开销和核对动作,最后给一张可以照着填的预算表。
有人丢过来一句「自己训一个模型要花多少钱」,你打开表格却不知道第一行填什么。这不是因为你不懂技术,而是训练费用本身就不是一张报价单,它是好几类支出叠在一起的结果,其中最大那一块还取决于你试错几次。先承认一件事:没人能拍脑袋给出一个准数,但你可以把账单拆成能逐项估算、能逐项核对的结构。
这篇给的是拆解口径,不是报价。算力、数据、人力、试错与配套这四类,各自量级差得很远,少算任何一类,预算都会偏。下面按构成项逐块讲清楚怎么估、哪里容易漏、什么情况下这套方法不适用。
先把训练账单分成四类,别一上来就盯着卡价
很多人做预算第一步就去查卡时单价,然后乘以一个拍脑袋的天数。这一步本身没错,但只覆盖了四类里的一类。算力是显性大头,数据与人力是慢刀子,试错是最容易被忽略的隐形项。四类不全,最后对不上账几乎是必然。
| 费用类别 | 显性程度 | 估算口径 | 最容易漏的点 |
|---|---|---|---|
| 算力 | 高,最先被想到 | 卡数 × 卡时单价 × 总时长 | 预热、重启、失败重跑的时长 |
| 数据 | 中,容易低估 | 采集清洗 + 标注 + 授权分开列 | 版权与合规成本 |
| 人力 | 中,常被当免费 | 按人月折算,含招聘与外包 | 周期拉长后反超算力 |
| 试错与配套 | 低,最常被忽略 | 基础算力的若干倍 + 存储网络 | checkpoint 膨胀与带宽瓶颈 |
- 先按这四类各写一行,别急着填数字,先标出哪些是自家已有资源、哪些必须外采
- 已有资源不等于零成本,机时、人力、存储都要按机会成本折算进去
- 外采项要问清楚报价包含什么、不包含什么,尤其是网络和存储
- 四类都列出来之后再回头填数,顺序反过来很容易漏项
算力费用:卡时怎么估,租还是买怎么记账
算力的核心公式就是卡数乘以卡时单价再乘以总时长。问题几乎全出在「总时长」上:真正跑起来的时间往往比你以为的纯训练时间长不少,预热、断点重启、配置错误后的重跑都要算进去。估的时候先把纯训练时长算出来,再乘一个你认可的经验系数。
- 卡时单价
- 按小时计费的单位价格,租卡场景随行情波动,具体数字到站内算力价格相关页面核对当时口径
- 总时长
- 纯训练时长加上预热、重启与失败重跑的时间,别只填理想值
- 租还是买
- 租卡按小时灵活但单价随行情变;买卡要把折旧、机房、电费、运维摊进来,看的是三年总账而不是采购单价
估卡数之前,先把模型规模、精度和并行策略定下来。显存占用和并行方式会直接改变你需要的卡数,这三项没定就估卡数,等于白估。站内算力测算与算力总览类页面有现成的口径,照着填能省不少反复。
- 先把模型规模和精度定死,再算显存与卡数,顺序不能反
- 租卡方案按小时单价乘以预估总时长,注意单价会随行情浮动
- 买卡方案按三年摊销,把机房、电费、散热、运维人员都算进去
- 如果算力需求波动极大、或者项目只跑几周,别按买卡摊折旧算,租更省心
数据费用:采集、清洗、标注、授权四项分开列
数据这块最常见的错误是按一次性采购来估。实际上采集和清洗是持续性投入,语料规模越大,清洗在总成本里的占比往往越高。你拿到的原始数据越脏,后面这条线就越长。
| 数据环节 | 计费方式 | 估算要点 | 不适用情形 |
|---|---|---|---|
| 采集 | 按量或按项目 | 区分自有、采购与爬取 | 完全用公开数据集时可省 |
| 清洗 | 按人力或工具 | 语料越脏占比越高 | 质量极好的现成语料可压低 |
| 标注 | 按条或按小时 | 主观任务单价明显更高 | 自动化标注能覆盖的任务可省 |
| 授权 | 按协议 | 商用语料、第三方数据集单独留一行 | 许可宽松的数据集可压缩但要留合规审查 |
版权与授权特别容易被漏掉。商用场景下的语料、第三方数据集、爬取内容的合规成本,都要单独占一行,别塞进清洗里。授权这件事压低不代表可以跳过,至少要留合规审查的人力。
人力与时间:算法、工程、标注管理三条线
人力按人月估算,算法和训练工程是主力,标注管理与质量抽检也要固定投入,不能只算写代码的人。周期越长,人力在总盘子里越容易超过算力,尤其是反复调参那段时间。
- 把人力拆成算法、训练工程、标注管理三条线分别估人月
- 周期越长越要警惕人力反超算力,别默认算力永远是最大项
- 折算成本时别只算工资,招聘、外包、协作工具都要进表
- 团队已有稳定班底做增量训练时,按增量人月算,别把整队人摊到单次训练上
一个容易犯的错是:把团队平时的人力和这次训练的人力混在一起。如果这次训练需要的只是几个人几个月,那就按增量算。整队人全程摊进来,预算会虚高,反而让老板觉得你不靠谱。
试错预算:失败重跑和调参轮次要单独留钱
训练很少一次成功。收敛失败、数据有问题、并行配置不对,任何一种都会让你重跑。重跑烧的不只是时间,是前面已经花掉的算力。这部分钱不单独留,就会在项目中途变成「钱不够了」的突发事件。
- 确认任务成熟度先判断这次训练是全新任务还是成熟流程的复现,成熟度越低,试错倍数越高
- 估算试错倍数按基础算力留一个倍数缓冲,具体倍数参考站内同类项目的实际口径,别自己拍
- 把缓冲显式写进表单独占一行而不是藏在小计里,方便后面行情变了只改这一处
- 定期复核每跑完一轮回过头看实际重跑次数,和当初的假设对一下,偏了就调
配套开销:存储、网络、机房与工具链
配套开销是四类里最容易被忽略的。checkpoint 会随着训练持续膨胀,存储和备份是长期费用,不是一次性支出。多机训练对网络带宽非常敏感,内网互联质量差会直接拖慢整体进度,变相把卡时成本抬上去。
| 配套项 | 增长方式 | 记账注意点 |
|---|---|---|
| 存储与备份 | 随训练时长持续增长 | 按长期费用列,别当一次性 |
| 网络带宽 | 多机训练时敏感 | 互联差会变相抬高卡时成本 |
| 机房电费散热 | 自建场景占比不小 | 租卡场景一般已含,要看清楚 |
| 工具链与监控 | 一次性加订阅 | 容易被当成小钱忽略 |
建议把这些按「随训练时长增长」和「一次性」分两栏。混在一起和算力糊账,后面想优化都不知道从哪下手。租卡方案里这些通常已经包含,但一定要问清楚包含到什么程度。
一张可填的训练预算表:行与列怎么设
有了上面四类,预算表就能落地了。行按四类展开到具体项,列设成单价、数量、时长、小计、是否已有、备注。每一行的备注写清楚假设来源,这样行情变了只需要改对应的一处,而不是整张表重来。
| 列名 | 填什么 | 为什么重要 |
|---|---|---|
| 单价 | 该项的单位价格 | 便于行情变化时单点更新 |
| 数量/时长 | 规模和周期 | 决定量级,先定规模再定数量 |
| 小计 | 单价乘数量时长 | 看每一类占总额的比例 |
| 是否已有 | 自家资源或外采 | 已有资源按机会成本折算 |
| 备注 | 假设来源与口径 | 返工时能快速定位 |
最后留一行「合计上浮缓冲」,把不确定性显式写出来。所有具体的价格数字都不要写死在表里,去站内算力价格指数、训练成本与算力总览类页面核对当下口径再填。
提交预算前的核对顺序与常见返工点
预算交上去之前,按固定顺序核一遍,能挡掉大部分返工。顺序错了会被整体推翻重来,尤其是模型规模没定死就先算卡数,几乎一定被打回。
- 核模型规模与精度这两项没定死,后面所有数字都不成立,先确认再往下
- 核卡数与并行方式基于已定的规模算显存与卡数,检查并行策略是否一致
- 核数据可用性与合规数据拿不到或合规过不了,直接停,别往下算钱
- 核试错倍数对照任务成熟度看倍数是否合理,别为了好看压低
- 核人力与周期确认人月和训练周期对得上,最后再看总额与缓冲
常见返工点其实就那几类:只算了训练峰值算力、没算存储与重跑;把人力当免费;把租卡单价直接当成总成本。这三个里任何一个漏了,预算基本都得重做。
训练预算不是算出一个数,而是把四类支出各自估一遍,再把不确定性显式写出来。下一步拿你手上的项目,先把四类各写一行,再逐项填数。算力行情、微调成本口径和同类项目参考,去站内对应页面核对着填,比拍脑袋准得多。→
常见问题
训练一个大模型,最贵的到底是哪一项?
多数项目里算力是账面最大项,但把试错重跑和数据清洗加起来,隐性支出常常追平甚至超过算力。建议不要只比卡价,按四类分别列出行,再看哪一类占比最高。具体量级去站内训练成本与算力总览页按当下行情核对。
我只想小规模试一下,用得上这套拆法吗?
用不上全部,但要保留算力、数据、试错三项。小项目最容易低估的是数据清洗和重跑次数,卡时反而好估。人力可以按实际投入的小时数折算,不必按人月算。
租卡和买卡,预算表上怎么体现差别?
租卡按卡时直接进算力行,简单;买卡要拆成硬件折旧、机房电费、运维人力,分摊到项目周期上。三年账的思路站内独立成篇,本表只需保证不把买卡的硬成本一次性全压到单次训练上。
试错预算留多少算合理?
没有通用数字,取决于任务成熟度:复现成熟流程可以留得少,从零预训练要留得多。做法是先在站内看同类项目的公开口径,再按自家团队经验打个折或加码,并写清假设,方便事后复盘修正。
老板只给了总预算,怎么倒推能做多大规模?
先把人力和数据这两块相对固定的支出扣掉,剩下的才是指挥算力的钱,再除以卡时单价和试错倍数,得到可用卡时,最后对照模型规模与并行策略反推卡数和时长。顺序不要颠倒。