暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Google Fellow】重塑计算:需求如何引领下一代基础设施变革

Andy730 2024-06-05
394

【ANDY】非常有深度的洞察。1.(1)算力增长的模式发生根本性转变 (2)新需求与传统需求截然不同,所以,原来行之有效的设计原则和架构模式已经失效。2.过去20年实现了1000倍的提升,未来的提升模式要发生模式转换,可考虑的方法:专用硬件、光交换、软件定义服务器。

  • 讲座标题:重塑计算:需求如何引领下一代基础设施变革

    Reinventing Computing: How necessity will transform next-generation infrastructure

  • 地点:华盛顿大学计算机科学与工程学院

  • 主讲嘉宾:Amin Vahdat,Engineering Fellow and VP,Google

  • 讲座日期:2023年1月12日,星期四



Amin Vahdat
Engineering Fellow and VP

Google


摘要

随着大规模扩展、通用集群计算的兴起以及底层硬件性能的持续指数级增长,催生了20年前难以想象的全球规模的大型服务系统(planetary-scale services)和连接性。然而,支撑这一转型的底层趋势正逐渐消退,我们正面临机器学习、数据处理和主权方面的全新需求。在本次讲座中,我们将回顾这一变革的历程,并阐述当前计算格局需要新的思维和发明,以推动容量和能力(capacity and capability)的千倍增长,同时支持现代社会基础设施的根本性安全和可靠性姿态。特别是,我们将探讨以下新兴方法如何塑造下一代计算的架构范式:i) 计算专业化,ii) 系统整体优化而非组件优化,iii) 新的硬件组织、数据层次结构和编程模型。

-----

Hank Levy:下午好。非常感谢大家莅临我们2023年在保罗·G·艾伦计算机科学与工程学院的首次“杰出讲座”(Distinguished Lecture)。今天,我非常荣幸地向大家介绍演讲嘉宾Amin Vahdat。

Amin目前担任Google Fellow兼工程副总裁,负责数据中心的整体运营,涵盖计算、存储、网络、操作系统、机器学习加速器等各个方面,以及管理Google的所有工作负载。Amin于1998年在加州大学伯克利分校获得博士学位。在加入工业界之前,他在学术界担任教授长达15年,先后执教于杜克大学和加州大学圣地亚哥分校。在UCSD期间,他还担任了SAIC教授和网络系统中心主任。2012年,Amin加入了Google。他在多个重要系统会议上荣获最佳论文奖和时间检验奖。同时,他还是Sloan奖学金的获得者,并被授予ACM Fellow的殊荣。2020年,Amin因其在数据中心和广域网络领域的杰出贡献,荣获SIGCOMM终身成就奖。值得一提的是,Amin在完成博士论文时,曾在我们华盛顿大学计算机科学与工程系度过两年时光,给许多人留下了深刻印象。因此,我衷心欢迎Amin回到这个他曾经的家,为我们带来精彩的演讲。

-----

Amin Vahdat:非常感谢Hank的详细介绍。能在这里演讲,我感到非常荣幸和激动。Hank没有提到的是,我的博士导师是Tom Anderson教授。今天Tom也在现场,这让我感到特别荣幸,也让我与Hank和Ed结下了深厚的学术渊源。在华盛顿大学的时光,真的改变了我的人生轨迹。我不仅在技术上取得了很大的进步,更重要的是,我体验到了这里独特的文化氛围。我在华盛顿大学受到了非常热情的欢迎,这种经历一直激励着我,希望我能以自己的方式回馈社会。因此,我要表示由衷的感谢。我对此次演讲充满期待。

关于这次演讲,我有两点说明:我将介绍的大部分成果都来自于同行们的努力。我会对可能存在的错误负责,但所有的见解和成就都归功于他人。另外,我的演讲将基于我在Google的工作经验进行展开。因此,大家可能会听到很多从Google视角出发的内容。但请放心,这些内容并非仅适用于Google,它们同样适用于其他行业和公司,以及许多优秀的学术研究机构。

今天,我将与大家分享我认为计算领域在过去25年中最为激动人心的时刻。有时候,当我们长时间从事某一领域时,可能会感到有些麻木。但此刻,我比以往任何时候都更加充满热情。我认为,我们正站在计算领域的一个转折点。过去20或25年,一套设计原则和架构推动了计算领域的飞速发展,这令人难以置信。现在,很多人都在谈论“重塑”(reinvention),因为重塑总是充满吸引力。

但我认为,我们现在有机会进行重塑,不仅因为重塑会带来好处,更是因为我们必须这样做。换句话说,过去20到25年间推动发展的设计模式正在逐渐失去效力,甚至停滞不前。这意味着我们必须寻求新的解决方案。基于社会对计算的迫切需求,我们确实迎来了一个绝佳的机遇,来重新定义下一代基础设施的蓝图。

我接下来想要指出的是,许多我们今天认为理所当然的事情——比如某种做法或某种方式——在2000年时是完全不可想象的。这些想法在当时看来是非常激进的,你可能无法想象以这种方式构建系统。事实上,在2000年,很多人可能会认为我们现在的做法是错误的。因此,我认为这是一个非常令人振奋的时刻,我们有机会将那些看似不可能的事情变成现实。至于这一切将如何发展,我无法给出确切的答案,但我相信其中的机会是巨大的。

那么,是什么推动了这一切呢?我认为,从根本上来说,是新的需求。我喜欢将其概括为四个“S”。

首先,社会基础设施(Social Infrastructure)。如今,计算已经深入到我们日常生活的方方面面。事实上,我的家人曾经思考过,如果20年前就爆发了疫情,我们该如何应对?举个简单的例子,20年前我们能够像现在这样作为一个社会正常运转吗?我们可能会尽力而为,但结果可能非常糟糕。这并非我试图夸大其词,而是基于现实的真诚表达。然而,我们曾经并且正在以一种全新的方式做好准备,从疫苗研发到信息交流,我们都依赖于计算基础设施。因此,这意味着我们需要对可靠性和性能进行巨大的改进。在过去的20年里,我们在可靠性方面取得了100倍的进步,在性能效率方面取得了1000倍的提升。这是令人惊叹的成就,我们应该为此感到自豪。但我要说的是,我们还需要继续努力,因为现有的成果还远远不够。

