查看原文
其他

云原生和DPU:释放芯片设计的云原生潜能

常华Andy Andy730
2025-01-01

AMD公司的数据中心解决方案架构与战略副总裁Robert Hormuth。

云原生,作为一项引领当今技术潮流的重要理念,强调了可伸缩性、灵活性以及快速应用程序开发,这对芯片设计带来了深远的影响,以满足容器化和虚拟化应用程序的独特需求。在这一变革的过程中,我们不得不正视I/O延迟和内存波动等方面所带来的挑战。

值得关注的是,DPU在这一过程中扮演了关键角色。它通过卸载密集的I/O任务,增加租户实例,降低CPU使用率,提高控制和安全性。正是AMD基于Chiplet的设计与云原生原则的完美契合,为市场提供了一种成本效益高、模块化且符合标准的解决方案。

总之,这次演讲强调了DPU和Chiplet设计在实现云原生方法方面的关键作用。这使得云原生方法不仅适用于本地部署,还能够在混合云环境中带来显著的益处。

我来分享我们对云原生的看法和在这一领域所做的工作,以及这对于一个芯片领域的从业者意味着什么。为何我们应该关注这个话题?对于我们来说,云原生代表着一种应用程序开发方法,而非一个具体实体或地点。它是一种注重应用程序开发速度、具备可伸缩性和灵活性的方法。它牵涉到应用程序开发速度、DevOps、微服务以及现代部署工具的混合使用,以及在大规模上的管理。这意味着当我们需要更多资源时,我们能够启动所需的资源;而当我们不再需要这些资源时,我们可以关闭它们。这确保了我们的应用程序在需求变化时能够保持可扩展性。实际上,这是一种截然不同的应用程序开发方法。更为重要的是,对我而言,这不仅仅是一种技术问题,而是一种不同的思维方式,涉及到DevOps以及企业应用程序的部署方式。

作为一家芯片公司,为什么我们要关心云原生呢?当我们从传统的单一应用程序迁移到虚拟化或IaaS工作负载时,虽然后者更多地是一种交付方式而非工作负载本身,但在虚拟化世界中,大多数应用程序仍然是那些传统的单块式应用程序,它们只是被移植到虚拟化环境中。然而,当我们探讨容器和函数即服务时,一切都发生了改变。这些类型的应用程序之间存在明显的差异。当我们审视这个不断发展的领域时,传统的物理单块式应用程序是在单台机器上运行的单一工作负载,其软件成本较高,需要高频率,对延迟非常敏感,且要求数据本地性非常高。即使在单台大型机器上,很多数据本地性都通过共享内存来实现,人们编写多线程应用程序,通过内存共享变量。因此,大核心和大缓存非常关键。这是传统单块式应用程序的方式。这种方式很大程度上被称为"编译并运行",我将我的应用程序部署在我的大型主机上,它将在应用程序的生命周期内运行。即使在某些大型银行,你仍然可以找到某个角落里有一台主机,托管着一些大型应用程序,它们无法迈出这一步。

虚拟化开始改变了这一格局。现在,我们通常面临着数十甚至数百个应用程序的挑战,这取决于您的企业规模和IT基础的成熟度。我还记得虚拟化最初引入时,大多数企业对其持怀疑态度,因为他们对其效益产生了疑虑,但如今几乎每个人都依赖和信任虚拟化。虚拟化催生了不同类型的体系结构,引入了中等规模的SoC级别核心和更大的内存容量,因为现在我们将众多传统的大型单块式应用程序打包到更大的虚拟机中。这一过程中,局部性成为关键,不仅是虚拟机内部的局部性,还包括虚拟机之间的局部性。因此,我们仍然需要类似L3缓存共享这样的机制,因为我们需要在虚拟机中运行旧代码,而且需要多核心支持,因此L3缓存仍然非常重要。这可以被称为"分配并运行"时代,即创建虚拟机集群,然后创建具有多个虚拟CPU的虚拟机,以托管我们的应用程序。

然后,当我们考虑容器和微服务时,情况就有了根本的不同。首先,我们需要更多的机器,因此高核心数量变得至关重要,因为我们希望承载更多的容器,它们需要更多的内存带宽和数据带宽。不过,相较于虚拟机,容器通常较小。甚至在容器中,我们可以进一步拆分功能,其中我特别喜欢函数式容器。这种抽象层次的创建变得更为频繁,尽管容器寿命较短,不如虚拟机那样长久,但容器可以根据需要启动和关闭,用于网络、存储、负载平衡等方面。容器的设计理念是"编写一次,随处运行",因此我们只需编写一次应用程序,将其打包包括所需的库,然后在任何地方运行。容器非常出色,因为它们可以在任何地方运行,它们只关心通过TCP/IP相互通信,而不关心它们在何处运行。这个"编写一次,随处运行"理念主要涉及网络通信,因此它引入了一些独特的I/O挑战。然而,当我们进入函数时代,事情真的变得更加有趣。

在函数时代,一台机器上通常运行着数千个函数。这些函数多数是自由软件,需求大量核心,大规模内存和I/O内存带宽,以及数据本地性的支持。数据本地性是其中至关重要的一个方面。函数的生命周期极短,因此函数之间的数据本地性相对较低。这对启动时间和I/O性能产生了深刻的影响。从SoC级别的I/O角度来看,这些函数的不断启动、运行和关闭,对I/O延迟和I/O带宽产生深远的影响。

作为芯片设计师,我们必须认真思考这一问题,以及为什么我们应该关注它。当我们深入研究时,我们发现实际上存在一些深远的影响。在SoC级别,我们面临着各种新的I/O挑战,因为这些函数不断启动。在以往的IaaS环境中,我们可以将任务固定在核心、插槽和应用程序上,这种做法相对较为稳定,因为它们可以运行数月甚至数年。

