单集群可扩展到几十万卡,这句话要拆成四层才敢写进方案

一、一句规模话,四层独立的成立条件
据公开报道,有厂商发布新一代 AI 芯片,说法是算力较上一代提升约三倍、单一集群可扩展至五十万卡;同一场发布里,负责人把模型、芯片和云基础设施列为战略三项重点。这两个数字我们不做任何换算,也不拿它们当结论依据——把它们写在这里,只是为了说明一件事:规模数字在方案里出现的当天,它就从产品参数变成了一句交付承诺,而承诺要能被判定有没有做到。
“单集群能扩到多少卡”从来不是一层的事。它至少同时依赖四个独立条件:互联域里同域带宽与跳数能不能随规模保持;电力与制冷给不给得出那么多机柜实际要用的功率;故障域是不是大到单位时间内的故障数已经能持续打断作业;软件调度层能不能在这么大的拓扑上做拓扑感知、并行切分与排队。四层里任何一层先撑不住,那句话的可行边界就停在那一层,而不是停在算力上。方案书里最常见的错误,是把这四层当成一件事写,然后在扩容实施时逐层补票。
这四层的性质也不同:互联与电力是一次性建设问题,故障与调度是长期运营问题。前两层决定能不能建成,后两层决定建完之后能不能一直用。预算通常按前两层做,人力通常按后两层省,这就是很多大规模集群”验收通过、运行半年后没人敢接新业务”的原因。
二、四层各自最现实的验证方法
每层都有能落地的验证动作,也都有不该信的信号。
| 层 | 要回答的问题 | 最现实的验证方法 | 不该信什么 |
|---|---|---|---|
| 互联域 | 同域内跳数与带宽是否随规模保持,跨域时扩展系数如何变化 | 在同构拓扑上跑实测通信带宽,并给出规模递增的扩展曲线,两个规模点以上才算趋势 | 规格表上的单端口标称带宽 |
| 电力与制冷 | 单柜功率上限是多少,供电冗余之后实际可用余量还剩多少 | 看单柜实测功率曲线与峰值工况下的冗余后余量,而不是设计值 | 铭牌功率与”按设计留了余量” |
| 故障域 | 单位时间故障数是否随规模近线性增加,作业能否只重算受影响部分 | 按连续七天窗口统计节点重启次数与作业中断次数,并核对中断后的续跑方式 | 一次演示期间的零故障 |
| 软件调度 | 拓扑感知、并行策略与排队策略是否真的支持该规模 | 检查并行策略能否支持非整倍数规模与异构拓扑,观察调度是否按拓扑放作业 | 控制台上有”拓扑感知”这个开关 |
互联那一行要特别说清楚:单端口带宽再高,跳数一多、跨域一发生,有效带宽就是一回事。判断依据只能是随规模递增的实测曲线,因为只有它同时包含跳数、收敛比和拥塞行为。只给一个规模点的实测值,说明不了任何可扩展性。
故障那一行的关键在”只重算受影响部分”这句话。规模上去后,单位时间内的硬件故障数近乎线性增加,这件事本身不可怕,作业能不能只丢一小块才关键。判据要写成可执行的:一次节点级故障发生后,作业是整体重来,还是从检查点续跑,续跑要付多长的重算代价。
调度那一行最容易被界面骗过去。非整倍数规模是个很朴素测试——一个规模的作业能不能只占用一部分资源、并在拓扑受限的前提下仍能启动;很多只支持整节点池的策略在这里就露底了。
三、”单一集群”这个词有三种理解
真正在合同里出问题的,往往不是数字而是这个词。同一句”单一集群”,客户、供应商、集成方常常各自指着三种不同的东西:一张调度域,即作业能被同一个调度器统一放置与抢占;一个网络平面,即这些卡在一个互联域内可达,跨出这个平面就要付代价;一个电源域,即它们挂在同一套供配电与制冷之上,一次电力事件会同时影响全部。
三种理解在中小规模时高度重合,所以没人注意;到了大规模就必然分离,届时才谈代价就晚了。所以采购文档与合同里要把”哪一种”点名写出来,并各自附上边界条件:调度域写清管控面的故障会不会让全部作业停;网络平面写清跨平面时延与带宽如何变化;电源域写清单点电力事件的影响范围。三项都不写,最后签到的只是一个自己会被重新解释的名词。
顺带一条:多集群方案里最容易低估的是跨集群作业这一项。多集群把故障域和电力域拆小了,运维简单,但一个训练任务跨集群跑基本不成立;单集群把这些都收在一处,规模大,代价是故障与运维复杂度也集中。选哪一边,标准不在集群有多大,在下面这三条。
四、代际提升真正落在哪一层
从上一代到新一代”提升数倍”这件事,方案里通常把它写成峰值算力变大。但对交付来说,这一句最实际的影响多半不在峰值算力,而在显存容量与带宽——这两项决定了一个更大的模型能不能装下、一条更长的序列能不能跑。
差别在决策路径上很清楚。峰值算力不足,可以用更多卡并行补,代价是通信与调度复杂度上升;显存不足不能靠加卡解决,只能改并行切分方式、缩短序列长度或者做重算,改完之后原来调好的那套配置基本作废。所以看到代际说法,我们要问的第一句是:单卡的显存容量与访问带宽这两项怎么变,而不是总算力怎么变。第二个要问的是这两项对现有作业意味着什么——同一套并行策略在新硬件上是不是仍然最优,多数情况下它需要重新调一遍,这个工作量在方案里要单独列。
五、把规模说法转成采购问题清单
规模数字本身不进方案,进方案的是一组问题。五问如下,缺任一条都无法估出真实预算:
- 最小可交付规模是多少,即第一次能跑起来、能被验证的那一档要多少卡、什么配置。
- 扩到该规模需要哪些配套:互联升级、机柜与电力改造、调度软件版本、存储与数据供给能力。
- 这些配套由谁交付:芯片方、整机方、机房方还是我们,配套与主体之间的责任边界写在谁的文件里。
- 超过什么规模后收益开始递减,以及判断递减的观测量是什么。
- 在该规模下,故障恢复与作业续跑以什么形式承诺,承诺的判定动作是什么。
这五问也直接适用在单集群与多集群的选择上。三条判据按顺序过一遍:第一,目标模型能否装进一个并行域——装不进,单集群再大也是伪命题;第二,数据在哪个域——训练数据的存放与读取带宽受谁约束,跨域读取的代价是否可接受;第三,团队有没有能力处理跨域故障——运维人力、调度经验、故障响应流程是否到位。第三条常被忽略,但它是唯一一条会随时间变差的:规模翻倍,跨域故障的组合形态不是翻倍而是相乘。
六、方案书措辞纪律与验收三项
数字进方案书有两条硬规矩。凡未实测的规模,一律标注为厂商口径,写清是谁的说法;凡我方验证过的结论,写清测试条件、拓扑形态与那一次测试的可查记录标识,两者不能混写。混写的问题不是不严谨,而是让我们变成厂商口径的下游:对方那句话以后出了偏差,客户追责的对象是写在方案里的那一行字,而那一行字是我们抄的。同理,代际提升的说法要注明比较基准是什么,没有基准的”数倍”在方案里等同于没有信息。
交付顺序上,洹拓的做法是两段而不是一个大承诺:先交一个能跑起来的中等规模,把互联、故障与调度三层在同一环境里跑通;再交一份”扩到更大规模需要改什么”的清单,逐项写明改动对象、验证方法与由谁负责。这份清单比大集群承诺有用,因为它把风险放回到了它实际所在的位置——每一层的拐点,而不是那个总数。
验收表上必须出现三项,缺任何一项就不算验收过:通信带宽实测值,写清测试规模、消息大小与拓扑;故障恢复时间与作业续跑能力,写清注入的是哪一类故障、作业从哪里恢复;拓扑感知调度是否生效,用受控作业证明放置结果确实按拓扑走,而不是看界面上的配置项。三项都是”能不能判定”的问题,不是”有没有功能”的问题——这也是所有规模类说法进方案前应该过的唯一标准。