第二,安全性(Security),我们的计算基础设施时常面临威胁,无论是来自内部还是外部。在Google,我们特别强调内部威胁与外部威胁同样重要,甚至内部威胁的防范更为关键。然而,我们的基础设施,以及许多其他公司的,都不断受到攻击。有些可能是无心之失,但其他可能是有意为之。我们必须能够抵御这些攻击。

第三点,可持续性(Sustainable)。这主要指的是无碳计算(Carbon-free computing)的推进。从目前的情况来看,计算可能消耗了全球1%至2%的能源,并可能导致相同比例的碳排放。我不是这方面的专家,对于具体数字我们可以展开讨论。但关键在于,目前计算的基本效率并没有每瓦特都在提升。如果我们要提供额外1000倍的能力,我们不能简单地提供1000倍的电力。因此,目前我们可能只占用了1%或2%的能源,但在未来十年或二十年内,这个比例绝不应该上升到50%、60%或90%。所以,可持续性是我们必须重视的关键点。

最后一个“S”是主权(Sovereignty)。现在,越来越多的国家开始思考,他们是否受制于其他国家(如美国)可能作出的决策。越来越多的国家和公司希望对其数据的存储和访问拥有控制权,这可能涉及谁可以访问数据、数据如何传输、如何复制,以及数据如何加密和传输等问题。这里我要强调的是,20年前我们可能会说,中央控制并不是构建大规模分布式系统的正确方式,它应该是去中心化的,但现在的共识似乎是:“哦,不是去中心化,而是需要某种形式的中央控制。”我和你们中的许多人可能都注意到了这一长期的变化。我们可能会再次回到去中心化,因为需求正在改变,这也将是一个非常值得关注的发展趋势。

回顾过去20年,如果我们粗略估算,假设性能效率在过去20年中每两年翻一番(这基本上是事实),那么我们在同样的成本下提供了1000倍的容量。这1000倍的增长使得之前认为不可能的事情变得可能。随着时间的推移,它使先前认为不可能的事情变得普遍和正常。20年前,实现从任何一种语言到任何其他语言的实时翻译,这完全是科幻小说的内容,但现在,曾经的科幻小说已经成为了可能。也许在不久的将来,我们将会实现这一点。

那么,是什么推动了这一切?再次强调,今天我们认为理所当然的事情在2000年却完全不显而易见。我们将使用商品化的存储、计算和网络硬件,因为它们是商品化的,可以利用现有的半导体技术,每两年性能和(更重要的是)性能效率将翻一番。我们将利用基于集群的计算,因此这体现了大规模扩展(Scale-out)的概念。大约在2000年左右,构建越来越大的系统和应用程序的方式是购买一台更大的计算机(一台非常高端且专业的计算机)。但想象一下,如果你采用商品化的部件并将它们扩展到今天的规模,从100到1000,再到4万到5万或更多,这在当时被认为是不可能的,或者至少是错误的做法。而且,你会采用中央控制(至少在逻辑上是中央控制),这在当时被认为是介于困难和不可能之间的某种选择。但通过这些技术,我们重新定义了规模和能力的可能性,并将其提供给全世界的开发者。

今天,互联网是全球实时通信的基础。有点令人惊讶的是,对于我们来说,尽管我们认为这是理所当然的,但我们在手机上实时访问几乎所有人类知识的能力,以及无处不在的蜂窝网络覆盖,现在已经成为我们认为理所当然和理所应当的事情。但在20到25年前,我们还只有百科全书。

可以追溯到更早时期,我引用的是1991年《纽约时报》的一篇很有意思的文章,标题为“‘致命微型计算机’的侵袭”(The Attack of the "Killer Micros")。文章的核心思想是,当时的主导公司,比如说世界著名的数字设备(DEC)公司等等,这些建造大型计算机的公司开始担心由商品化计算机(例如个人电脑或工作站)组成的集群,以及将它们通过商品化网络连接起来并开始在性能上击败这些大型计算机的想法。可以说,下一场革命的种子正在萌芽。我的意思是,早在这类事情变得普遍的十年前左右,就有一篇《纽约时报》的文章指出,这种情况正在发生,公司们开始对此感到担忧。又过大约十年,所有进行大规模计算和存储的互联网公司都将基于集群来运行。而这些集群的规模继续扩大。

这是我们位于爱荷华州康瑟尔布拉夫斯(Council Bluffs)的一个数据中心,拥有庞大的规模、海量的数据,同时还具有很高的“同质性”(hmogeneity)。同质性也很重要,因为它使构建和运营变得更加容易。

使用这种固定基础设施(fixed infrastructure),其中一个机房可能需要30兆瓦的电力,可能会在其中放置6万台服务器、12万个磁盘,网络提供全互联的统一容量,和完全扁平的带宽。这意味着你不必关心作业在哪台服务器上运行。如今,同一栋楼内任何两台服务器之间的带宽可能达到100Gbps,未来,这个数值可能会提升至200Gbps。但关键在于,无论任务在哪里运行,都能获得相同的体验。

我们还利用松耦合容错性。这里的核心理念是,必须构建服务,确保即使在1000台服务器上运行(或任何数量),都必须做好设计,以应对任何时间点都有一部分服务器可能失效的情况。这是你为了利用大规模扩展能力而必须接受的复杂性。

这就是我们在Google看待问题的角度,它促使我们重新思考如何构建各种不同的系统。因此,我列出了一些基础设施的名称,并将它们映射到不同的思想和突破上,这些突破在构建计算方面发挥了重要作用。