然而,在容器和函数的世界中,它们采用了"编写一次,随处运行"的理念,或者说它们是按需运行的,可以在任何地方运行。但当数千个任务不断启动和停止时,我们无法将它们都绑定到特定核心、插槽或I/O NUMA级别,因为它们的行为极具动态性。这对I/O延迟和I/O带宽产生深刻的影响,因为难以有效调度这些高度动态的任务。

在函数的情境中,情况更加复杂,因为函数的生命周期更加短暂。这意味着你运行了大量运行时代码而不是编译代码,导致代码性能相对较低。你需要特别关注启动时间,当触发某个需要执行操作的函数时,你需要考虑该函数启动所需的时间。它是否在存储中,还是已分页到内存或磁盘上?这些因素都需要纳入考虑。

总结而言,在函数时代,I/O性能和数据本地性成为芯片设计中至关重要的因素,我们必须解决各种新的挑战,以确保在这一新兴领域取得成功。

在SoC级别,分支预测逻辑实际上开始面临挑战。分支预测器通常通过多次执行相同的代码来学习,但现在我们有上千个函数在运行,它们每个只运行了几毫秒,这让分支预测器的训练变得相当复杂。训练需要大量数据和反复迭代,因此错误的预测可能会增加。由于这些函数需要大量内存,存在着大量内存变化,再加上这种干扰,可能会影响每个时钟周期的机器指令。在函数世界中,这是一个非常动态的环境。因此,我们得出结论,我们应该采取不同的优化策略。这就是我们研究的结果,我将在后半部分讨论我们在AMD所做的工作。

与我们的研究同时,我偶然发现了一篇论文,我在上面提供了链接,这是普林斯顿大学的一项研究。他们进行了有关函数即服务架构影响的研究,并发布了一份白皮书。实际上,整个论文基本上描述了我刚刚提到的内容,我很高兴至少我们都进行了研究,得出了相同的结论。在这个现代DevOps世界中,有关如何优化SoC级别,确实存在芯片的影响。

如果您处于容器和函数的世界,数据局部性几乎不存在,那为什么要购买大型的L3缓存呢?它对您没有帮助,因为不存在线程间的通信。但我发现这一点非常有趣,因为他们强调了许多问题。那么,普林斯顿的研究有什么发现呢?他们指出,由于干扰,IPC(每时钟周期指令数)降低了高达35%,即核心之间的相互干扰。内存带宽再次出现了66%的变化,内存模式不可预测。他们观察到分支预测的错误率增加了20倍,同时短函数的执行时间也增加了10倍。在这个领域,延迟非常重要,需要关注函数是否已加载到内存中,操作系统或调度程序是否已将其固定在内存中,以便能够快速启动。因此,他们观察到整体性能下降,无论是由于干扰还是因为这些函数主要运行运行时代码而不是编译代码。这是一篇非常有趣的论文,它验证了我们的一些内部数据,因此我要赞扬普林斯顿提供了一篇充满洞察的论文,其中包括我所指出的许多问题。

在我们看来,云原生在云计算领域扮演着极为重要的角色。这个领域充满了大量免费的软件资源。如果我们审视云原生计算基金会(CNCF)的云原生框架,会发现其中包含数不清的包和程序,它们都是云原生计算的关键组成部分。对于我们来说,最重要的是确保软件的广泛兼容性。这是我们学到的首要课题,必须确保与庞大的生态系统相适应。因此,我们要向客户传达的信息是,我们要花时间来塑造未来,而不是将过去迁移。或许你可以猜到这个信息是面向的受众,但这一观点非常关键。我们行业中的大多数公司都渴望开展下一个重大的新业务,他们不愿意花时间将过去的东西迁移,只为获得10%或20%的改进。当其它公司都在朝着AI等领域前进时,他们真的不愿再回头迁移那些在5年前流行的东西吧?我认为这是我们行业中非常重要的一种认知,即应当关注未来,而不是将过去迁移。

另一个我们在AMD公司所观察到的趋势是,云计算和云原生的理念正在推动一个租户与运营商分离的新变革。当考虑租户和运营商时,当您在AWS租用一个实例时,您充当租户的角色,而AWS则是运营商,他们拥有操作系统、虚拟机监控程序、存储堆栈、网络堆栈,以及您作为租户可以租用或运行的所有服务。然而,云原生正在改变这种思维方式,使其从租户领域向运营商领域转变。他们希望将所有创新资金投入到运营商领域,以便能够提供更多的租户服务。这推动了一个真正的变革,将虚拟化世界中的"零域"(Dom0)变为焦点。特别是在虚拟机监控程序领域,"零域"是一个特权领域,提供各种服务,包括虚拟网卡、虚拟网络等。过去,我们的看法是,虚拟机属于"DomU",也就是租户所在的位置,而运营商拥有核心虚拟机监控程序"Dom0"服务,它是控制点,提供网络服务、安全服务、访问控制、驱动程序堆栈、存储和网络服务。所有这些服务都来自运营商层级。然后,在这之下,有物理硬件,他们试图对所有这些服务进行虚拟化,以向所有这些租户提供服务。

通过租户和运营商的分离,我们见证了一个重大的控制点变革,从租户领域向运营商领域的过渡。运营商的愿望是将控制权移到底层,将其固件、软件和控制平面转移到DPU上,从而能够服务更多租户。在传统的模式下,运营商服务可能会占用核心资源,带来不同程度的抖动和不确定性。运营商希望将这些功能移到DPU上,以推动创新,为这一领域创造更多价值。他们追求的是拥有自己的代码,而不是将其与其它代码混合在一起。这是一场从最大的云供应商开始逐渐向下扩展的巨大变革。例如,AWS Nitro便是一个典型的例子,它正在实现这一变革,将Dom0服务虚拟化并移至其自己的领域。

