国产万卡系统究竟怎么样了?中国工程院院士郑纬民:国产万卡很重要,但也很难,异地卡联合训练不太可行
编辑 | 言征
出品 | 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天 ,怎么做 ?异构卡、异地卡训练效果都不好 。钱少的人不需要做,钱多的人可以试试 。
谢谢大家!