它始于一个名为GFS的系统(The Google File System)。GFS的理念在于可以将集群中的所有磁盘视为一个统一的文件系统,并进行集中控制。在2002年,当时有个小插曲。我那时是程序委员会的一员,这篇论文被提交给了2003年的SOSP会议(Symposium on Operating Systems Principles)。我们差点拒绝了这篇论文,觉得这简直是个疯狂的想法:集中控制1万个磁盘?这完全不是构建文件系统的传统方式,听起来就不靠谱。幸运的是,我们最终接受了这篇论文。我想如果我们当时没有接受,现在一定会后悔不已。

关键点是,当时的共识倾向于分散化,强调对等网络。然而,像MapReduce这样的系统、Bigtable这样的系统却采用了另一种思路,它们认为,可以将整个数据中心中的磁盘看作一个大型的关系表,自由地进行读写操作。现在还可以将集群视为一个调度域,通过像Borg这样的系统来启动、停止和移动作业。还有更多的存储系统,如Spanner,它展示了如何在异地同步地跨越广域复制内容。当然,还有机器学习,我稍后会详细谈到。

重要的是,这种基于集群的计算基础实际上意味着,我们需要重新思考我们进行计算的方式。实际上,这里提到的每一个小系统都代表了深入的讨论和社区中许多人的消极反应。这些都不是显而易见的事情。也许在2023年,我们会说,当然,这就是你应该采用的方式。但在当时,这些都是各个社区之间争论的焦点。

那么,既然我们已经走到这一步,为什么不继续前进呢?这是个关键问题。这些图表看起来可能像是卡通画,但实际上,它们展示了Google的实际数据,包括CPU性能趋势、DRAM每字节的成本、存储每字节的成本以及我们基础设施的功耗效率随时间的变化情况。x轴是时间,y轴是标准化到某些单位的数值。

过去,我们推动计算发展的动力主要来源于一个事实:每隔几年,性能就能翻一番,或者成本减半但性能保持不变。以前我们预计,每年在固定成本下,性能提升可以达到40%但现在这个数字大约是3%。也许是2%,也许是4%——但已经从每隔几年翻一番降到了每隔二十几年翻一番

这意味着,如果我们想要达到下一个级别,如果我们要在未来20年内再提供1000倍的能力,我们不能仅仅依靠硬件每隔几年就变得便宜、更快,所谓的“免费午餐”,那个时代已经结束了。实际上,我们在CPU中引入了大量的安全漏洞,这些漏洞暴露了各种侧通道。为了关闭这些侧通道,我们的CPU可能会变慢或变得更昂贵,或者两者兼而有之。DRAM也面临类似的情况。你们可能知道的关于DRAM的许多攻击,其中你可以读取DRAM中其他人的数据,都是因为我们为了效率而不断推动其极限所导致的。现在我们不得不为此付出代价。

实际上,对于固定的资金,现在有一个很有意思的辩论,关于摩尔定律是否已经死亡或者仍然有效。这确实很有趣。摩尔定律说的是每18到24个月每个集成电路中的晶体管数量翻一番。这个方面实际上仍然成立。令人震惊的是,我们仍然能在每18到24个月的时间里将晶体管的数量翻一番。问题在于,到2023年,我们不再能用固定的资金来实现这一翻倍了。我们现在大约是用双倍的成本来翻倍晶体管的数量。这带来了一些好处,但功耗也可能翻倍,这取决于你的观察方式和/或者你是否需要采用类似多线程的等效方式。

这些技术平台表明,我们过去20年编写的那一套设计模式实际上已经不再适用。这就是我们必须重新发明的关键所在。那么,为什么我们必须这么做呢?大规模机器学习训练是一个很好的例子。

关键是,在我的职业生涯中,我从未见过像现在这样的情况,计算需求每年增长10倍,而且这种情况已经持续了六年。我们曾谈过在20年内提供1000倍的能力,这已经非常令人印象深刻了。但需求在过去六年中增长了100万倍。我们以往的设计模式无法跟上这一需求,即使它们曾经是多么出色。新的工作负载、新的需求、实时推理、视频传感器,所有这些都在爆炸性增长。

我们曾讨论过摩尔定律可能的终结。但我认为这并非摩尔定律本身的终结,而是相关推论的终结——即晶体管数量翻倍时,功耗和成本保持不变。这一点已无可争议地成为过去。

接下来,我要强调的是必要性。这是关键点,也是整个社区为之振奋的地方。显然,要满足计算需求,我们需要再提供1000倍的能力。从当前来看,存储和计算需求只会不断增长。这意味着我们以往依赖的传统智慧已无法有效应对这些需求。我们将不得不寻找新的方式来应对。

因此,前进的道路——我认为,基于通用硬件的大规模扩展作为发展路径的时代已基本结束。能走到这一步已经是一段了不起的旅程,我们应该为此感到骄傲。但要实现下一个1000倍的增长,我认为有四个最重要的方面值得我们考虑。

首先是专用硬件。这将是首次,专用硬件变得真正有意义。过去,当性能效率每两年翻一番时,一旦你完成专用硬件并使其可编程,它很快就会被通用计算超越。但现在,通用计算每年仅增长4%或3%,你实际上有更多的时间来发挥专用硬件和满足特定需求的优势。

其次,编程模型的重要性比以往任何时候都更加突出。过去20年,我们不得不转向多线程编程。但我认为,我们其实并不清楚如何利用多线程来满足当前的需求。随着专用硬件的兴起以及我们如何实际为其编程,未来的挑战将变得更加严峻。