DPU的定义和一般性质,以及创建它们的多种方法,可能被不同人称为DPU、智能网卡(SmartNIC)、IPU等,但它们的基本功能都相似。它们以不同方式实现,但基本概念相同。DPU基本上是一种适配器,用于卸载通常由CPU执行的运营商处理功能和任务。从架构角度看,DPU通常具有相似之处,尽管不同制造商可能宣传自己的产品最佳,但它们都向主机提供虚拟化服务,包括模拟NVMe盘、模拟NVMe over Fabrics、模拟虚拟网络接口(VMNet)等。在DPU上,你可以获得高速网络入口,通常还配备一些高速可编程加速器。以我们为例,我们的Pensando DPU拥有144个P4 MPU(Match Processing Units),它们构成了一个高度优化的特定领域架构,专门用于数据包处理。这些DPU中的144个小组件具有完整的指令集和缓存,但与x86架构上的指令截然不同,主要用于位操作和位移,非常领域限定。此外,通常还有一个与CPU域相连接的高速互连,用于处理较慢的路径。在某些情况下,尤其是在涉及网络可编程加速器时,DPU可能需要向其它领域请求帮助,例如安全性和访问控制等服务,这不一定总是在CPU上运行,而是由DPU卸载。此外,它们通常还具有一些后台I/O,可用于连接闪存、NVMe或SCM,以运行不同的服务,并将网络和存储服务下放到这里,然后将其暴露给这些实例。有多种方法来实现这一点,以及如何操作,但这需要大量的软件支持。这是运营商能够以极快速度创新的领域,为他们提供了许多价值。

在探讨为什么On-Premises、Tier 2和Tier 1,MDC云采用这一策略时,我们可以找到其中一些显而易见的好处。其中最显著的好处是,通过实现租户和运营商的分离,可以增加租户实例的数量,而不必损失30%的核心资源用于运行运营商服务。这意味着可以销售更多的租户,同时降低了运营商服务所需的CPU周期,从而节省大量成本。根据不同的云供应商,成本节省幅度可在15%到35%之间,这也包括了VMware。VMware在运行时充当运营商的角色,拥有主机,并负责运行运营商服务。正是因为这个原因,VMware正在推动Project Monterey项目,以将这些服务卸载。

根据云提供商和云供应商的选择,情况可能有所不同,也可以通过数学计算进行估算。例如,如果您访问云供应商之一并查看他们提供的最大实例,可能会发现他们提供的最大实例拥有82个核心,但实际上使用了96核心的Genoa芯片。通过计算,您可以确定有多少核心用于运营成本。他们试图改变这一情况,这是一种降低成本的方法,但许多人并不仅仅关注成本,还有许多其它价值。

这个模型的一个重要优势在于提供更多的确定性和更高的性能。它通过卸载与I/O密切相关的功能来实现这一点,因为I/O是导致上下文切换和多线程的原因。因此,您可以在等待I/O完成时执行其它操作。每次进行I/O网络存储操作时,都会产生一些不确定性和抖动。通过卸载I/O操作,可以使实例变得更加确定性和性能更高。

这是云中的关键要素之一,它可以更好地推动微服务的快速发展。因为现在我需要处理成千上万个功能,可能涉及成千上万个中断和成千上万个存储调用,所以我需要能够卸载这些操作。

在云中和云原生方面,还有另一个重要因素,即一致的管理。关键问题是如何实现完全的带外集中式管理到服务器,而不会干扰所有租户。因此,我必须具备在全球任何地方进行这种管理的能力。

许多云运营商和On-Premises运营商希望在不同的位置提供这种服务,或者拥有Outposts。AWS如何进入Outposts并进行控制也是一个重要问题。运营商必须假设租户可能会出错,这是生活的一部分。您知道,当我拿到一台新电脑时,我会做的第一件事是格式化硬盘,因为我不相信OEM能够按照我想要的方式进行安装。因此,我首先要做的就是格式化它,清除所有分区,然后自己进行安装。这是一种常见的行为。但运营商需要保持对设备的控制,可以进入并重新安装操作系统或更新固件等,因为他们将设备租给了您。这使他们能够带外一致地进行管理,同时提供完整的安全控制。

因此,我现在创建了这个隔离区,DPU是唯一可以更新固件、更新BIOS、更新网卡驱动程序等的设备。不再需要操作系统内部的控制来进行固件更新或修补程序等操作,现在一切都由运营商来处理,这可以帮他们省钱,避免损坏设备。

最后,这也为他们带来了抽象的概念。通过模拟这些服务,他们不在乎将其连接到AMD、Arm还是Intel,它们都可以通过标准PCIe设备为这些主机提供相同的存储和网络模拟服务。它们告诉BIOS:“这是一个NVMe盘,用作引导盘”,这都不重要。这有助于加快实例的交付速度,因为他们已经进行了抽象化。

在云原生的发展过程中,租户和运营商之间的分离趋势至关重要。至于企业是否会广泛采用DPU以及租户和运营商的分离,目前还难以确定。如果您正在建立混合云或本地环境,并需要不同类型的控制路径,DPU显然具有很大的潜在价值。一些本地运营商正在从控制管理的角度来考虑它,他们可以将其更接近硬件设备,并将防火墙等服务移到DPU更接近的位置。还有一些运营商可能会考虑,如果他们在虚拟化环境中丧失了30%的核心性能,那么使用成本较低的DPU可以减少x86核心的数量。总之,DPU具有许多不同的总拥有成本(TCO)方面的优势,使其成为一个可行的选择,但不能确定未来是否每个企业都会采用DPU。然而,DPU显然是改变TCO模型和以不同方式思考的选项之一。

因此,对我们来说,思考云原生如何与SoC设计原则相互关联非常重要。前几天,我发现了一个有趣的现象,尽管可能有点牵强,但当我阅读云原生的四个关键原则时,如果考虑微服务,微服务是一种以模块化方式构建应用程序的方法,这与Chiplet的构建方式以及我们在CCDs和IODs中所做的事情有些相似,它强调了模块化和可插拔的特性。容器化强调了将不同的库和运行时组合到容器中,以确保不会破坏应用程序的稳定性,始终保持与构建时的版本一致,这与我们在Zen 4中的混合匹配有些相似。持续交付强调了持续不断地改进设计,使其变得更好,如果您看我们的第四代EPYC,我们通过不断优化相同的构建块,实现了四种不同的独特优化,这类似于持续交付的理念。尽管这些优化可能不是在同一次发布中完成的,但我们不断推出第四代EPYC。

