第二百四十四章 他还没看过图吧?
汤圆模型在云垠的这批硅明生产的l100上已经远程试部署过了,算子适配都做完了,单卡和小集群都没什么问题。
韩路一和赵文渊这次过来,就是为了做最后一步的验收的,其中最关键的就是压力测试。
所谓压力测试,就是一下发送大量的请求,看看现在的架构能够提供最多多少人同时使用。
按照计划,在两周之内,御风的推理数据都要迁移上来。这个时间很紧张,所以中间一点儿差错都不能出。
御风现在注册用户是两百多万,日活二十万,单这个用量就快要把这五百张显卡的算力用满了。
幸好鼎盛那边送来的两千张卡快到位了,下一步的扩容有了方向。但是鼎盛的卡是另一家国产卡,算子和指令集与l100重合的不多,等于要用,在l100上做过的工作就得重做一遍。
这么一看,就体现了英伟达cuda体系的价值。当生态已经建立起来的时候,迁移成本高的可怕。
韩路一没有慌张,出问题是正常的,有他在,都可以解决。
“现在的数据是多少?”
“现在的每秒请求数(qps)在十六。”
韩路一挑了挑眉,来之前他们已经测算过了,要支持二十万的日活,每个用户每天都不止会发一条,多的可能几十条请求。
每秒请求数最少要在三十以上才行。
而现在的架构理论上能跑到五十,就算考虑到调度损耗、通信损耗、框架损耗这些,保守的看,也能到四十以上。
现在只有十六,只有最低标准的一半。
赵文渊一边说着,一边把电脑中的后台视图、监控曲线、输出日志都打开来在桌面上。
“江松然联系过了吗?”
“刚才发过信息,他还在看。”
江松然人还在海城,他入职的时候韩路一就保证过,绝不让他出差,所以虽然是这么大的事,韩路一也没带他过来。
“开个视频吧,一起看看,快一点儿。”韩路一说。
刘彧这边已经用手机拨通了视频。
画面里的江松然看起来也正在忙,头发很乱,背景是他的卧室。从早晨接到赵文渊的消息之后,他一直也没闲着。
“韩总,gpu利用率我们看过了,基本是满负荷了,问题不在这。”
看起来每张卡都在干活,但是产出却不快。
江松然和赵文渊又一起去查驱动日志。
从软件层面看,一切都很正常。
最后,赵文渊把模型配置都调出来,和江松然一起看。
配置没问题。
模型切分没问题。
并行策略没问题——
其实就这么用肉眼看,能看出问题的概率更小。
可是有的时候生产事故就是这么难排查,就像在盲人摸象。
所有的工具,各种监控数据,打印日志,各种热力图、散点图,都是为了帮你把这个象摸的更清楚。
但是人类毕竟不是计算机,人类看不见计算机的思考过程,只能想象。
当所有的摸象手段都不起效的时候,直接把代码、配置文件拿出来,然后想象运行的结果,有的时候也能奏效。
甚至可能越是大神,越是奏效。毕竟天才不能用常理来衡量。
听说冯·诺依曼当年极力反对使用高级编程语言(就是类似英语的编程语言)。他认为使用汇编就是和电脑交流最简单的方式了。甚至传说他能直接读懂只有0和1组成的代码。
其实江松然和赵文渊之前都已经把相关的内容排查过了,现在当着韩路一的面又做了一遍,并没有新的发现。
韩路一打开视界,目光锁定在电脑上,然后扫了一眼里面机房。
随着视界升级之后,韩路一不再被接收信息的带宽困扰,视界一开,就把周围的信息都收集完了。
然后他站起身,往旁边的准备区走过去,给自己穿进机房的装备。
这边江松然还在说他的推断:“单机没问题,小集群也没事,大集群的量上不去,肯定是在集群层面,而且是大集群有,小集群没有的东西。”
这边,赵文渊已经注意到韩路一的举动。
“韩总。”赵文渊站起身追过去。
韩路一已经穿戴完,他看了一眼赵文渊,说:“你也穿上,一起来看看。”
赵文渊赶紧穿上鞋套、防静电服和防静电手环,跟着韩路一进了机房。
刘彧和张彪在外面没进去。
机房里对静电防范要求极高,不允许带手机进去,而且即使带进去也基本用不了,因为机房本身防火防震的需求,再加上里面大量的金属机柜,天然就是一个法拉第笼,手机根本就用不了。
此时,在赵文渊的眼中,眼前就是一排排冰冷的金属机柜,每一个都长一个样。
但在韩路一的眼中,眼前的景象却完全不同。机柜和机柜之间的连接,数据流转,都以不同的颜色,像水流一样呈现在他的眼前。
gpu、服务器、交换机、光纤、端口、链路,所有这些东西都变成了一张复杂到超出人理解能力的、复杂的地图。
这张图即使拿到其他人眼前,他们也无法看懂。
太复杂了。
但是韩路一理解起来却全无障碍。
他几乎是一瞬间就定位了数据阻塞的来源。
有几组推理组之间的通信出了问题,节点和节点之间没有物理直连,却在逻辑上被分在了一起,数据从一个地方绕远路跑到另一个地方,再绕远路回来。
看似只是一个小小的点,但这种细微的差别在大模型推理的并行通信里,这一小点会被反复放大。
韩路一开口了:“不是模型的问题。”
赵文渊一愣,韩总,你已经解决了?这么快吗?
韩路一回头看了赵文渊一眼,发现他没有要问问题的意思。
他随后用对讲机和外面联系了一下。
“问题在网络拓扑。”韩路一说。
声音通过对讲机、再通过视频传到了江松然耳朵里。他马上在电脑上翻找起原始的网络拓扑图来。
这是他自己设计的,为的就是把集群的效率打满。
张彪很快就换好衣服,拿着打印好的拓扑图走了进来。
图和实际一对比,很快就能看出问题了。
江松然原本设计的是为了降低推理组之间通信延迟,把几个关键节点尽量放在同一个低延迟域里。
但云垠实际交付的时候,却没有完全按照这张图来进行部署。
他们使用了自己内部更标准、更容易维护的方法。
普通的、对通信延迟不敏感的服务器,这种接法完全没问题,属于为了可维护性做的小小牺牲,大家都可以容忍。
但是对大模型的使用场景来说,这一点小延迟就会被放大很多倍。
单点测试当然没问题,整机测试也没问题,因为问题出在服务器间的通信。
江松然的推断其实是对的,再给他一段时间,加上赵文渊的现场排查,他们应该也能查出来。
只是没有韩路一这么快罢了。
赵文渊看着两份图,脸色变得很难看。
他昨晚查了一整夜,什么gpu、驱动、配置、算子、服务、调度,全都查了,结果问题不在他能看到的任何软件层面。
而在机房布线。
还好韩总亲自来了,赵文渊心想。
江松然则在视频那边咽了口口水——韩总他是怎么看出来的?他之前是不是连这个原始的网络拓扑图都没看过?
张彪这边,已经迅速叫现场的运维工程师过来,通过节点间测速确认了问题。
排查完之后,修复起来就容易了。还不到十分钟,刘然就带着两个人跑了过来。
“韩总,韩总!实在是不好意思。”刘然气喘吁吁的说,“不知道你已经到了,不然我肯定全程陪同的。我听说你这边发现了点儿问题?”
张彪上前解释了一下。
刘然的脸色有点儿难看了。
这个事明显是云垠做错了,明明是要讨好的客户,怎么第一件事就没办好。
“韩总,我的。”刘然赶紧说,“我现在就叫人来,加班加点儿给你换好。”
韩路一背后有国网电力投资,这是他巴结都巴结不好的资源。
韩路一对这些表面功夫倒是不在意,他现在只想看修复之后每秒请求数能达到多少。
现在是争分夺秒的时候,只要能做到三十以上,那就是胜利。
刘然带来的人真的是加班加点、全力以赴的在工作,几个小时之后,线按照拓扑图的要求重新接过了。
赵文渊再次运行了压测程序。
每秒请求数缓缓上升。
八。
十六。
二十七。
三十九。
五十一。
最后停在了五十一,离理论极限还差了一点点。
但是理论是理论,实际能做到这个水平,已经可以说相当厉害了。
这就是江松然设计的链路的含金量。
看到这个结果,在场的所有人都松了一口气,包括一直等着看结果的刘然。
韩路一看着机房里亮起来的一排排服务器的指示灯。
汤圆,他制作的第一款大模型,终于在属于自己的集群上运行起来了。
从这一刻开始,他有自己的通用大模型了,从头到尾,视界出品。