我们需要重新审视最后一组设计模式和大量围绕松耦合与容错性编写的大量代码。因为过去的20年里,我们基本上忽视了效率曲线的斜率,这意味着实际上,每台服务器的性能并非关键问题,只要能把性能乘以5万台服务器就可以了。由于基准性能每两年翻番,只要能线性扩展到数据中心大楼里的5万台服务器,就无需过分追求单台服务器的极致性能。从光速的角度来看,我预计我们在每台服务器的效率上至少浪费了一个数量级的性能,甚至在某些情况下可能高达两个数量级。面对即将到来的新时代和下一代技术,我们不能再忽视这些10倍或100倍的效率提升机会。因此,我们既要重新审视每台服务器的效率,又要确保保持线性扩展的能力。

最后,我们需要突破各自领域的限制。换句话说,我们不能孤立地看待网络、存储、计算或加速器。我们需要从整体系统的角度出发,真正开发出能够反映从用户和应用开发人员视角看,我的系统效率如何的指标。用户可能是进行机器学习训练、视频推理、搜索或其他任务的人。但关键在于,最终专注于特定领域的优化基准测试可能不会对端到端系统性能产生实际影响,坦白说,这也不会推动系统性能的整体提升。我们需要关注的是如何实现下一个,比如说1000倍的性能提升。

接下来,我将通过介绍这些设计模式中的两个例子,来展示这些模式的应用,以及它们如何从端到端地应用以提供我们所需的好处。首先是TPU超级计算,或者说为什么明智的专门化很重要。

这反映了Google为机器学习构建的定制硬件——张量处理单元(TPU)。大约八年前,我们提出了这样一个问题:如果Google的所有用户每天都通过语音与他们的设备交互30秒,会发生什么?答案是,我们必须实时进行语音识别,为用户解决推理问题。经过简单的估算,我们意识到通用计算无法满足支持这种情况的基础设施需求。即使考虑到CPU的改进,即使在八年前,也不仅仅是等待几年或五年就会变得可行的问题。幸运的是,对于这个特定问题,涉及的计算是规则的。因此,我们可以想象构建专门的硬件来支持这种推理,最终大约能提供更高效、大约100倍的计算能力。你可以说,这将在功耗、空间、成本等方面带来更大的提升。这促使了定制系统的出现,这是这些设备的图片,它们支持大规模的训练和推理。

那么,我们最终用TPU做了什么?明智的专门化和应用共同设计。我们为密集矩阵乘法构建了专用硬件。这不是通用计算,而是用于非常快速地进行矩阵乘法的专用硬件。

我们将DRAM从远离CPU的DDR总线上转移到堆叠在TPU顶部的3D高带宽内存上。因此,我们利用了一个事实,即我们必须通过位于TPU顶部的高带宽内存非常快速地提供这种密集矩阵乘法。此外,我们还为我们的分散-聚集操作添加了专用硬件。我们发现,实际上,涉及这一点的许多数学运算不仅仅是常规的矩阵乘法,还涉及到等效的指针追踪,特别是当矩阵最终变得稀疏时,就像一些下一代用例最终会发生的情况一样。

我们没有使用以太网。当时,作为Google网络的负责人,这个决定对我来说既震惊又可怕。以太网一直是我生命中的赢家,至少在我所经历的岁月中。然而,我们首次决定连接这些TPU之间的方式不是以太网。它将是一种特殊的点对点连接,带宽极高。实际上,每个芯片之间的点对点连接速度与市场上最快的交换芯片不相上下。这种连接甚至不需要二层协议。简单来说,它就是为了实现一个目标:在1024个芯片(现在更多)上同步跨参数。我们设计了一个网络,其唯一目的就是从一个TPU的寄存器向另一个TPU的寄存器传输参数更新——无论是浮点数、整数,还是其他任何数据。这种方式比以太网延迟更低,成本也更低。我们没有采用传统的拓扑结构,比如树形结构,而是选择了一个点对点的环形结构。

这些决策在常规思维中看似疯狂,但在这一特定领域,专为这一操作而设计,它们都是明智之选。此外,我们选择了液冷,这同样打破了常规,因为当时我们所有的数据中心都是空气冷却的。我们还选择了专用的数据表示方式,而非标准的IEEE浮点或整数表示。我们坚信,我们能够提出一个更好的数据集合和表示方式,并将其融入硬件之中。

如果我们在五年前做出这些决定,或者面临一个不同的问题,我相信你们会看着这些要点说:“天哪,这是谁想出来的?”但我要说,这些想法并非出自我,而是那些比我更聪明、更明智的人。他们做出了所有正确的决策。这些决策的综合效果是,系统效率在性能、功耗、成本等几乎所有你能想到的度量方面,相对于通用CPU的最佳性能提升了10到100倍,这并不是夸大其词。

但我认为最重要的是,它赋予了我们新的能力,让我们能够想象出以前从未想过的新事物。不仅仅是使得在CPU上进行推理的成本降低了30%,这是非常了不起的。更重要的是,它让我们从无法想象变为可能,实现了实时语音识别,并将在未来支持大规模的语言模型等应用。这一切都得益于这种能力,真正打破了关于如何在几乎所有可想象维度上进行系统设计的传统智慧。

那么,我们将如何利用这一技术呢?以PALM为例,这是几个月前我们推出的一个拥有5400亿个参数的语言模型。它在两个TPU pod中的6144个芯片上运行了六周时间。这是第4代pod。在这六周内,它执行了2.56乘以10的24次浮点运算。值得注意的是,其硬件效率达到了60%。这意味着在这6000个芯片上进行的计算量达到了可能的最大计算量的60%,即使你只是在每个芯片上进行直接的矩阵乘法运算。对于一个大规模分布式运行来说,考虑到失败和其他因素,这是一个相当令人印象深刻的效率水平。PALM是一个仅解码器模型,在大量文本上进行训练。对于关注GPT-3的人来说,你们可能会发现它与之类似,其目标是从前面的一组单词中预测下一个单词。当时,这是迄今为止训练过的最大的密集语言模型,实际上在参数规模上甚至超过了GPT-3。