而DevOps则是一种有助于设计、架构并促进不同组件之间标准通信的方法。对我们而言,其中关键的一部分是Infinity Fabric,它让我们能够快速混合和匹配不同的组件。所以我看到这一点,嘿,我们的芯片是云原生的,尽管当时我们并不知道,也没有进行市场推广,但在我们完成其它工作之前,我们已经遵循了云原生的原则来设计它。我明白这可能有点牵强,但我在这里提出这个观点。

至于Chiplet的处理方式,如果你看传统的方式,你会看到一个大硅片,上面有单块集成电路,下面是小小的Chiplet,那么这种处理方式如何帮助我们更快前进,超越摩尔定律呢?从数学上来看,这相当简单,如果你有一个大硅片和一些大的单块集成电路,你会获得一定数量的产量,而与之相比,你从小的Chiplet中获得更多产量。因此,Chiplet的基本原理在于我们能够以更精细的粒度混合和匹配,这是单块设计无法实现的。

此外,由于测试和制造产量,我们能够混合和匹配不同工艺节点的Chiplet。在AMD中,Chiplet并不是相同的工艺节点,我们将来自不同晶圆厂和不同几何尺寸的Chiplet混合在一起,因为I/O世界通常需要更大的芯片,更多的功耗以及更多的模拟功能,所以通常需要更高的工艺节点。因此,当我们将其与一个假设的单块集成电路进行对比时,我们拥有更好的价格模型和成本模型,这使我们能够拥有更不同的定价模型,因为我们的成本呈线性关系。我们的Chiplet和IOD芯片的费用、放置方式以及获得的性能和价值都非常透明。

对于我们来说,这是一个重要的优势,它有助于推动或延续摩尔定律的原因之一。传统的单片芯片设计通常受到硅片面积的限制,这是由制造工厂的物理限制所决定的。在这种情况下,根据摩尔定律,硅片上的晶体管数量会增加,但受制于硅片的面积。这造成了一个理论上的极限。即使按照摩尔定律发展,仍然会受到硅片的面积和封装工艺的理论限制,因此传统的单片设计逐渐达到了40个核心的极限。而我们采用了多芯片模块的方法,通过在硅片上放置更多的芯片模块,我们实际上改变了摩尔定律的应用方式,延长了其适用性。通过朝着2.5D和3D混合模块的方向发展,我们谈论的是在2300平方毫米的硅片上持续推动业务,这样摩尔定律仍然在经济上成立。摩尔定律告诉我们,构建一个芯片的成本是X,而这个芯片将提供足够的价值,人们将支付Y来获得它,但不会支付更多。虽然摩尔定律在某种程度上可能已死,但通过采用芯片模块的方法,我们实际上改变了这条价值曲线,可以在硅片上放置更多的硅,以提供更多的价值。

另一个与云和云原生相关的重要因素是过去20年中所编写的代码数量。这可以被称为"3T问题",根据这个数学公式,计算机科学工程师每年都会写入大量的代码。该公式得出的结论令人印象深刻:在过去20年中,已经编写了2,781亿行代码,这比银河系中的恒星数量还要多5倍。这意味着存在大量的旧代码。虽然重新编译这些代码不是难事,但实际的测试、调试、验证和质量保证等工作却是相当困难和昂贵的,同时也无法确保投资的回报。大多数用户和企业反馈的信息表明,他们需要在创新未来的同时继续维护传统系统,因为没有人愿意耗费时间和资源来完全重写旧代码。因此,这就是我们选择采用当前核心扩展方法的根本原因。这对于大多数用户和企业都是一个具有挑战性的问题。在全球范围内,有一些拥有成千上万工程师的大型公司可以考虑进行移植,但也有很多公司会依照现有操作员的需求进行工作。因此,对于我们来说,创造未来而不是迁移过去是至关重要的。

那么,从产品角度看,对于AMD而言,这意味着必须考虑如何开发更适合这一需求的芯片。这也是我们收购Pensando的原因。我希望在此提供足够多的有关DPU的信息,以让您明白DPU的重要性。它们在云计算和云原生领域扮演着至关重要的角色,这也是我们选择收购Pensando的原因。我们认为Pensando是市场上最优秀的DPU供应商之一,而且具备大规模生产能力。因此,我们能够将EPYC处理器和Pensando的DPU集成在一起,取得了来自Oracle、IBM Cloud、VMware等等的大规模成功,这些都是公开的案例,还有更多的合作伙伴。

我们推出了Pensando DSC,这是一款分布式服务卡,基本上承担了我之前提到的各种服务的角色。它在这个ARM核心和Pensando架构上运行,拥有144个MPU。尽管从外表上看,这些设备看起来像高级SoC,但内部结构完全不同。如果我能提供一个示意图,我本来是会展示一个示意图的。然而,当你深入研究它的内部结构时,你会发现它包括了与高性能内存系统相关的ARM核心子系统。此外,还有专门用于网络和存储领域的匹配动作引擎或P4引擎。这些引擎在DPU中充当特定领域的加速引擎,涵盖了加密、压缩以及其它许多加速特性。对于我们来说,这是非常重要的,这也是为什么我们在核心扩展策略上与其它公司不同的原因。我们看到,世界正在从运营商和租户之间的传统模型向新的模型转变。运营商正在将他们的代码迁移到DPU上,因此我们必须非常聪明和审慎地考虑在租户端留下什么。因为如果它位于租户端,运营商将无法使用它。如果在CPU上添加了大量压缩、加密等功能,但运营商已将所有增值代码移到DPU上,那么这些功能将无法发挥作用,它们将成为死芯片。因此,AMD的策略主要围绕着提供大量优秀的核心,谨慎地考虑我们加入的加速器,同时优化运营商端的加速器,以满足他们真正需要的需求。

