扫码关注官方微信公众号

郑纬民院士:设计大模型基础设施需要考虑的五个问题

2024-08-29


1FFDD



       

7月6日-8日,信百会2024年度研讨会在清华大学经济管理学院隆重举行。在本次年度研讨会主论坛上,中国工程院院士,清华大学计算机系教授郑纬民作了题为《算力和存储是人工智能大模型的基座》的主题演讲。

他详细介绍了支持大模型训练的三种算力系统(基于英伟达公司 GPU 的系统、基于国产通用 GPU 芯片的系统、基于超级计算机的系统),以及人工智能大模型对存储的需求与挑战。他认为,设计大模型基础设施需要考虑五个问题:一是半精度运算性能与双精度运算性能的平衡,二是网络平衡设计,三是内存平衡设计,四是 IO 子系统平衡设计,五是如果是国产 AI 芯片的系统,还需要做好编程框架、并行加速等 10 个软件。“这五点如果做得好,别人要用 1 万块卡,我们用 9000 块卡就可以了。”他指出。

(本文根据郑纬民院士在信百会2024年度研讨会上的现场发言内容整理)




13E7F

图为 郑纬民



人工智能进入大模型时代


   

人工智能基础大模型正经历从单模态向多模态的演进。最初仅限于文本处理,随后扩展到图像识别,如今已涉及视频分析。人工智能在医疗、汽车、制造、矿山和气象等领域的应用正发生显著变化。这种发展对算力产生了爆发性需求,大模型生命周期的每个环节都需要强大的计算能力。

30B55


大模型开发主要包括四个阶段:模型开发、模型训练、模型精调和模型推理。在模型开发阶段,需要优化程序以提高效率。模型训练阶段耗时颇长,例如 GPT-4 使用一万块 A100 GPU,训练时间长达 11 个月。训练数据主要来源于互联网,涵盖工业、农业、娱乐等多个领域,由此形成的模型称为基础大模型。模型精调阶段则针对特定领域进行专门训练,如医疗或金融,以提升模型在特定领域的表现。
模型完成后,在处理用户请求时也需要大量算力。 无论是模型训练还是推理,都对算力有巨大需求。 在模型训练成本中,算力约占 70%,数据占 20%,人力仅占 10%。而在推理阶段,算力成本更是高达 95%。

23FF0


支持大模型训练的三种算力系统


   

目前支持大模型训练的系统主要有三种:基于 NVIDIA GPU 的系统、基于国产 AI 芯片的系统,以及基于超级计算机的系统。NVIDIA 系统因其出色的硬件性能和良好的生态系统而备受青睐,但由于政治因素,其供应受到限制,价格大幅上涨。近年来,国产 AI 芯片系统在硬件和软件方面都取得了显著进展。然而,用户对国产系统的接受度仍然不高,主要原因在于其生态系统尚未完善。一个良好的生态系统应当能够使原本为 NVIDIA 平台开发的人工智能软件轻松迁移到国产系统上。目前,国产系统在软件兼容性和开发便利性方面仍有待改进。为改变这一局面,需要开发好十个关键软件,以增强国产系统的生态竞争力。

     

国产软件生态需要做好的几件事


         


23057


大模型软件开发目前面临多方面的挑战,主要包括以下几个方面:

首先,框架的构建至关重要。现代大模型软件不再直接基于硬件编写,而是依赖于框架开发,这大大提高了开发效率。其次,并行加速技术亟待提升。当前的大模型训练普遍采用多卡并行方式。虽然我国自主研发的卡性能已达到一定水平,但在并行加速方面仍有待改进。第三,通信库的优化不容忽视。卡与卡之间的通信效率直接影响整体性能,因此高效的通信库成为关键。第四,算子库的完善同样重要。例如,高性能的矩阵乘法库可以显著提升计算效率。第五,AI 编译器的开发面临挑战。将软件编译至国产芯片上是一个复杂的过程,而国内在编译器领域的专业人才相对匮乏。此外,还包括编程语言、调度器、内存分配、容错系统、存储系统等在内的多个关键组件,总计约 10 个核心软件。虽然这些软件都有一定进展,但或是覆盖不够全面,或是质量有待提高。我一直呼吁,芯片生产厂商应当主导这 10 个软件的开发。只有将这些基础设施做好,才能吸引更多开发者使用国产软件栈,从而推动整个行业的发展。