它汇集了Google的多个不同部门。基本上,从编程语言的角度来看,有许多子模型同时被训练。在整个集群管道中,有一个调度过程,负责将一个模型的输出训练传递给另一个模型。再次强调,仅仅六周的时间就直接生成了模型,然后我们就可以对其进行推理。

过去几周媒体已经很好地展示了今天大型语言模型的能力。这里我分享其中一个我特别喜欢的应用,使用它来解释笑话。这里有一个笑话:你们知道吗,Google刚刚为他们的TPU团队聘请了一只雄辩的鲸鱼?它向他们展示了如何在两个不同的Pod之间进行通信。模型的回答是这样的:“TPU是Google用于深度学习的一种计算机芯片。Pod是一组TPU。Pod也是一组鲸鱼。这个笑话是说,鲸鱼能够在两组鲸鱼之间进行通信,但说话者假装鲸鱼能够在两组TPU之间进行通信。”这是一个相当好的解释,也许对我来说有些惊讶,因为如果我要求解释这个笑话,我不确定我能想出比这个更好的解释。

大型训练模型具有极高的专业化潜力,同时它们也能胜任众多不同的任务。例如,这样的模型可以把文字问题转化为代码。以下是一些数学问题的实例。虽然初始问题相对简单,但这类模型能够解决日益复杂的问题,并且其准确性还在持续提升。令我同样感兴趣的是,模型还能描述通过代码实现的解题步骤,从而将数学问题转化为实际的解决方案。

因此,我认为我们正处于一个崭新的起点,开始窥见未来的发展趋势。虽然我们无法确定未来究竟会怎样,但有一点可以肯定:那将是一个截然不同的世界。未来我们将运行的应用程序和服务类型,将与过去10到15年我们所熟悉的截然不同,这一变革将由上一代的技术突破所驱动。公平地说,不仅我们在讨论这个问题,整个技术社区也都在关注。计算基础设施、网络和存储将成为关键性的制约因素。我们的需求量将远超现有的供给能力。那么,我们应该如何应对呢?我认为,过去20年里我们所依赖的技术已经无法满足当今的需求。我们必须寻求新的方法。

这张图以非常明确的方式显示了:从2018年到现在,大约五到六年的时间里,大型密集语言模型的扩展情况。基本上,每年都达到了10倍的增长速度。这是公开的信息,不仅谷歌在这么做,基本上所有相关领域都在进行这样的研发。

关于“更大是否更好”的问题,目前尚无定论。我个人认为,在某个阶段,单纯的规模扩大并不再带来优势。然而,无论我们最终如何通过算法进行改进,限制用户的主要因素仍是我们以合理价格构建计算机的能力。作为一个行业,我们正处于一个关键节点。或许那些大型企业能够将其在机器学习和相关领域的支出增加10倍。即使他们能够做到这一点,但绝不可能实现100倍的增长。如果我们不能等待硬件性能的提升来带来好处,这意味着我们必须寻找新的解决方案。因此,这里的限制因素是我们愿意在计算上投入多少。如果我们在计算上投入更多,这些大型语言模型将会变得更大,或者以不同的方式运作。那么,我们应该如何继续扩展以满足不断增长的需求呢?这就是第一个场景的用意所在,也体现了明智的专业化和专用硬件的重要性。

场景二聚焦于光电路交换(Optical Circuit Switching, OCS)。这里的关键问题是如何重新设计系统以提高整体效率。

在此,我们将重点关注机房和数据中心的网络设计。我们之前已经对此进行过讨论,但我想以一种更具体的方式来描述在这个例子中所需的带宽量。

假设一个数据中心机房内有50000台服务器。为了简化问题,我们设想拥有这些服务器,并且每台服务器都配备128个核心,每个核心运行在2.5GHz的频率上。再进一步假设,通过200Gb/s的网卡将它们全部连接到网络上。此外,可能还在网络上分布着一些支持高达10万甚至100万IOPS的闪存设备,这些设备在访问时可能具有100微秒的延迟,甚至有可能降至10微秒。

如果你在这里进行一些粗略的数学计算,就会发现一个令人惊讶的古老经验法则仍然适用:每兆赫(MHz)的计算需要每秒一兆比特(Mb/s)的闲置带宽。这个法则源自20世纪60年代末的吉恩·安德森(Gene Amdahl),有些人称之为安德森第二定律。这里的核心观点是,这是一个经过实践检验的法则,可以指导你如何设计系统以保持其均衡性。你不希望计算能力过剩而I/O能力不足,因为这样会导致计算资源因等待数据到达而闲置。毕竟,只有在有数据可供操作时,计算才能发生。

安德森的第二定律为我们提供了一个经验法则,令人惊讶的是这个法则在50多年来一直保持着其有效性。它大致告诉我们如何进行规划,以确保我们不会在I/O上过度投入,同时也不会让CPU陷入等待数据的窘境。

如果你根据这个法则进行计算,一个拥有5万台服务器的机房将需要一个总带宽达到每秒10PB的网络。这是一个难以想象的庞大数字,相当于整个互联网的对分带宽(bisection)还要多出10倍。现在,我们期望每栋机房都配备这样的网络。Google、亚马逊、微软、Meta等大型企业都拥有众多的数据中心机房。我们将在这些机房中部署大量的设备。

当然,也许安德森的定律并不完全准确。也许他对I/O的要求过于慷慨。但即使他的预测高出实际需求10倍,这也意味着在每栋机房中仍然需要部署相当于互联网对分带宽带宽的网络,即每秒1PB的传输速率,以确保系统的均衡和高效运行。

回顾历史,我们是如何支持这一点的呢?实际上,我们做到了,不仅是我们,其他人也在做同样的事情。我们最初采用的方法是一个名为Jupiter的系统,它基本上借鉴了过去20年的一些设计模式。它采用商品化芯片,并将其组织成一种称为基于树的拓扑结构的层次结构。从服务器底层开始,然后它们被分组,大致对应于一行。在我之前展示的数据中心机房图片中,这些服务器连接到一个边缘聚合块,然后在树中连接到一个脊层。所有这些都由相同的基本组件构建而成。此外,整个系统都在集中控制之下。