问题:有一种观点认为,如果将加速器放在CPU的租户端,租户可能会拥有进行某些运营商不希望进行的操作的能力,如高级加密、身份验证、应用程序加速等。因此,在CPU内部加速器上的差异化关键在于,从某种程度上来说,核心就是核心,租户的解决方案基本相同。那么,如何在这种消费模型中进行差异化?
回答:是的,我同意,确实有一些租户可能会进行软件投资,也许他们需要定制化的解决方案。然而,如果考虑到DPU中的压缩和加密等内联功能,这些功能是已经存在的。因此,租户可以自行添加特定的压缩或加密功能,以满足他们的特殊需求。但我们在这一领域所看到的问题是,运营商通常会迁移他们的代码,而租户通常不会这样做。将代码从CPU迁移到高级加速器需要克服重重障碍,没有免费午餐。租户需要编写代码,无法仅仅免费获得压缩和加密等功能,这些功能在DPU中是内联的,租户甚至不需要意识到他们正在获得存储压缩的好处。
问题:我不确定是否每个人都会赞同这一观点,正如像AMD等公司正在与可以利用EPYC 4处理器的加速器进行合作一样。如果这些特性本质上是Linux内核的一部分,或者是旁路或其它项目的一部分,那么作为开发人员,我就能够享受到这种加速,而无需深入了解底层的加速原理。
回答:是的,我并不反对这种可能性。我并不是说这是不可能的。我只是指出这并不是通常的情况,也不是大多数租户的做法。大多数需要使用数据库的人更希望使用内置的、标准的数据库,而不想使用需要修改标准应用程序的特殊库,无论是FPGA加速器还是CPU加速器,通常都需要对标准应用程序进行适应或修改。此外,如果标准应用程序完全采用这种方式,问题在于您无法确保所有地方都有这些加速器。其它公司提供了一系列不同的选项,可能在某些地方可用,但在其它地方不可用,所以你无法确定会获得什么样的加速器。
但我赞同您的观点。如果某人选择这种方法,且其具有内在的高价值,那么这当然是有意义的。我可以给你一个例子,最近在欧洲与一位客户的一次讨论中,我们探讨了这个话题。我向这位客户提出了一个问题,希望提供一个定制产品,其中您可以选择使用AMX或不使用AMX。我们就其AI推断需求进行了讨论,问他们是想要仅使用CPU,还是CPU加上AMX,或者CPU加上GPU。这位客户提出的观点让我深有感触,因为它引发了我的好奇心,尽管根据我妻子的说法,我有时不太善于倾听。客户表示,CPU和GPU都非常昂贵,并且针对特定领域进行了优化。他们以Sapphire MX为例,其价格为177,000美元,每核心约为283美元,相当于每TOP(每秒万亿次计算)价值71美元,这在他们的快速计算中非常重要。然后他们提到了NVIDIA的GPU,价格为30,000美元,提供了4,000个TOP,每TOP价值仅7美元,而不是83美元。
这位客户指出,随着我使用越多的AMX加速器,我就必须购买和部署更多的服务器,因此我更愿意部署GPU,并在需要时使用它,而不是将其保留在那里,当我不需要时。这是一个合理的观点,对我来说,如果要进行集成,它必须具有巨大的回报率。但如果某项投资的回报率为负,并且每个核心的成本高达9倍,那我可以在其它地方以更便宜的价格获取计算能力,这是他们的观点。
问题:我能够理解这一立场,但我认为在大规模市场上,大多数人将使用已经调整好以处理十亿参数的LLM,而不是已经调整好以处理万亿参数的LLM。因此,在某个程度上,使用GPU并等待GPU可用性来获取回报可能不值得失去的业务价值。例如,今天,要获取H100,我必须等待42至48周,但我可以立即在多个云中获得内置加速器的Intel和EPYC。因此,这并不是一个案例,而是在考虑每个平台的性能时,以及如何充分利用现有计算资源来实现百万美元的收益。
回答:是的,可用性也至关重要。如果我们进一步将焦点缩小,比如以Genoa为例,粗略地说,其性能相当于0.888,为了便于计算,可以视为1个TOP,而Sapphire是每个核心的4倍,因此相差3倍。如果我们只测量矩阵乘法,我们的确可以获得4倍的优势。但是,如果我们考虑端到端的AI过程,包括输入数据的标准化、模型加载、数学运算、输出数据和业务逻辑处理等所有步骤,我们会发现我们仅仅提高了问题的10%,大致相当于总体上提高了1.1倍,这就是为什么在像TPCx-AI这样的基准测试中,当我们将Genoa与其它公司的最佳产品进行比较时,我们通过TPCx-AI上的AMX获胜,优势为1.9倍。这是因为矩阵乘法只是问题的一小部分,提高这一小部分并不能提供足够的价值,实际上就像实际应用中的摩尔定律。
我同意,肯定会有特定的情境和时机,但我认为根据我们目前的观察,对于推理任务来说,CPU是完全足够的,尤其是当您深刻了解您的应用程序,了解端到端的流程后,您会迅速意识到通过4倍的性能优化来提升代码的一小部分并不提供实际价值。
问题:从市场的角度来看,我们需要考虑要优化的可寻址市场。如果我们主要面向普通消费者,他们可能会编写性能较差的代码,对于这些用户来说,像AMX技术这样的加速可能并不会带来4倍的性能提升。因此,我们需要思考是否正在创建可以真正充分利用这一技术的优化应用程序,还是只是期望芯片的价格迅速下降,从而推动市场变革。我们希望不久的将来能够推出一些竞争性的芯片,这可能会改变游戏规则。但对于大多数客户来说,当前的CPU推断在目前的应用中已经足够。
回答:当您从端到端的性能提升的角度来看待问题时,无论您从哪里入手,都会有所帮助,不是吗?但一旦您选择了像AMX这样的特定路径,您就像是入住了“加利福尼亚酒店”,您不再有太多选择余地,尽管这是一家相当大的酒店,但它仍然只是一家酒店,这是一种路径。然而,现在有一个问题,作为技术专家,如果您看了最新的英特尔客户端新闻,他们宣布在客户端领域引入了神经网络处理器,为什么他们这样做呢?因为他们无法满足操作系统所需的TOPS性能要求,所以他们必须使用专门的加速器。这意味着他们可能不会使用AMX,因为他们无法达到所需的性能水平。所以我不确定这对未来有什么具体的影响,我会留给你们自己去思考和讨论,但我认为这是一个引人注目的观察,客户端领域宣布了一条新的AI道路,引入了神经处理单元,这引发了许多问题,但我稍后将更详细地讨论这些问题。

