
训练大模型就像爬山。
2023年11月30日-12月1日,中国科技产业智库「甲子光年」主办的“致追风赶月的你——2023甲子引力年终盛典”在北京举行。现场百余位嘉宾与数百位科技从业者齐聚一堂,全方位聚焦当前科技领域的前沿话题,共同眺望充满未知和新鲜感的明日世界。
在12月1日上午“奇点已来‘AI与元宇宙’专场”活动中,新加坡国立大学校长青年教授、潞晨科技创始人兼董事长尤洋带来题为《Colossal-AI: AI大模型的挑战与系统优化》的主题演讲。
尤洋认为,大模型不管是训练、微调以及未来的部署,它对硬件的性能要求其实都是非常极致的。
以下是新加坡国立大学校长青年教授、潞晨科技创始人兼董事长尤洋演讲实录,「甲子光年」整理删改:
很高兴能与大家进行这次交流,我今天主要想探讨三个关于大模型的问题:我们是如何从零开始训练大模型、如何每日每月微调大模型以及如何高效地部署微调好的大模型。在开始之前,我先做一个简短的自我介绍。我目前在新加坡国立大学任教,同时也是潞晨科技的创始人。潞晨科技专注于提升大模型训练、部署、微调的效率。
首先,从我们的视角来看,大模型的发展面临着许多挑战,但同时也带来了许多机遇。从2016年到2023年,大模型的参数量呈超光速发展。即使存在摩尔定理,芯片每18个月速度提升2倍,内存每18个月增长1.7倍,但大模型的参数量,也就是其“脑容量”,每18个月增长了340倍。
有一个很有意思的点,从2016年到2020年,世界上最好的模型是ResNet-50,这是微软亚洲研究院提出的。到2020年6月,GPT-3出现了,这是ChatGPT最初展现出智能的版本。从这里到这里的参数量增长了1万倍,从大约2000万增加到2000亿。其实大模型的层数没有太多变化,ResNet-50有50层,GPT-3没有超过100层,我们发现这一波AI浪潮更像是宽度学习,把每个层变得更加宽泛,对计算的要求也更具挑战性。
1.大模型发展的机遇和挑战
目前来看,我们觉得大模型在三方面都有着各自的机遇和挑战:
第一,未来,大模型的能力不应该仅限于对话、聊天等最直接的应用。而是能够赋能千千万万行业,特别是传统行业,比如华为的矿山大模型、天气大模型,当然我们的客户也有一些制药大模型、金融大模型、法律大模型等等,社交、娱乐这种就更直接了。我觉得未来所有牵扯到密集信息处理的领域,都有大模型施展能力的机会。
第二,从我们的角度来看,目前大模型有许多不同的范式,其中一种比较流行的范式是基于LLaMA或GPT等基础大模型,来快速构建我们的领域大模型或行业大模型。这个阶段主要是一种微调,但这个大模型的高成本,使得99%的企业无法独立地开发自己的技术大模型。据OpenAI透露,ChatGPT的每次实验成本高达6300万美元,可能需要训练5到6次才能得到一个优秀的大模型,这相当于几亿美元的成本,使得绝大多数企业无法参与这个领域。
即使像LLaMA这样相对ChatGPT来说较小的模型,它也有700亿的参数,我们用2000个A100也需要三四周才能做一次实验,这个实验其实也是几百万美金,研发一个LLaMA几百亿参数的模型,也是需要数亿人民币的。
未来,随着技术的进步,我们将拥有更优秀的开源大模型,如LLaMA。基于这些开源模型,我们可以微调出领域大模型和行业大模型。在未来五年内,我们将在信息密集的领域看到AI的显著能力。
然而,实现这一目标需要经历多个过程。即使不进行训练,微调大模型也会消耗大量内存。直接使用AI大模型时,内存消耗量会更加惊人。我们都知道GPT-3有大概2000亿参数,我们可以做一个简单的数学运算,假如每个参数都用单精度去存,可能就是4B,2000亿就是200×10的9次方,再乘以4,只是参数就要占800G内存。
训练大模型过程之中,还需要梯度优化器状态。大模型训练就像是一个爬山的过程,我们需要一些导航的信息,它们的大小和跟参数是一模一样的。也就是说,我现在什么也不干,如果想训练一个大模型,至少需要3T的内存。但是单个GPU目前只有大概100G左右的内存,比如说A100,有800G版本的,40G版本的。这也就是为什么我们需要分布式计算,需要成百上千块的GPU去训练它的原因,甚至OpenAI用了上万块GPU。
大模型不管是训练、微调以及未来的部署,它对硬件的性能要求,其实是非常极致的。例如训练和微调的场景,假设我让ChatGPT给我画一张中国男足勇夺世界杯冠军这张图,这张图是不存在的,我觉得大模型很擅长这方面的创作。
但是我们试想一下就知道了,我生成这张图现在需要至少等10秒左右,这10秒对于搜索引擎的用户体验来说,它的延迟性还是非常高的。未来我们要想在大模型在一些关键领域落地,必须得让它做到零延迟,类似今天的搜索引擎一样。比如我搜索甲子光年的创始人,百度或Google通常能在几秒钟内提供大量详细的结果。这种推理性能在大模型的实际应用中至关重要。为了解决这个问题,我们的团队打造了Colossal-AI系统。Colossal在英文中意味着巨大,这与大模型不断增大的趋势相呼应。
1944年6月,世界上第一台计算机在英国诞生,当时的名字就是Colossal,这是英式英语中的词汇。我们为了纪念那些先驱者,选择了这个名字。Colossal-AI旨在让用户以最低的成本、最高的效率来训练和部署自己的大模型。无论用户使用什么样的编程接口,如Pytorch、Tenser等,或者使用什么样的硬件,如CPU、GPU、NPU,都可以快速地训练、微调和部署自己的大模型。最终我们希望未来用户训练大模型或者部署大模型,像做PPT一样简单,然后把成本能够降低10倍、100倍。
2.技术进步提升大模型性能
第二部分,简单讨论一下Colossal-AI通过什么样的技术去实现性能的大幅度提升,其中涉及很多技术性术语,我可以用白话来说明它的主要功能。
在2020年6月GPT-3发布后,技术圈和AI圈都非常兴奋,很多人都尝试复现ChatGPT的效果和训练过程。NVIDIA是第一个成功复现ChatGPT并公开方案的公司。在GPT峰会上,NVIDIA的CEO介绍了他们如何使用3072个GPU来复现ChatGPT的训练方案。在2020年的时候,3072个GPU其实已经很多了。GPU的整体结构没有发生太大的变化,每个服务器还是8个GPU,8个GPU之内就做张量并行,意思就是我去切割神经网络层,神经网络有很多层,比如说80层、100层,只做层内切割。然后GPU之间再做层与层之间的切割,再用数据并行,即切分数据点。这类似于将学习任务分配给一屋子的人,如果有100个人,希望一起学习10万本书,那么一种简单的方式是每个人分配1000本书进行学习。这就是数据并行的基本原理。
具体到NVIDIA的案例,他们使用了3072个GPU来训练GPT模型。首先,每个服务器内有8个GPU,这些GPU之间只进行张量并行处理。然后,服务器与服务器之间组成一个小组,每个小组由64个服务器组成,小组内再进行流水线并行和层与层之间的划分。最后,64个服务器组成的小组再组成一个大组,这样就形成了6个大组之间的数据并行。通过这种方式无限的切割计算以及数据,我们最终能让每个GPU的效率都能发挥到最高。未来,我们想要在这样一种架构上,把这个性能最大化。
比如,如果现在有一家中国一线AI大模型公司,像OpenAI一样使用上万个GPU卡来训练和部署这些大模型。假设他们已经成功地在1000卡上无缝完成了任务,那么从1000卡到10000卡,他们的投资金额至少增长了10倍,这不仅仅是机器的成本,还包括网络连接等其他方面的投入。他们付出了10倍的代价,那么能否将训练速度或产品迭代速度提高10倍呢?例如,如果原来使用1000卡,现在使用10000卡,能否让10000卡的速度相当于1000卡的10倍呢?这听起来很容易,但实际上有很大的技术挑战。即使是像OpenAI这样高水平的企业,他们的资源利用率也只有36%。也就是说,从1张GPU卡到1000张GPU卡,他们只增加了3.6倍的速度,从1000张GPU卡到10000张GPU卡也只增加了3.6倍的速度。显然,我们希望投资能够带来至少9倍左右的增长,这才是比较合理的投资。
未来如果能在10000卡的集群上把速度最大化,对于一个AI大模型公司的产品起着至关重要的作用。比如说10000卡的时间从3个月变到1个月,其实就节省了数千万美元,再比如说我的产品6个月才能迭代一次,别人的产品1个月就可以迭代一次,显然我的产品是处于落后的状态。
我刚才提到,AI大模型非常庞大,需要进行极致的内存优化。除了使用GPU内存外,我们还需要考虑使用CPU内存,并尽量减少GPU和CPU内存之间的数据移动,以及NVME和CPU之间的数据移动。这是因为它们之间的频繁交互不仅能耗高,速度也会变慢,远远不如计算本身。
最后,我想快速介绍一下我们公司发布的Colossal-LaMA-2模型。虽然我们不是AI大模型公司,但Colossal-LaMA-2只需要少量数据就可以帮助行业用户快速创建自己的行业大模型。只需要花费几千元和半天的时间进行训练,就可以实现这一目标。目前,Colossal-LaMA-2在Hugging face上的下载量已经超过了20万。各位如果有兴趣,可以尝试一下Colossal-LaMA-2。谢谢大家。