在过去的20年里,作为技术社区,我们共同努力从互联网风格的完全去中心化的对等协议转向集中控制。在左侧展示的是传统网络,假设一个拥有5万台服务器的数据中心机房,你可能会有大约一万台交换机,数量可能更少或稍多。但现在这些交换机是如何决定如何向彼此发送数据的呢?传统的方法是它们通过交换消息来确定。也就是说,这些交换机与其他交换机相连,它们知道自己的邻居,互相交换消息,学习网络拓扑结构,然后学习如何相互转发数据。因此,每个交换机都与它的邻居交流,每个交换机都了解全局系统配置,然后决定如何发送数据。这就是传统的分散式模型。而我们和其他人采取了不同的方法,即从每个单独的交换机中实质上取出计算功能,并将其置于集中控制之下。

因此,我们不再让交换机彼此交换信息,而是让它们与一个逻辑上集中的控制器交换信息。在图片的左上方,你可以看到一个具有1000倍计算能力的SDN(软件定义网络)服务器。这里的想法是,你可以将对等节点之间的成对通信转换为与单个控制器的集中式通信,这个控制器实际上知道整个系统的蓝图,而不是每个交换机都在发现和重新发现网络拓扑结构。每次网络发生故障时,都需要重新计算所有东西。

最终,系统会告诉你:“嘿,你是这个交换机,你有这个ID。我实际上知道你在拓扑中应该在哪里。顺便说一下,我知道你的转发表应该是什么样的。所以让我直接告诉你答案,而不是让你重新计算。”事实证明,这种方法实际上在根本上更便宜、更快速、更可靠,因为它将原本需要详细介绍的、在通信中需要ILog的部分,转变为顺序通信,而顺序通信是通信中的最佳情况。许多现有的网络协议实际上做得比这更糟糕,其中一些甚至是O(n^2)阶乘,我相信这个房间里的一些人已经帮助展示了这一点。

在关注最终系统设计并了解你试图实现的目标方面,我们经历了一个根本性的转变。这使得我们能够利用商品部件来构建一个非阻塞的包含1万个交换机的数据中心网络,并让您达到这样一个境地:在数据中心机房内拥有每秒1PB至每秒10PB的非阻塞带宽。这对我来说非常酷。但实际上,最令人兴奋的是我们现在所具备的能力。

你们中的一些人可能熟悉CAP定理,这是埃里克·布鲁尔所做的一些工作。基本上,它说的是在任何分布式系统中,你不能同时拥有一致性、可用性和分区容错性——C、A和P。你可以选择其中的两个,但不能同时拥有所有三个。在Google,我们构建的Spanner系统似乎违反了CAP定理。至少从所有实际目的来看,它似乎为我们的分布式系统提供了一致性、可用性和分区容错性。

埃里克实际上写了这篇文章——虽然不是我让他写的,但我很高兴他写了——他写道,实际上,Spanner并不违反CAP定理——但它之所以能够工作是因为我们现在可以在Google数据中心之间有效地驱动巨大的带宽,以至于在所有实际目的上,你几乎不可能实现分区。当然,你可以尝试创建一个分区。换句话说,如果你是一个黑客,你可以进入Google的网络,你可以创建一个分区,这是肯定的。但是,由于我们已经达到了一个构建网络的方法论上的原则性阶段,网络带宽变得如此便宜,几乎可以忽略不计,与计算和存储成本相比。我们可以负担得起部署如此多的带宽,以至于创建一个分区实际上变得不可能,当然相对于其他事件发生的概率而言。这给了我们开发者一个错觉,即你可以拥有一个宽区域一致的数据库,这似乎违反了CAP定理。

现在有了SDN、廉价带宽,还可以有Spanner,从开发者生产力的角度来看,这是非常强大的。但软件定义的网络为我们带来了更多的能力,那就是引入在数据中心中被认为是不可能部署的技术,即光电路交换技术。

让我描述一下这里的核心思路。在这张图片的右侧,是一个芯片,它大约有160个(从128到260个不等)微小的镜子,每个镜子都受一个微小的电机控制。因此,它被称为MEMS(微机电系统)阵列。我们追求的,就是能够建造光路交换机。可以接入,例如,128对光纤到这样一个芯片的交换机中,实际上,这些光纤能够传输相当于每秒PB到每秒10PB的带宽的数据流,这些数据流穿越数据中心机房,或者说是其一部分,然后照射到这些芯片上。通过精确控制这些镜子的电机,可以将光线反射回对应的端口。

现在想象一下,如果有一个128端口的n乘n光路交换机,你就能以毫秒级的粒度重新配置交叉点。因此,在可编程控制下,你可以为可能穿越数据中心机房的所有大约一万个端口创建任意拓扑结构。

现在,我们实际上可以解决Google的一个长期存在的问题。一旦,比如说,构建了一个100Gb/s的数据中心网络,就像左侧可能展示的那样,就无法逐步引入一个200Gb/s的网络。简单来说,由于每个交换机都与其他交换机相连,你不能逐步引入200Gb/s的网络,因为你引入的大多数200Gb/s的链路都会降速到100Gb/s。因此,你升级机房从100Gb/s到200Gb/s,或者从10Gb/s到40Gb/s,或者从每秒40Gb到100Gb/s的唯一方法就是全面改造,不完全是,但确实需要停工;告诉所有人离开,这是用户不喜欢的;拆除现有网络;然后部署新的网络,这需要几个月的时间,而且效率低下且劳动密集。

而通过光路交换机,我们基本上可以用这些交换机替换脊柱层,用自动连接来连接这些光路交换机。这样,我们可以重新配置网络,以便逐步引入,比如说,200Gb/s的链路,一个接一个地引入。