我认为有一点非常重要,需要我们充分了解,那就是关于加速器之间的巨大差异。现在,我要跳过之前的“史诗之旅”,希望大家都非常熟悉我们的第一代、第二代、第三代和第四代的史诗之旅,我们为了完善云原生的大规模Genoa-X和最近的Genoa,对平台思想进行了四次版本更新。

思考了操作系统的设计方式以及采用不同方法的影响。如果你看向我们左侧的方法,我们有一个集中的I/O设备和一组CCD核心,所以我们有一个集中的内存池,所有的内存都由I/O设备管理,一切都在那里管理。而如果你转向另一个领域,也就是“瓦片”的世界,基本上是一个分布式内存池,每个瓦片都有一些I/O和一些内存,这意味着如果我要在所有通道上达到最大的带宽和吞吐量,我必须穿越所有这些芯片,这会产生深远的影响。

还有另一件需要注意的事情,我认为在这里没有包括在图中的是GPU。如果你考虑GPU与CPU之间的差异,它们是不同的优化点。如果你考虑我们的Genoa,它具有12个通道,每个通道有72位,内存宽度约为768位,我们的插座带宽约为460到500GB每秒,但我们有数千GB的内存。而GPU,如果你考虑一个具有8个HBM堆栈的GPU,每个HBM堆栈宽度为1024位,内部SoC的内存宽度为8192位,封装内存高达6.5TB,而CPU的内存只有460GB,所以内存宽度和带宽之间存在明显的差异,大约是10到15倍的差距。因此,CPU是为核心进行优化的,当你开始引入其它因素时,你可能会使平衡严重偏离。

当我审视这幅图表时,我发现其中一个关键的理论计算差异在于,如果只考虑我们拥有的带宽量和核心数量,然后绘制这个美丽的理论图表,我们拥有更多的内存,因为我们有12个通道,而其它公司只有8个。然而,当以英特尔作为参考,考虑到使用60个核心,我们发现每个核心拥有超过2.6GB的带宽,这在理论上有意义,我们拥有50%以上的带宽,这意味着从60个核心扩展到90个核心,我们可以提供与60个核心相同的带宽,这是一个数学问题,通过增加50%的核心数量,从60个增加到90个,数学很简单。

然而,有趣的是,这只是理论计算,所以我们进行了一些实际测试,以了解在实际世界中会发生什么情况。我们考虑到了干扰和邻居的影响,担心加速器会占用带宽。那么在实际世界中会发生什么呢?因此,我们进行了一些测试,我们使用了Bamo核心0,运行了Stream Triad测试。在这里,我们标出了Stream Triad的性能,这是我们绘制的核心0的内存带宽。然后,我们引入了干扰邻居,另一个副本的Stream Triad运行在核心127、126、125等多个核心上,直到最后你有了120个这样的运行。但我只是绘制了核心0,我想知道核心0会发生什么。

如果你看AMD的情况,由于我们有集中的内存池,我们实际上有一个非常好的线性下降,直到某个点,然后我们下降了,当所有128个核心都在运行时,但我们只绘制了核心0。相比之下,其它公司更多地采用分布式内存池的方式,他们的起点较低,尽管我们拥有更多的内存带宽。这是很有帮助的,但为什么他们的起点较低,我不太清楚,但如果你看曲线的形状,你可以看到我所说的干扰邻居的影响。我想说的是,在大约20到24个核心后,实际上几乎没有带宽可用,具体取决于你选择绘制曲线的位置,这取决于你认为最重要的地方。这就是邻居干扰对核心的影响。现在,请想象一下,如果你的邻居是一个高带宽需求的引擎,其唯一目标是尽快在内存中传输数据,并希望不会中断其它工作。这就是为什么对于我们来说,非常小心地设计我们的操作系统架构,非常小心地决定要使用什么。

我是说,我们可以将一个GPU放入Instinct,但这只会严重降低内存子系统的带宽,因为我们需要进行完全不同的操作系统优化。EPYC大约有每秒500GB的插座带宽,而Instinct将具有6.5TB。

问题:你是否有类似的数据,因为这是云领域的数据,你是否有类似的数据...
回答:是的,我们应该去做这个,我们可以获得这些数据,但实际上我不指望它会有很大的不同。这是Amper Ultra 128,它是一个较旧的设备,采用DDR4,但这是它的真实情况。

关键问题在于,理论上应该是60个核心时2.5倍的性能,但在实际应用中,使用60个核心时存在6倍的性能差距。因此,我要向那些考虑使用加速器的CPU的客户提出警告,需要谨慎对待,因为这些加速器都会对内存带宽施加巨大压力,特别是AMX可能对内存带宽造成较大压力,因为它们的主要目的是从内存中获取数据、执行操作,然后将结果传回内存。这实际上是演示了邻居噪音对性能的明显影响。

