服务器专题 | 第32期:存一次盘,到底值多少钱
第32期 | 存一次盘,到底值多少钱
大模型训练不是一口气跑完的,是跑一段、存一次盘。Meta 的 Llama 3 论文里记了一笔1:16384 张 H100,54 天预训练,466 次任务中断,419 次是意外,其中约 78% 是确认或疑似硬件问题,平均下来约 3 小时坏一次。靠着 checkpoint 策略,有效训练时间维持在了 90% 以上。
存盘不是"存了就行",间隔是一门学问。存太勤,存本身烧时间;存太稀,坏一次丢的进度多。两次存盘之间隔多久最划算,有一条五十多年前的公式管着——而存储的写速度,直接改这道题的答案。写多快,决定训练的容错账多重。
· · ·
一、一次存盘,要写多少数据
先算分量。拿 405B 参数的模型算笔账(作者测算):bf16 权重 810GB;Adam 优化器的 m、v 两个 fp32 状态 3.24TB;再加一份 fp32 主权重 1.62TB。一次完整 checkpoint,约 5.7TB。权重要存,优化器的"记忆"也要存——没有那 3.24TB 的动量信息,训练接不回去,只能从头来。
存盘花多久,就是 5.7TB 除以写带宽。按 10GB/s 算,要 10 分钟;走并行文件系统,按 100GB/s 算,约 1 分钟。写是等,读也是等——坏了之后,还要把这 5.7TB 从盘里读出来,灌回上万张卡。
二、存得越快,存得越勤
两次存盘的最优间隔,1974 年 Young 先给出近似,2006 年 Daly 给出高阶估计23:τ ≈ √(2δM) − δ。δ 是单次存盘时间,M 是平均无故障时间。公式只有两行,意思却很实在:存盘越快,最优间隔越短——存得勤,坏一次丢的进度越少。
代入 Llama 3 的数字算(作者测算):M 约 186 分钟(3.1 小时)。δ=10 分钟 → 最优间隔约 51 分钟;δ=1 分钟 → 约 18 分钟。浪费率有两部分:坏一次平均丢半个间隔的进度(τ/2M),加上存盘本身烧的时间(δ/τ)。δ=10 分钟时,浪费约 33%;δ=1 分钟时,约 10%。
行业里藏这笔账的办法,思路都一样:把 δ 压下去。PyTorch 的分布式 checkpoint 接口里有个 async_save4:落盘扔给后台线程,训练循环不等它接着跑。还有分片写入——5.7TB 拆成几千份,并行往存储里写。这两招的潜台词很一致:如果存储不拖时间,根本不需要"异步"和"分片"两个词。
三、90% 的有效训练时间,反推回存储
回到开头那组数字:Meta 的有效训练时间 90% 以上,浪费约 10%。按上面的公式反推,单次存盘的等效时间必须压在 1 分钟量级——正是 δ=1 分钟那条线。这意味着他们写 checkpoint 的那条路,一定是并行文件系统级别的带宽,加上异步、分片,两件套缺一不可。
钱的账更直观。按公有云 H100 约 2.5 美元每卡每小时的公开口径算(作者测算,取常见报价中位):16384 张卡,一个小时约 4.1 万美元。浪费率从 33% 压到 10%,差出的 23 个点,一次 54 天的训练,多烧的就是千万美元量级的 GPU 时间。
所以给训练集群配存储,只看容量不看写入带宽,是在容错账上省小钱、在 GPU 时间账上烧大钱。存盘写多快,不是运维细节,是容错成本的决定变量。存储配得快一秒,训练就少烧一分——这笔账,存盘之前就该算。
觉 然 小 注
存盘是给训练留一条退路。退路留得多快,前进才有多敢——把这句话放进算力账里,一字不差。
· · ·
作者:小羲
九羲科技|重构服务器 · 硬盘 · 私有 AI 落地解决方案
系列目录
第5期 | L5 之后,机箱为什么就不许再改了
第6期 | 能点亮,不等于能交付
第32期 | 存一次盘,到底值多少钱
下一篇|第33期:企业级 SSD 的风向 —— 容量涨价、接口提速,选盘的账本要重算
引用与出处
[1] Meta. The Llama 3 Herd of Models. arXiv:2407.21783, 2024. https://arxiv.org/abs/2407.21783
[2] Daly, J.T. A higher order estimate of the optimum checkpoint interval for restart dumps. Future Generation Computer Systems, vol. 22, no. 3, 2006.(无网址,写全版本信息,不编链接)
[3] Young, J.W. A first order approximation to the optimum checkpoint interval. Communications of the ACM, vol. 17, no. 9, 1974.(无网址,写全版本信息,不编链接)
[4] PyTorch 分布式 checkpoint 文档(runebook.dev 文档镜像,转引自 PyTorch 官方文档,属二手转引). https://runebook.dev/en/docs/pytorch/distributed.checkpoint/torch.distributed.checkpoint.state_dict_saver.async_save
扫码加入九羲服务器AI落地群
文章、视频等内容为九羲科技原创,转载请注明出处
合作 | 联系我们:jx@jiuxii.cn
脚踏实地 行知合一
互相成就 拥抱未来