壹 · 一万个厨子炒一盘菜过去两年,科技圈最常听到的豪言壮语就是:
我们公司又囤了一万张英伟达显卡。
一张顶配算力卡,黑市加价炒到二十多万人民币。
一万张卡摆进机房,光硬件采购加配套水电,起步就是三十个亿的真金白银。
外行听着觉得这事儿很简单:
显卡就是炉灶,数据就是食材,既然买回来一万口最贵的炉灶,把食材倒进去点火猛炒,大模型不就出锅了吗?
真等通上电按下开机键,才发现掉进了一个无底洞。
很多公司砸了十几亿把万卡集群搭起来,结果跑分一测,整座机房的有效算力利用率(MFU)连30%都不到。
这就好比你花一百万买了一辆法拉利,结果开上马路,跑得还没老头乐快,剩下七成的油钱全顺着排气管烧成了黑烟。
为什么把一万张好卡捆在一起,反而变蠢了?
这里头藏着云计算和大模型时代最拧巴的一个工程悖论。
以前互联网大厂搞云计算,比如支撑双十一网购或者春晚抢红包,虽然机房里也放着几万台服务器,但那叫“各干各的”。
好比一家开了十万平米的美食城,里面坐着一万个厨子。
顾客A点一碗牛肉面,派给1号厨子做;
顾客B点一份蛋炒饭,派给2号厨子炒。
一万个厨子互不打扰,就算3号厨子中途生病住院了,剩下999个厨子照样颠勺出菜,美食城连眼皮都不用眨一下。
可训练AI大模型,规矩彻底反过来了。
训练一个万亿参数的大模型,不是做一万盘蛋炒饭,而是让一万个厨子围着同一口直径百米的大铁锅,同时伸铲子炒同一盘菜。
1号厨子刚撒了一把盐,必须立刻扯着嗓子通知另外999个厨子:
“我撒了三克盐,你们手里的酱油和醋赶紧按比例调一下!”
等所有厨子对完眼神、算准了分量,大伙儿才能一起挥铲子翻炒第二下。
在技术行话里,这叫“全局同步训练”。
灾难,就从这一万个人的对眼神开始了。
贰 · 鞋带散了全队趴窝看到这儿你可能会问:
显卡算得那么快,对个眼神能耽误几秒钟?
问题不在于算得快不快,而在于我们熟悉的“木桶效应”。
我们可以把一万张显卡想象成一万个壮汉,把脚腕用绳子绑在一起,并排站在操场上玩“万人绑腿跑”。
只要枪声一响,这一万个人必须迈同一条腿,步幅分毫不差。
听着挺壮观,可你听过赤壁之战曹操把战船连起来打仗是什么结果吗?
历史总是惊人的相似。
假设每一张顶级显卡都是百里挑一的工业艺术品,它的稳定率高达99.9%,平均连续狂奔一千个小时才会出一次小毛病。
单看一张卡,三个月不死机,妥妥的劳模。
但如果你把一万张这样的卡绑在一起跑呢?
一万除以一千,等于十。
也就是说,在一万张卡的机房里,平均每隔两三个小时,就必定有一张卡会因为芯片过热、显存翻转、光模块落灰或者电源电压抖动,突然在赛道上摔个狗吃屎。
在以前的云计算美食城里,摔倒一个厨子根本没人管;
可在万人绑腿跑的赛场上,只要第8527号壮汉的鞋带散了蹲下来系鞋带,另外999个壮汉就得全部急刹车,站在原地干等着他。
更要命的是,大模型训练是没有“随时自动存档”这回事的。
为了省时间,算法工程师每隔几个钟头才会把训练进度往硬盘里存一次档,行话叫打一个“检查点(Checkpoint)”。
如果跑到2小时59分的时候,角落里有一块200块钱的光模块烧了,整个训练任务当场报错中断。
那对不起,前面一万张卡全速狂飙了近3个小时的成果全部作废,所有人退回上一次存档的地方,从头再跑一遍。
有大厂的基建负责人算过一笔账:
万卡集群每停摆空转一个小时,折算下来的硬件折旧费加电费,够直接在4S店提走一辆崭新的保时捷帕拉梅拉。
2023年刚上马大模型那会儿,国内不少算法团队天天围着机房转。
白天调算法,半夜修机器,一个礼拜有三天时间都花在“找哪张卡死机了”和“回滚重跑”上,头发一把一把地掉。
叁 · 揪出装死的南郭先生如果是显卡彻底黑屏死机,倒还算痛快,机房监控大屏上直接亮红灯,运维小哥推着小推车过去把坏卡拔出来换掉就行。
真正让工程师恨得牙痒痒的,是“慢卡”。
这就好比一万个人的绑腿跑队伍里,混进了一个刚吃坏肚子的南郭先生。
他也没摔倒,也没喊停,就是每迈一步都比别人慢半拍,拖着整支万人大军从百米冲刺变成了老太太遛弯。
在机房里,造成“慢卡”的原因千奇百怪:
可能是某台服务器风扇上糊了一层柳絮导致散热不良,显卡为了自保偷偷降频;
也可能是连接两台机柜的某根光纤接头松了零点一毫米,数据包传过去老要重发。
一万张卡,几万根光纤,几十万个焊点,怎么在几秒钟内把这个偷懒的南郭先生揪出来?
中国这帮专攻AI基础设施的工程师,硬是被逼成了机房里的老中医。
他们先是在每一张卡和每一根网线上埋下了毫秒级的“听诊器”。
两张卡之间每传一次数据、每算完一层神经网络,系统都会在后台拿秒表掐算时间。
一旦发现8号机柜的第3张卡每次交作业都比隔壁卡慢了五毫秒,不用等人工排查,调度系统立刻给它贴上“疑似带病”的黄牌。
紧接着,系统会趁着两轮计算的间隙,花零点几秒钟丢给它一道标准算术题验明正身。
一旦确诊它真的在偷懒降速,立刻启动“热替补”机制:
把正在跑的任务瞬间切换到机房里备用的替补好卡上,整个过程在几秒钟内偷梁换柱完成,外面的九千九百九十九张卡甚至感觉不到有人掉队。
那要是遇到真死机,非得回滚读档怎么办?
以前读档之所以慢,是因为要把几百GB的模型参数从慢吞吞的机械硬盘或固态硬盘里重新读出来。
工程师们干脆玩了一出“接力存钱法”:
打存档的时候,不往硬盘里慢慢写,而是直接用一秒钟时间,把存档塞进隔壁邻居服务器的空闲内存里,后台再慢慢往硬盘里倒腾。
靠着这手绝活,原本动辄半小时起步的故障恢复时间,被硬生生砍到了几十秒。
肆 · 塞车路口与修路工治好了单张卡的娇气病,还得治网线的“早高峰堵车”。
前面说过,一万个厨子每翻一下勺,都得互相通报一声。
到了机房里,这就意味着每隔零点几秒,一万张显卡就会同时向网线里倾倒海量的梯度数据。
这画面就像每天早上七点半的北京天通苑地铁站,几万个人在同一秒钟往一个检票闸机口里挤。哪怕你的网线修得像双向八车道的高速公路,只要调度稍微歪一点,所有数据包在交换机路口撞成一团,显卡再快也只能干瞪眼等快递。
为了不让几十万块钱的显卡等网线,基建团队把机房的网络拓扑改造成了立体高架桥。
他们给不同的数据流分了车道:
同机柜里的八张卡,走专属的超宽铜缆内环路,面对面吼一嗓子就能听见;
跨机柜的对账数据,由智能交换机像老交警一样在路口实时看车流,哪条光纤空着就往哪条道上引流,绝不让两辆大货车顶牛。
更有意思的是,为了把电费和算力抠到极致,工程师们还搞出了“错峰拼车”。
大模型不仅要训练,平时还得回答全国网友的提问,这叫“推理”。
白天大伙儿都在上班刷手机,提问的人乌央乌央的,机房就把大半的显卡切过去陪网友聊天;
等到了半夜两点,网友们睡着了,系统立刻在一秒钟内把闲下来的显卡收回编队,并入训练大军里接着拉练。
一分钱掰成两半花,一滴算力都不让它落地。
过去人们聊起人工智能,聚光灯永远打在那些在发布会上演示写诗、画画、做数学题的算法科学家身上。
但在乌兰察布的草原上,在贵阳的山洞里,在张家口的风口下,真正撑起中国大模型脊梁的,还有这群常年跟风扇噪音、光纤灰尘、显存报错死磕的“养卡人”。
算法的灵光一现固然迷人,可要把灵光变成人人可用的水电煤,拼到最后,全是这帮赛博修路工一寸一寸砸出来的苦功。