目前,我们已经做了一些有趣的工作,因为我们关注高核心数量的扩展,我们一直在研发我们所称之为PQOS的技术,这项技术已经存在于我们的产品中。PQOS代表平台服务质量,它允许设置不同的服务类别,为线程和核心分配服务类别,限制缓存和内存带宽等资源的使用。因此,我们在这方面进行了类似的测试,唯一的区别是我们将PAMO的颜色改成了绿色,但我们对所有这些吵闹的邻居进行了限制,使它们只能使用50%的PQOS。通过这种方式,我们可以看到,我们能够保护核心0,确保在整个测试过程中核心0的性能始终保持在每秒30GB以上。

关键在于,作为云服务提供商,有能力提供各种不同价值的实例。也许您有一些廉价实例,每个核心只需要1GB每秒的内存带宽。如今,在云计算市场上,您可以购买核心数量、存储、内存、IOPS和网络带宽等各种资源。这可能是一个全新的选择,您可以根据需求来分配内存带宽。因此,云市场实际上变成了一个类似俄罗斯方块的游戏,您可以查看您的资源分配情况,查看您的实例中有多少核心,还有多少内存带宽可用。也许您可以采用一些特殊的价格策略,创建一些特殊的实例,因为它们是该服务器上唯一可用的。对于我来说,这是一个非常独特且新颖的杠杆,可以帮助客户获得信心,尤其是那些关心高核心数量的客户。因此,我们必须在插座和平台层面提供服务质量,以帮助客户解决这个问题。

我想要讨论的是,我们所做的EPYC各代产品以及启用我们设计的优化。我们从Genoa开始,这是一个平衡的平台,拥有非常平衡的核心配置,无论是从密度、IPC还是频率效率等方面都表现出平衡性。我们开始思考,我可以为云原生市场做些改变,可以牺牲一些频率,以获得更好的功耗效率,也可以牺牲一些东西,以提高核心密度。同样的RTL,但在VF曲线上看,它们具有不同的物理实现。然后我们考虑,对于X(某产品代号),我们可以采用这些基本构建块,堆叠一个大型的L3缓存,创建一种创新的新产品,以满足技术计算、模拟等市场的需求。这就是我们Zen 4家族的前三个部分的方式。最后一个部分是Genoa,我们在嵌入式尺寸和边缘市场上看到了一些不同之处,这些市场更加注重TCO和性能每瓦每美元。一切都有略微不同的权衡,因此,对于Genoa,我们真正的重点是优化性能每瓦每美元。通过采用更小的封装和减少DDR通道,我们能够降低平台成本,但仍然利用相同的构建块。这就是我们设计Genoa的方式。

如果您看Zen 4核心,与紧凑型核心相比,尺寸上存在明显差异。每一毫米在芯片中都变得非常重要,因此在芯片上,尺寸差异相当大。它们都采用TSMC 5纳米工艺,具有相同的RTL,但却有不同的物理实现。我们减小了缓存大小,因为在云原生应用中,L3缓存的大小并不是关键因素,重要的是数据局部性。因此,我们在红色曲线上进行了物理设计的优化,从较低的功耗每核心开始,并限制了功耗每核心的上限,这是在任何晶圆工厂工艺中都需要进行的物理权衡。

如果我愿意投资购买更大且更强大的晶体管,我可以获得更高的工作频率。但如果我寻求更高的能效,我必须在性能曲线的另一端开始牺牲峰值频率。这种权衡实际上是制造过程中的物理考量,它为我们提供了关于如何实现这一目标的重要线索。

我想强调的是效率曲线,因为它们实际上是非常深刻的。我们通常喜欢使用那些公开可验证的基准数据,在我们的工作中,我们经常会看到SPEC Power测试,以及相关的SPEC Power分数。尽管看到SPEC Power得分可能看起来一切都很出色,但实际上,观察功耗效率曲线的形状是至关重要的。

如果您不熟悉这些曲线,这些数据是从SPEC Power官方网站中提取的。在这里,您可以看到在10%的负载下,每瓦提供了如此多的SSJ Ops性能,蓝色柱表示功耗。在整个SPEC Power测试中,我们以每瓦34000 SSJ Ops的性能表现出色。但有趣的是,如果您观察我们的活动功耗,只有126,而竞争对手的活动功耗是153,考虑到我们拥有更多的核心,这意味着在活动和空闲功耗方面,我们都表现得比竞争对手更出色。

然而,如果您观察其它情况,例如在100%负载下,他们可以提供1400万SSJ Ops,这几乎等同于Genoa在半负载条件下提供相同数量的SSJ Ops。这也是我们在SPEC Power测试中获得出色得分的原因。再次与Ampere的最佳公开分数进行比较,您会看到我们的空闲功耗是126,而他们的实际空闲功耗要高于我们,尽管他们在SPEC Power测试上获得了143的最佳公开分数,而我们的分数是126。当然,我们都知道SPEC Power测试可能具有一定的优化空间,每个人都会优化适合薄配置的情况,但这是公平的,因为每个人都在进行薄配置优化。然而,如果您注意到,在空闲状态下,我们的功耗明显低于他们。不过,如果您观察他们在最大负载下的性能,他们可以提供500万SSJ Ops,而我们仅在20%负载下,却可以实现与100%负载相同数量的SSJ Ops。这解释了为什么我们在功耗效率方面表现得如此出色。

还有一点值得注意的是,我差点忘了指出这一点,如果您观察这些曲线,它们告诉您人们在多大程度上在推动硅的极限。您可以看到我们的曲线相当线性,我们在大约80%到90%的最大功率每瓦处略微提高了功耗,然后回到正常水平。而对于Sapphire,它们的最大效率点约在50%左右,因为它们在为了获得更具竞争力的SPEC得分而推动功耗。这实际上影响了整个曲线的形状。

EPYC在这方面表现非常出色,它们的功耗效率曲线非常线性,一直到最大功率,没有像我们一样推动功耗。他们在线性性能方面表现出色。