目前,即便国产计算卡的硬件性能只达到国外产品的 50% 至 60%,只要能够完善相关的 10 个核心软件,仍能获得客户的认可和使用。当前,用户对国产计算卡的接受度不高,主要原因并非硬件性能不足。事实上,大多数用户并未明显感受到硬件性能的差异,他们更关注的是生态系统的完善程度。值得注意的是,即使国产硬件性能超越国外产品 20%,如果这 10 个软件未能得到充分开发和优化,用户依然会对国产方案望而却步。因此,我们可以认识到,在硬件性能达到一定水平后,软件生态系统的建设将成为决定产品成败的关键因素。

我国目前拥有多个高性能超级计算机系统,其中科技部正式认定的有 14 个,实际数量更多。这些超级计算机投资巨大,单台造价可达 10 亿至 20 亿元,性能卓越,为国民经济发展、国防建设和提升人民生活水平做出了重要贡献。鉴于这些高性能计算系统的强大能力,我们不禁思考:能否将其用于大模型训练?这是一个值得探讨的问题。另一个值得关注的现状是,部分超级计算机的使用率并未达到最高。针对这一情况,我们进行了一系列实验,重点探索软硬件协同设计的可行性。软硬件协同设计的核心理念是:软件开发人员需深入了解硬件架构,只有这样,才能开发出真正高效的软件。

以天气预报软件为例,说明软硬件协同的重要性。早期的天气预报软件主要由大气物理专业毕业生开发的。当时的计算机硬件相对简单,主要依赖 CPU,memory 和磁盘,开发者只需掌握一门编程语言和基本的数据结构知识即可。然而,近十几年来,计算机硬件架构发生了巨大变革。除了传统的 CPU,还出现了 GPU、TPU、DPU 以及 SSD 等新型硬件。如果开发者仍局限于传统的 CPU 知识,而对新型硬件如 GPU 缺乏了解,那么开发的软件要么无法正常运行,要么运行效率极低,无法充分利用硬件资源。只有当软件能够充分利用各种硬件资源,我们才能称之为实现了真正的软硬件协同。这种协同对于提升超级计算机在大模型训练等领域的应用效率至关重要。

 

48445

 
我们在青岛的一台高性能计算机上进行了实验。这台计算机不仅是我国性能最强的设备,在国际范围内也位居前列。我们选择将 LAMA 和百川两个大模型部署到这台高性能计算机上进行训练,同时确保训练结果的准确性。通过对比实验,我们发现,相较于在传统高性能计算机上进行训练,将模型在 NVIDIA 的 GPU 上训练,成本可以大幅降低至原来的 1/6 左右。值得注意的是,这台高性能计算机是国家投资购置的,用它来进行大模型训练的成本相对低廉。为了说明成本优势,我举例说明:有一家机构在进行大模型训练时,总计花费了 4500 万元人民币。这个价格在业内被认为是比较标准的。然而,我建议他们考虑在青岛的这台高性能计算机上进行训练,因为按照我们的计算,只需要用原来成本的 1/6 就能完成相同的训练任务。对于大模型训练,我们并不建议专门购置高性能计算机,因为其成本过高,可达 20 亿元。这种投资规模通常只有国家级项目才能承担。  


人工智能大模型对存储的需求与挑战


     

在大模型的全生命周期中,存储系统在每个环节都扮演着至关重要的角色。我们需要从整体角度审视训练和推理过程,包括数据的获取与处理。对于大模型而言,数据量越大越好,且呈现多模态特征,包括文本、视频等多种形式。这些数据的一个显著特点是以大量小文件的形式存在。如何高效管理和处理这些数量庞大的小文件,对计算机的存储系统提出了严峻的挑战。


475FF

在大模型训练过程中,数据预处理环节的重要性不容忽视。为确保训练效果,必须对原始数据进行严格的清洗和筛选。数据质量与最终模型性能呈正相关关系,高质量的数据集能够显著提升模型效果。以 GPT-4 的训练为例,整个过程耗时 11 个月,使用了约一万块计算卡。值得注意的是,在这 11 个月的训练周期中,接近一半的时间用于数据处理。这一事实凸显了数据预处理在整个训练流程中的关键地位。如果我们能够优化存储系统,提高数据处理效率,就有可能将总体训练时间从 11 个月缩短至 10 个月,甚至 9 个月。这种时间上的节省不仅能够加速模型开发进程,还能降低整体训练成本。

第三是模型训练,第四是模型推理。整个过程,都跟存储器有关系。  

4BED6

在大模型应用的推理阶段,存储系统的优化同样发挥着关键作用。     最近,我与一家上海的芯片公司合作,通过对存储系统进行改进,我们取得了显著的性能提升。具体而言,经过优化的存储系统使得推理性能提高了数倍。这一进步的意义非常重大,因为它直接影响到硬件投入的规模。     性能的倍数级提升意味着,为达到同等推理能力,所需购买的计算卡数量可以大幅减少。    