我们可以以可编程的方式创建交叉点,确保所有200Gb/s的链路都连接到其他200Gb/s的端口。你可以按需逐步迁移,一次一个区块,跨越整个机房到新的网络技术。此外,你还可以根据地理位置和通信模式进行编程。例如,你正在运行一个大型机器学习作业,你知道它将在两行之间运行,我们称之为超级块(Super Blocks)。现在可以将光路交换机编程为在这两个超级块之间集中更多的带宽。

以前的技术基本上要求网络必须全对全连接,且均匀分布。但现在,有了这些光路交换机,我们可以以可编程的方式动态重新配置拓扑结构。

在Jupiter项目中,我们专注于硬件的专业化设计,并结合应用代码设计。我们专门为数据中心设计了通用芯片。我们转向软件定义网络,以提高可靠性。同样重要的是,虽然我没有详细描述,但我们还转向了软件速度,以提高功能迭代速度。换句话说,我们可以利用所有现有的软件开发方法来向那个集中式控制器推出新功能。如果我们想开发一个新的路由协议:A.新路由协议的开发和部署会更加容易,因为它是集中式的;而且,B.我们可以非常快速地测试和分发它。

我们还设计了数据中心专用的收发器。以前,从交换机到光学再到交换机的转换设备非常昂贵,且专门为广域网设计。我们为数据中心网络重新设计了它们。我们采用了光路交换机技术,以便我们能够灵活地调整网络拓扑结构。但实际上,现在可以把它看作是机房的主干。可以插入多代硬件,而无需担心兼容性问题。

光路交换机的美妙之处在于,它不关心以什么速率编码数据。它只是反射光线。因此,当从10Gb/s升级到40G/sb、100Gb/s、200Gb/s或400Gb/s时,光路交换机不需要任何升级。它仍然能够将光线从端口反射到端口,就像以前一样。你可以根据应用程序的需求进行特定的放置和调度。另外,也可以进一步考虑如何在最终主机上进行拥塞控制。

综上所述,我们在这里所做的,是提供了10到100倍的系统效率和规模提升,这实际上使网络变得透明化。

由于时间限制,我无法分享关于软件定义服务器或第三个场景的情况。

我想要强调其中一个我认为至关重要的方面。在专业化的过程中,我特别担心TPU和GPU的情况,因为我们实际上正在将大量计算从CPU转移到GPU或TPU等专用处理器上。这使得卸载变得相对容易。然而,我担心下一代加速器可能无法享有同样的优势。我们实际上并不清楚如何管理处理器、通用计算和加速器之间相对松散的耦合所需的异步水平。它们之间的差异显著。因此,如果你试图将用标准冯·诺依曼模型编写的通用代码的一部分卸载到这些加速器上,除非这部分代码能够非常快速地完成。对我而言,真正的快速意味着L2缓存错失时间在20纳秒左右,否则你将不得不改变你的编程模型。

因此,如果要推动新的卸载技术,我们必须深思熟虑编程模型应该如何设计。我担忧的是,由于我们尚未从易用性的角度完全攻克多线程,这可能会引入更多的复杂性。


简短的总结。我想确保大家理解的是,社会基础设施、安全性、可持续性和主权方面的新要求实际上意味着我们可能需要加速向社区提供的算力。这是需求方面的挑战。

在供应方面,我们过去用于扩展的技术已经不再适用。因此,尽管我们对扩展的需求巨大,但实际上我们缺乏有效的设计模式。我认为这既令人兴奋又令人担忧。但我认为,以全新的方式解决问题并抓住这些机遇是至关重要的。那么,我们该如何应对这一挑战呢?我相信我们一定能做到,我们一直以来都在这么做。

-----

听众:您提到要进行革命性的变革,而不是渐进式的变革。我只是想知道我们如何在不重建整个数据中心的情况下实现这一目标。

Amin Vahdat:这是个很好的问题。我认为这确实是一个创新者困境中的难题。我们拥有大量的代码和基础设施,它们都是按照特定方式构建的,并且正在迅速增长。我认为我们需要审慎地选择正确的问题集,并面对这样一个现实:我们现有的解决方案在某些情况下根本行不通。我喜欢TPU的例子,因为如果我们只是说,嘿,我们需要为这个用例多花50%的钱来支持类似实时语音识别的推理,我们可能会说,好的,让我们这样做,而不是构建新的硬件。我认为前进的道路是,将会有一些应用机会出现,而我们实际上只是无法用现有技术解决。这就是必要性的体现。我们不能只是说,我会采用一个不完美的解决方案并应用它,因为那行不通。所以,我并不确定是否需要重建数据中心。但是,如果我们能做些事情,比如为TPU开发等效的液冷技术,那不是很酷吗?我们将建造新的数据中心,采用完全不同的方式来设计。我们会在其中放置新的硬件,这些硬件只会用于一部分特定的用例。但是,再次强调,仅仅七年前,我们能预测到TPU会成为Google的一部分吗?不能。但它们现在是,对吧?让我们从这一步开始。

听众:当您提到计算需求每年增长10倍时,我在想的是,另一方面,我们无法让电力每年增长10倍,即使是每两年或每年2倍的增长,也已经达到了极限。那么剩下的就是提高效率了。你可以将煤气灯替换为白炽灯、荧光灯和LED灯,但那里也有尽头。似乎很难不去预测,需求可以迅速增长,但我们的供应能力将会耗尽。

Amin Vahdat:确实,我们的供应能力将会耗尽。我们可以想象提供额外的10倍计算能力,但考虑到固定的功率和成本呢?也许我们可以想象。我们可以讨论是否应该这样做,但我们可以想象提供额外的100倍计算能力吗?我不这么认为。所以,现在的问题是:我们是否需要一种新的架构,就像TPU一样,还有GPU?顺便说一句,这是一个以Google为中心的示例,所以你们可以理解,但还有很多其他出色的工作和硬件。因此,一个答案是:我们是否需要对于大型应用(比如由大型语言模型驱动的)是否存在某种硬件的其他专门化,其效率比TPU高10倍?是否存在更节能的算法?绝对存在。我们是否在我们的基础设施中浪费了2倍或4倍的利用率?实际上,我们在Google做得相当不错,我相信其他公司也一样。因此,这些系统层面的事情可以帮助我们获得下一个10倍的增长。我认为那里确实有很多机会。你是对的,这不仅仅是建造更大的TPU,那不会让我们达到目标。