问题:如果我是一个云租户,我看到这些数据后,下一步会是什么呢?我会前往AWS控制台,开始寻找AMD的实例...
回答:在云计算领域,底线非常简单。使用AMD实例可以获得更高的性能,每美元投入都更有价值,而不是选择其它架构。选择AMD还有助于提高可持续性。与AMD一同合作,您可以获得经过编写和测试的三万亿行x86兼容性代码的完全支持。
如果您回顾我们从Zen 1到Zen 4的发展历程,您会发现AMD一直以来在执行卓越方面的表现是前所未有的。当我与客户讨论我们的产品路线图时,我经常听到的反馈是:“路线图非常稳定,与六个月前或十二个月前相比没有什么变化。”这是因为我们作为一家公司能够按计划执行,这也是我们所能获得的最好的赞美。一些最大的超级计算机项目,甚至那些在特斯拉、Frontier和Elaton Machine等领域进行挑战性工作的团队,都选择了AMD。他们之所以选择AMD,是因为他们需要可靠的执行来满足性能里程碑。特别是Frontier,它将成为世界上第一个第二级超级计算机,这需要长期规划。这意味着他们在几年前就决定信赖我们的路线图,因为我们的执行表现一直非常出色。这些方面对我来说非常重要,包括我们带来的创新、创新速度、性能每美元以及在能源管理方面的卓越表现。
目前来看,我们绝对是地球上能源的最出色的管理者。如果从昨天的OCP主题演讲中提炼出一些重要观点,几乎每位主讲者都提到,AI将耗尽我们能够在地球上创造的每一单位能源。那么,问题来了,从哪里获取这种能量?从哪里获得所需的电力?从哪里获得数据中心资源?如果您观察当前全球数据中心的容量,数据中心的空置率不到3%,这实际上是相当糟糕的情况。最近,我与一家数据中心运营商交谈,他们计划在未来几年内在三个不同地点建设三个数据中心,总容量将在1到3兆瓦之间,但令人担忧的是,尽管他们正在不断启用新的数据中心,但可用容量已经售罄。所以,如果您打算进行AI项目,您将去哪里呢?
在OCP的主题演讲中,我们深入讨论了这个问题,其中的许多观点都引人深思。他们强调AI对资源的巨大需求。然而,我们并不仅仅停留在未来的解决方案上,因为今天,我们已经拥有了解决问题的方法。您可以通过整合数据中心中的5年前的设备,将5、6台旧设备整合成一台,从而创造出更多的动力和空间,以支持新的AI业务。对于那些正在考虑进行AI项目并正在寻找资源的客户来说,这是一个非常强有力的信息。他们会问:我应该去哪里获取这些资源?我可以将这些资源放在何处?我是否可以在自己的数据中心中获取所需的动力和空间?值得指出,数据中心的建设需要时间,而Fabs工厂则需要五年时间,但我认为数据中心的建设通常需要大约两年时间。因此,数据中心资源的整合是一个关键信息。
我认为这或许可以看作第五个要点,也许Keith可以解释一下为什么以及如何能够更大程度地整合,以创造更多空间和容量,从而进行AI业务颠覆,而无需重新编写代码。
你对这一观点有何看法?
问题:根据你的回答,我认为我可以向大规模云服务商提出相同的观点,这不仅适用于租户,也适用于运营商。租户必须处理运营商授予的资源,因此你的观点非常贴切。我只是试图搞清楚这是为哪些受众和客户而言。
回答:我认为这实际上适用于两方面,即企业内部的客户,特别是那些受到地理位置限制的客户,以及大规模云服务商。考虑到大规模云服务商,他们并非陷入未知问题,因为他们必须遵循他们自己的建设和预测边界,以及如何在现有数据中心中为租户提供更小的空间,以便部署更多AI。
他们可能会建设新的数据中心,而且可能会比其他人建设得更快,但他们仍然面临同样的问题,即如何快速启用新设施,以及如何创造所需的空间和容量。因此,如果他们能够进行整合,而不是将租户分散在不同位置,那么现在他们可以在现有设施中部署他们自己的AI,或与竞争对手的AI等。
问题:我认为这个观点同样适用于云服务提供商,特别是那些需要在运营商和租户之间切换的混合环境中。毫无疑问,如果我有5年前的设备,那么从任何供应商那里购买现代设备都会对其进行改进,并减轻了我的电力和冷却等问题。
REP平台已将其平台迁移到AMD和Dell服务器,这已经节省了一百万美元,并采用了类似云计算的运营模式,因此我认为这个观点是站得住脚的。
回答:是的,我同意这一观点。我也听说了类似的情况,尽管每个规则都有例外,但我认为我们当前的方法和路径对于创建容量以便进行新的业务颠覆非常有效。
至少在我看来,似乎世界上一切都将因AI而变得更好或更节省,这是根据市场营销的说法。最近,我看到了一个例子,可口可乐推出了一款由AI灵感启发的可口可乐版本。这是一种富有创意的市场营销。
问题:有哪种卓越的协议可以将所有这些内存和CPU设备互相连接?
回答:如果AMD正在进行一些令人振奋的工作,也许我们可以考虑制作一期相关的播客,对吗?我听说有一小组公司正在积极开展名为“Ultra Ethernet”的项目,取得了巨大的进展。该项目是在今年夏天早些时候宣布的,现在已经开放会员资格。实际上,在OCP峰会上,OCP和Ultra Ethernet签署了一项合作协议,共同推动Ultra Ethernet的发展。市场已经明确表达了对提升以太网作为AI和HPC下一代通信技术的迫切需求。发展势头非常良好,我认为我们已经有了九名创始成员,虽然我不能透露所有的细节,但可以说人们的加入速度相当迅猛。
-----
Source: Robert Hormuth, Cloud-Native Chip Evolution with AMD, Oct 21, 2023



---【本文完】---

近期受欢迎的文章:


我们正处于数十年未见之大机遇中

新技术爆发式发展,催生新产品

然而,颠覆式创新并非简单的技术堆叠

而是异常复杂的系统工程

需要深度洞察

欢迎一起分享思考和见解

继续滑动看下一个
Andy730
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存