设计大模型基础设施需要考虑的五个问题


   
对于国家重点发展的万卡系统项目,即建设一万块国产计算卡的系统,我们需要特别关注五个关键方面。其中,     首要考虑的是半精度运算性能与全精度运算性能之间的平衡。     具体而言,我们首先需要评估其在处理 16 位二进制数(即半精度)和 64 位二进制数(即全精度)时的加减乘除运算性能。在人工智能应用中,16 位运算的性能尤为重要,这一点毋庸置疑。然而,64位运算性能同样不容忽视。理想情况下,64 位运算与 16 位运算的性能比应当保持在 1:50 到 1:100 之间。这种平衡能够确保系统在处理需要高精度计算的任务时仍具备足够的能力,同时又能在人工智能等主要应用场景中发挥出色的性能。              
第二个问题是网络平衡设计,     一万块 AI 卡购买回来之后,如何将它们连接起来?有人可能会问,这一万块卡之间是否可以直接互联,从而实现最快的通信速度?理论上,如果每两块卡之间都能够直接通信,通信效率将非常高。然而,这样的设计意味着每块 AI 卡需要与其他 9999 块卡直接连接,造成了巨大的连接成本。一块 AI 卡需要插入 9999 块连接卡,整个系统就需要 9999×10000 块连接卡。如此一来,连接卡的成本将远远超过 AI 卡本身的成本。即使在资金充足的情况下,这种方式依然存在问题。单台机器需要插入 9999 块连接卡,但物理空间有限,不可能容纳这么多连接卡。那么,该如何解决这一连接问题呢?有一个相对简单的办法:将一万块 AI 卡分成每组 100 块卡,组内的卡之间直接互联,这样每块卡只需插入 99 块连接卡。每组的 100 块卡都遵循这一连接方式,而组与组之间的通信则需要通过多步中继平均来实现。
第三,关于内存平衡设计。     内存的管理非常重要,特别是在处理大数据时,必须确保不会出现堵塞的情况。
第四,关于 IO 子系统平衡设计。     当我们将一万块卡片连在一起时,通常每几个小时会出现一次错误。可能有人会疑惑,为什么错误频率如此之高?事实上,这已经是世界先进水平的表现了。由于卡片数量庞大,错误的出现频率不可避免,大约每三到四个小时就会出现一次。在进行训练时,如果训练只进行一周,并在此期间观察错误的发生情况。假设系统平均每三个小时出现一次错误,训练就会停止,修复问题后再重新开始。如此反复,可能每隔三个小时就会遇到错误并重新开始训练。这种情况若无法有效控制,训练将陷入无休止的循环,最终无法完成任务。
过去,在高性能机器应用时,我们采取了一种策略来应对频繁出现的错误。例如,如果预期系统会平均三个小时出现一次错误,我们会在两个半小时时主动停止训练。这时,我们会将当前的系统状态保存到硬盘上,然后继续执行训练。如果训练继续到三个小时并发生了错误,以前的做法是从头开始,但现在我们可以直接从两个半小时时保存的状态继续训练,这样就省去了重新开始的麻烦。这个方法叫检查上点方法,在过去我们已经应用过了。然而,当涉及到大模型训练时,情况变得复杂得多。假如我们在两个半小时时保存数据,可能需要花费十个小时才能完成数据的保存过程。数据量过于庞大,导致保存时间极长,这使得我们在训练过程中,若在三个小时后发生错误,整个系统就会陷入混乱,无法有效继续训练。
应对这种情况的一个办法是在硬盘之前添加一个 USB,使用 U 盘来加速数据的存储过程。然而,更重要的是要优化文件的读写速度。我们的目标是一次检查点最好能在 10 到 20 分钟内解决问题。如果不能达到这个要求,那么整个系统的运行就难以顺利进行,甚至可能无法完成既定任务。

第五,如果使用国产 AI 芯片,还需要做好十个关键软件。前面提到的四个问题,英伟达 AI 芯片也面临类似的挑战。特别是对于国产芯片,这些问题更需要得到充分的解决。

8D2B8

如果以上五个问题都得到了妥善处理,别人可能需要一万块卡片,而你可能只需要 9000 块就能达到相同的效果。如果这些问题没有得到充分考虑,盲目操作的话,别人用一万块卡片就能完成的任务,你可能需要三万块才能实现。


文章来源|信百会  

编辑|段文秀

审核、责编|杨帆