编辑 | 言征
出品 | 51CTO技术栈(微信号:blog51cto)
临近年底,业内曝出了不少大新闻,比如大模型撞墙、谷歌的Gemini 2 Flash和量子芯片Willow,再比如英伟达面临着中国反垄断调查的危机等,所有这些,让国产AI算力的话题再次成为圈内的热议点。
那么,国产算力中心构建究竟什么情况?背后支撑大模型训练和推理的计算机系统现在都面临着怎样的难题?为什么包括ChatGPT在内的大模型时不时就会出现宕机的情况?
“为什么异地卡联合训练很难?数据从从北京到贵州需要5天,有了结果后再到上海又需要5天。”
12月13日,中国工程院院士郑纬民教授在中科金主办的《大模型技术与应用创新论坛》上带来了一场信息密度极大的内容分享,既有干货,也有一些有趣的猛料。
郑院士表示,构建国产万卡系统非常重要但难度也很大,真相非常残酷——异构卡联合训练不如单一架构联合训练划算,而异地卡联合训练效果同样不佳。
此外,大模型完整的训练和推理过程不止GPU算力那么简单,还有很多的系统工作需要深入研究,比如存放训练数据的硬盘、再比如数据预处理,有消息称GPT4,1万块A100要训练11个月,有5个月的时间都在做预处理。
重要的是,对于中国国产而言,最大的难点之一还是在于国产计算系统的核心基础软件,生态还不够。
郑院士还分享了当红大模型独角兽月之暗面的AI产品Kimi的一些进展和研发经历,他透露了初始时Kimi因为流量暴增宕机时,原来是“一死机就买(GPU)卡”,现在采取了Mooncake架构之后,就再也没出现宕机的情况。
摘要如下:
- 为什么算力产业快速发展,一是全面启动东数西算,二是AI让智能算力需求爆发。
- 人工智能大模型生命周期五个过程,每个过程都需要大存储、大算力。
- 万卡很重要,我们都希望有万卡,但现在做得不太好,很难。
- 异地卡、异构卡训练效果非常差,暂时不要考虑。清华带队开发的“八卦炉“”是一个系统软件,装到卡里性能就会好了。如果效果好,可以少买30%的卡。
料还很多,话不多说。以下是郑院士的演讲全文:
1.大模型+,中国还是可以超过美国的
郑纬民:谢谢魏所长,喻总和各位朋友,今天用25分钟时间讲讲大模型训练机理的计算机系统怎么样了。
今年大模型有两个特点,第一是分析基础大模型进入多模态状态,不光有文本,还有图像、视频,就是多种模式,多模态这是第一个特点。第二个特点,真的用起来。大模型+实际的东西,比如大模型+金融,大模型+医疗、大模型+汽车、大模型+智能制造、大模型+各行各业。
前几年不是说大模型没有用,也用了,但更多的是给它几段话,让它写一个PPT,画一幅画出来,写一篇文章出来。这也挺好的,但今年的应用真的是大模型跟国民经济GDP,跟生活水平提高密切结合。我一直认为基础大模型,我们的水平跟美国人比还是属于差一点。他们比我们做得好。但“大模型+”这件事我们还是有希望超过美国的。
2.大模型生命周期的五个环节
大模型有五个过程,第一是数据获取,大模型就是训练数据,第一件事是把数据获取起来,从哪里来?从世界各地。但取来的文件是小文件,小好,省硬盘,这是一个特点。但是个数多得不得了,数百亿个文件。这些文件都放到硬盘里,但要记住放在硬盘的哪个位置里。一百亿个文件有一百亿个位置,我们一般叫源数据处理,也就是说像个目录一样,数百亿个位置你要记住,对计算机来说比较麻烦,一台计算机搁不下,那就两台、三台、五台、十台。但随着位置多了,找位置要找一会儿,怎么让数据搁得下,找得快?这是数据获取比较麻烦的事。所以最后结论是把数据拿来放到硬盘里,多得不得了。这是第一件事。
第二是数据预处理,数据已经拿来了,直接训练就行了吗?还不行。数据质量不高,格式不一样,里面有广告,有重复的,还有其他不喜欢的内容。数据质量不好怎么办?预处理。把数据质量提高,重复的去掉,广告去掉,数据质量越高,训练结果越好。预处理这件事也很麻烦。有人统计,GPT4,1万块A100要训练11个月,有5个月的时间做预处理,仅训练之前的预处理就占了一半时间,非常长,成为训练的瓶颈。如何使预处理速度快?实际上就是大数据处理,把大数据处理软件做好很不容易。时间关系我不展开讲怎么做了。数据质量好了,就可以做训练了。
第三模型训练。训练需要很多算力,也需要很多存储,做起来事情挺多的,要解决的问题很多。但是我只讲一件事,假设10万块卡,平均一小时出错,一出错就要重来进行二次训练,到第二小时又出错,那就没完没了。过去做高性能的机器人都有一个办法,假设一个小时左右出一次错,我们怎么办?开始训练,训练到40分钟时,在出错前主动停下来。把当时的硬件、软件环境记到系统里,记到硬盘里去。记完以后继续开始训练,训练到1小时左右出错了,过去是从头来,现在不用了,把刚才记在硬盘的东西拿出来,从这个地方开始训练,这就比较简单,我们过去都是这样做的。但麻烦在哪呢?这个大模型训练数据量特别大,40分钟到了,主动把数据存到硬盘里,要存三个小时。一小时出一次错,那就乱成一锅粥,就不好办了。所以如何把这件事最后10分钟、20分钟解决?要解决的问题挺多的。不管如何,训练之后最终得到一个模型--基础大模型。
第四是模型微调。不是已经训练完了吗?第三个过程出来我们叫基础大模型,基础大模型如果给医院做医疗,还不怎么行。医院数据训练太小了,基础大模型是基础数据,打架的、看电影的、看小说的,医院的模型太小。所以模型的微调就是第二次训练,在基础大模型的基础上再训练一次,训练什么?医院的数据。二次训练叫微调,出来的模型叫医院大模型。实际上你还可以继续,第三次训练。医院大模型假如说用来看B超还不怎么行,怎么办?在第二次训练的基础上,把B超的数据再训练一次,出来就是B超大模型,由此还可以继续下去。模型微调实际上是领域模型,第一次出来叫基础大模型,第二次出来的叫领域、行业大模型,行业大模型还可以继续细分下去,可以专门分为看肺的、看胃的,都可以做一次一次做下去。
最后模型推理,推理的确是用的情况。五个过程都需要算力、存储,都很费时间。
3.国产支持大模型训练的计算机系统现状
现在做大模型的公司有三类。第一类是研发大模型,就是做大模型本身的。比如说百度、清华都有专门做大模型的。第二大模型+X,这就是做应用了。做大模型是基础大模型,大模型+是结合产业,像中关村科金就是跟金融结合,大模型用在金融方面会做得很好。所以大模型+X是做应用的。第三支持大模型的计算机系统。比如1000块卡,1块万卡,怎么联(才能)让推理、训练很快等。
而当前支持大模型训练的,大概是第三类公司。
第一种是买英伟达的GPU训练,硬件性能好,编程生态好,大家都喜欢用。但问题是人家不卖给我们了,因此我们想办法用国产的。高性能的芯片不卖我们,使得我们的人工智能走向本地化。
数据实地化,内容主题化,算力国产化。但国产的大家不愿意用,因为生态不好。什么是生态?假设你有一个软件是基于英伟达写的,现在英伟达用不了,要移植到国产系统,如果很容易那就是生态好,否则就是不好。新写一个软件,跟过去的写法基本差不多这叫生态好,如果完全不一样,要重新学,这就是生态不太好。
4.解决国产智能算力,需要造10个软件
现在用国产,我们的生态不太好,我们想办法要做好十个软件:并行系统、编程框架、通信库、AI编译器、算子库、编程语言、调度器、容错系统、内存分配系统、存储系统。
比如,并行系统,现在不是1块卡,而是1000块卡、1万块卡,1块卡训练一百天,我们买100块卡,一天就训练完了。但中间要交换数据,交换一次是人家的90倍了,如果做得不好的话,100块卡我们希望有100倍效能,只能做到3、4倍的效率。我们希望有70倍、80倍、90倍这就叫并行系统,想办法接近100倍。做得不好,20倍。
再比如通信库,1000块卡、1万块卡要通信,怎么写好?算子库,写一个矩阵软件,最好不要写,调用矩阵成本软件,碰到什么就调用什么,这个库要写得多,写得好。要有编译器,国内会做编译系统的特别少,龙舟系统,一个小时就出错了,怎么才能继续做下去?
由于时间关系,我不一一赘述。
5.清华带队打造“八卦炉”
清华大学带着团队做了十个软件,学生起了名字叫八卦炉,实际上只做了七个,没做成十个,(图中)紫色的是清华做的,国内华为等很多公司,也做了相应的软件,我们凑了10个,协调“八卦炉”,硬件装到八卦炉里做训练,就会比较好。
图片
青岛有一台大机器叫神威,第一件事把“八卦炉”装上训练,三个大模型训练,训练出来的效能还是不错的。
过去训练一个大模型要投入几十亿,但现在我国有十四亿超算系统,钱都是国家付的,有的机器还有一点富余,在那里训练价钱是英伟达系统的六分之一。因为国内超算机器收费便宜,不像英伟达要把机器成本收回来还要赚钱。
所以在座各位如果要做大模型训练,到青岛的神威上做,六分之一的价格就够。
沐曦是上海做芯片的公司,我们把“八卦炉”装到它的系统上,从算子效率、并行方案、和集群支持,三方优化后,平均性能提升30%,如果性能跟原来一样,可以少买三分之一的卡。
燧原也是做芯片的,前几年的卡主要是做推理的。推理卡这件事也有存储器,训练完的参数搁到卡里的存储器。推理过程中是一步步推理,中间的过程叫KV-catch,我们希望训练完有参数,推理过程中的部署,KV-catch搁进去,这个东西搁不下性能就差。存储大小取决于推理快慢。我们想了一个办法,主机有存储器,一般推理的时候主体的存储器跟CPU不同时用,就可以把空出来的存储器用起来。
摩尔芯片是一家北京的公司,存储卡做得很不错了,我们把八卦炉装上,性能也取得了很大的提高。
(划重点,这里有一个猛料:月之暗面之前的宕机问题是如何解决的。)
Mooncake是Kimi幕后做大模型推理架构的,也是清华大学计算机系毕业的小伙子(杨植麟)在做。数据更多、模型更大,更长的上下文窗口肯定效果更好。它支持200万字的上下文,很多人都喜欢用它。
Kimi刚推出的时候一死机就买卡,买了五次卡还死机。最后我们想了一个办法,更高推理负载意味着要买更多的推理卡,但推理卡主要是存储器不够,用的人多了,就要扩大,这件事也麻烦。
图片
我们想了一个办法,一篇文章,第一个用户说总结一下这篇论文,第二个用户说这篇论文关键创新是什么,第三个用户说有哪些相关研究,第四个用户问这篇文章可以进一步探索什么。如果四个用户是独立的,每个用户都要独立占用资源。用户可能有几万个,以前都是独立的,现在把用户公共部分提炼出来,省了很多卡。
Mooncake以后就没有再死过机,把存储器好好用,也可以省很多卡。
6.两点看法:关于国产万卡系统和异地卡联合训练
第一点,构建国产万卡系统很重要也很难。人工智能需要越多的卡越好,万卡系统要做,但是很难。首先,因为人家不卖给我们了,只能建国产一万块卡。
其次,什么叫好?一万块卡建完以后,大家基本都喜欢用,而且要基本好用,达到这个目的非常难。
现在建的卡有多少用户喜欢用?第一块卡是A公司的,第二块卡是B公司的,第三块卡是C公司的,一起用效果极差。不要用这种方式,少弄一点研究一下可以。如果是做高性能计算,最初买Intel芯片1000个,后来出新芯片了,又买了1000个,新芯片、老芯片各有1000个,软件不用改,就可以转起来。但前1000个芯片本事小一点,后1000个芯片本事大一点。
一个任务来了,分成2000份,还要记得给其中1000个芯片分小一点的任务,另外1000个芯片分大一点的任务,这还是静态的。如果是动态的,你怎么分?
这就是木桶效应,有的板长,有的板短,整个桶装多少水是由短板决定的,新板子再长也没有用。所以1000个老CPU和1000个CPU合起来,性能比2000个老CPU性能还低一点,为什么要做这件事?
第二点,异构卡联合训练,效果不太好。现在加上异构卡,就更难了。静态的任务,我们都不会合在一起做,中国人不做,美国人也不做,因为不合算。此外,异地卡,为什么更难,因为数据从北京传到贵州,5天才能到,怎么训练?贵州做出来结果送到上海,又要5天,怎么做?异构卡、异地卡训练效果都不好。钱少的人不需要做,钱多的人可以试试。
谢谢大家!