听众:或者换一个角度来讲,我们能在应用层面实现多少年的10倍性能改进?

Amin Vahdat:关于10倍性能改进,是的,这是个很好的问题。我并不乐观地认为我们能持续多年实现这样的增长。我认为,在计算需求方面,我们将不得不设法让算法更高效,提高资源利用率,以及设计更有效的硬件。但我确实认为,另一方面,我也知道,我们不能仅仅满足于每年只增加3%或4%的性能提升。

听众:对管理那些设计为[无法听清]的系统有何看法?因为现在所有的技术似乎都已经被探索过了,我们正在谈论增加[无法听清]的多样性、网络复杂性,甚至可能面临更多的可靠性问题。因此,有人可能会说,打破抽象可以进一步提高效率。但这也会使系统变得更加复杂。你是否认为可以利用你在机器学习或系统设计方面学到的知识来管理它?或者需要一种更加原则性的方法?

Amin Vahdat:要知道我的博士学位是操作系统方面。操作系统领域的人喜欢在复杂的硬件之上提出方便的抽象。所以我认为,实际上会有。我们在午餐时与这里的研究生讨论过这个问题。我认为将会有新的抽象来隐藏和管理这种复杂性。但具体是哪些抽象,我还不清楚,所以我没有答案给你。但我认为很明显,我们的系统在基础层面将会变得更加复杂。而且,老实说,我认为这是不可避免的。换句话说,直到最近,我个人一直反对只在一台服务器上运行一个工作负载的想法,因为这在之前是没有意义的。

听众:实际上,我在想一个相反的情况,即完全不需要抽象,只是说:“人类永远也无法编程管理这样的系统,这些将由你的大模型来设计。”我其实是认真的。我们应该真正考虑优雅的人类可读的抽象,还是应该放弃这一点?

Amin Vahdat:未来三到五年,我看不到不需要人类来驱动的路径。但你是对的,那是一个很棒的研究方向。我们应该朝着这个方向努力。我确实认为,在系统方面,机器学习有着巨大的机会来帮助解决复杂性。

听众:在第一张幻灯片上,我们谈到了对无碳计算的需求。但我没有听到幻灯片中有关技术朝这个方向发展的内容。能解读一下关于需要发生什么或正在发生什么的情况吗?

Amin Vahdat:是的,这是一个完全不同的话题。在Google,我们的目标是到2030年,所有的数据中心都将全天候运行并实现零碳排放。目前,我们的目标是实现碳中和,但我们是通过在某些地方、某些时候获取碳抵消来实现这一目标的。所以这对我们来说是一个全面的巨大关注点。但我认为,正如之前有人指出的,你可以生成的电力是有限的。因此,实现无碳排放是一个绝对值得追求的目标,也是我们和其他公司——不仅仅是Google——承诺要实现的目标。但我认为一个有趣的相关问题是实际的碳排放。这来自于建设基础设施、交付基础设施等方面。我们作为一个社区,可能需要更多地关注这一方面。我认为在2030年左右,我们可以实现电力消耗的无碳排放。但那是当一切都就绪并运行时。

听众:我对第四个S,即主权,很感兴趣,以及在这方面看到的情况。有一些观点认为,这种大型基础设施可能不存在,因为德国或中国不愿意与Google做生意或其他原因。以及这种构建大规模、全球范围、由中央控制系统构建的想法,是否会遇到阻力?是否需要完全不同的100个控制平面,仅仅是因为当地的要求,而不仅仅是——这会发展成什么样子?

Amin Vahdat:是的,很好的问题。我认为这里的问题是,我们确实谈到了从去中心化控制到集中控制的转变。我现在看到这种转变正朝着另一个方向发展,人们可以想象说,我要确保我有独立于——我不会点名具体的公司——但大型全球科技公司的行为不会影响德国正在发生的事情。你是对的,在设计控制平面方面有各种各样的架构影响。

听众:那么Google和亚马逊可能能做到这一点,但小公司呢?如果他们也需要这种计算能力,他们有什么机会?如果其他大公司也需要这种计算能力,小公司能否获得EWS(可能是指某种服务或资源)?或者他们就无法建立相同的结构?

Amin Vahdat:是的,小公司在这方面有一个巨大的优势,那就是他们不会面临创新者困境。我举个例子。假设我有了一个很好的想法,能够让某个工作负载的效率提升10倍,成本降低10倍,或者其他类似的改进,但这个改进只针对Google工作负载的10%。我可能会考虑不投资这个方案,因为对于那10%的负载,我可能会承担比必要成本更高的成本。现在,10倍的改进是非常显著的。但如果我说是5倍或2倍呢?在只有2倍提升的情况下,我可能会觉得不值得投资。但对于小公司来说,如果他们有一个能让Google工作负载中的10%提升2倍效率的想法,那就是一个巨大的机会,因为他们可以专注于那10%的负载。所以,我实际上认为,在技术的革命中,学术界和小公司将发挥领导作用。更广泛地说,整个技术社区都有巨大的机会。


--【本文完】---

近期受欢迎的文章:

  1. GPU计算的工作原理

  2. Intel IPU E2100 DPU 正式发布

  3. 不使用GPU的AI:VMware + Intel

  4. Meta:大规模AI基础设施

  5. HPC-AI市场报告:预计2024年市场将非常强劲



更多交流,可添加本人微信

(请附姓名/单位/关注领域)

文章转载自Andy730,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论