01
介绍
生成式ai和大语言模型(llm)正在以难以置信的方式吸引全世界的目光,本文简要介绍了大语言模型,训练这些模型带来的硬件挑战,以及gpu和网络行业如何针对训练的工作负载不断优化硬件。
02
生成式ai/大语言模型-generative ai/large language models
生成式ai是人工智能的一个分支,主要聚焦在基于既有的内容、创造和生成诸如图片、文字和音乐等新的内容,而不仅仅简单的复制和衍生。它包括训练深度学习模型,通过学习大型数据集的基本模式和特征,然后利用这些知识来生成新的输出结果。大语言模型是生成式人工智能的一种,利用先进的深度学习算法在大量的自然语言数据上进行训练。这些模型可以学习到人类语言的模式和结构,并可以针对各类书面输入(译者注:可以理解为提出的各行各业,各种方面的提问)或者提示做成类似人类的反馈(回答)。
大语言模型已经“悄然工作”了十多年,直到openai发布了chatgpt,才吸引了广泛关注。chatgpt可以让任何一个可以上网的人,都能和“强悍”的大语言模型-gpt3.5进行交互。随着更多的个人和组织开始和chatgpt“戏耍”起来,我们意识到很多应用会因此发生变化,而这种改变,在一年前无法想象。
chatgpt以及其他最新的大语言模型产品带来近乎完美的“人类”表现,得益于架构模型的进步,这些模型就是高效的深度神经网络(ddn)和数十亿训练参数的大型数据集。大多数参数是用于训练和推理的权重矩阵。而训练这些模型的浮点计算次数(flop)与参数数量和训练集的大小几乎呈现线性增长。这些运算是专为矩阵云端设计的处理器上进行的,如图形处理器(gpu)、张量处理单元(tpu)和其他专用人工智能芯片。gpu/tpu 和人工智能加速硬件以及它们之间用于通信的互联技术的进步,使这些巨型模型的训练成为可能。
03
大语言模型应用(llm)
大语言模型有很多使用案例(译者注:后llm即为大语言模型,后续两者都可能出现),几乎每个行业都可以从中获益。任何组织都可以基于自己领域和特定需求进行微调。微调在特定的数据集上训练已有的语言模型,使得更具备专业性,来满足特定任务的要求(译者注:英文原文为fine-tune,个人觉得是不是叫调优更好一些,不过后面还是写成微调)。微调可以使企业能够利用训练模型的已知能力,同时适应企业的独特需求。它使得模型可以获取特定领域的知识,从而提高为组织本身的应用场景创造输出。有了经过微调的模型,企业可以将大语言模型应用在诸多场景中。
例如,根据公司文档进行微调的llm可以用于客户支持的服务。llm可以帮助软件工程师创建代码,或者帮助他们创建部分代码,当根据企业的专用代码库进行微调之后,llm还可能生成与现有代码库一样的软件。(译者注:在juniper的mist无线管理平台下,客户就可以通过ai对话助手,利用chatgpt对juniper的文档进行查询,提问一些像“交换机的vlan该如何配置”这样的问题)。
利用情感分析来了解客户的反馈,将技术文档翻译成其他语言,总结会议和客户的电话,以及生成工程或营销内容,这些都是llm的诸多案例的“洒洒碎”(一点点)。
而随着llm的规模不断呈指数级增长,对计算和互联的需求也大幅增加。只有当模型的训练和微调,以及推理更具成本优势时,llm才会得到广泛应用。
04
llm训练
使用自然语言文本训练,通常需要通过网络抓取,维基百科、github、stack exchange(问答网站)、arxiv(一个免费的科学预印论文库)等网站收集大量数据。大多数模型坚持使用开放数据集进行训练。首先要对数据集中的大量文本进行标记化,通常是使用字节对编码等方法。
标记化是将互联网上的原始文本转换成一串整数(标记)。一个标记(唯一整数)可以代表一个字符,也可以代表一个词。标记也可以是单词的一部分。例如,单词 unhappy 可能被分成两个标记--一个代表子单词 un,另一个代表子单词 happy。
图 1 — 段落的标记化
根据数据集的不同,可能会有数以万计的独特标记,而数据集本身也可能映射出数千亿个标记。序列或上下文长度是模型在训练过程中预测下一个标记时,将查看的连续标记的数量。在 gpt-3 和 llama(meta 的 llm)中,序列长度约为 2k。有些模型使用的序列长度为 100,000 左右。表 1 比较了 gpt-3 和 llama 模型的训练参数。
为了训练模型,标记会被分成大小为 batch_size (b) x 序列长度的数组,这些会批量送入大型神经网络模型。在这篇文章中,我不会深入探讨模型架构,因为这需要对深度学习和转换器(transformers)有更深入的了解(我不具备这方面的知识)。训练通常需要数周甚至数月的时间,并且需要大型 gpu 集群。
|表 1 — 比较gpt-3 和 llama 模型
当基础模型训练完成后,通常会进行监督微调- supervised fine-tuning (sft)。这是可以让llm化身助手,根据人类提示回答问的重要步骤。在监督微调的过程中,承包商(供应商)会人工创建一个精致的数据集(数量少,但是质量超高),并利用这个数据集对基础模型进行重新训练。对,就是这样,训练有素的sft模型就可以变成助手,能够对用户的提示做出类似人类的回应,这是对llm的一个简化解释,目前是为后面的章节提供一些背景信息。
05
数学模型
一个拥有 175b 参数的模型通常需要大于 1tb 的内存来存储参数和计算过程中的中间状态。它还需要存储空间来检查训练状态(在训练迭代过程中遇到硬件错误时回退)。一万亿个标记通常需要 4tb 的存储空间。像 nvidia h100 这样的高端 gpu 集成了 80gb 的 hbm 内存。一个 gpu 的内存无法满足模型参数和训练集的需求。
根据维基百科,一个 llm 的每个参数和标记通常需要 6 个flop。这意味着训练 gpt-3 模型需要 6 x 175b x 300b 或 3.15 x 10^23 flop。gpt-3 模型的训练耗时三周。因此,在这三周的时间里,它需要 5.8 x 10^16 flops(每秒浮点运算)的计算能力。
性能最高的 nvidia h100 gpu 大约可以实现 60 teraflops(每秒万亿浮点数)。如果这些 gpu 的利用率达到 100%,那么我们需要约 1000 个 gpu 才能获得 5.8 x 10^16 flops。但是,在许多训练工作负载中,由于内存和网络瓶颈,gpu 的利用率徘徊在 50% 左右或更低。因此,训练所需的 gpu 数量是原来的两倍,即大约需要 2000 个 h100 gpu。最初的 llm 模型(表 1)是使用旧版本的 gpu 进行训练的,因此需要 10,000 个 gpu。
在使用数千个 gpu 的情况下,模型和训练数据集需要在 gpu 之间进行分布,以便并行运行。并行可以从多个维度进行。
06
data parallelism-数据并行
数据并行是在多个 gpu 上分割训练数据,并在每个 gpu 上训练模型的副本。
# 典型的流程如下
数据分发:训练数据被分成多个迷你批次,并分配给多个 gpu。每个 gpu 获得一个独特的迷你批次训练集。
模型拷贝:在每个 gpu(worker)上放置一份模型副本。
梯度计算:每个 gpu 使用其迷你批次对模型进行一次迭代训练,运行一次前向传递来进行预测,一次后向传递来计算梯度(表明在下一次迭代之前应如何调整模型参数)。
梯度聚合:然后将所有 gpu 的梯度汇总在一起。通常的做法是取梯度的平均值。
模型更新:聚合梯度被广播到所有 gpu。gpu 更新其本地模型参数并同步。
重复:这一过程会重复多次迭代,直到模型完全训练完成。
在使用大型数据集时,数据并行化可以大大加快训练速度。但是,由于每个 gpu 必须将其结果与参与训练的其他 gpu 进行通信,因此可能会产生相当大的 gpu 间通信量。在每次训练迭代中,这种所有gpu全部相互交互的通信会在网络中产生大量流量。
有几种方法可以减少这种情况。对于小规模模型,可由专门的服务器(参数服务器)汇总梯度。这可能会造成从众多 gpu 到参数服务器之间的通信瓶颈。ring all-reduce等方案可以用于将梯度以环形模式从一个 gpu 发送到另一个 gpu,其中每个 gpu 将从上一个 gpu 接收到的梯度与本地计算的梯度聚合在一起,然后再发送给下一个 gpu。因为梯度聚合分布在各个 gpu 上,最终结果需要传回环形拓扑结构中的所有 gpu,因此这个过程非常缓慢。如果网络出现拥塞,gpu 流量在等待梯度聚合时就会停滞。
此外,单个 gpu 无法处理数十亿参数的 llm。因此,仅靠数据并行性并不适用于 llm 模型。
(译者注:数据并行的概念描述,参考baidu大脑的一篇文章:https://baijiahao.baidu.com/s?id=1721295143486708825&wfr=spider&for=pc)
07
model parallelism--模型并行
模型并行旨在通过在多个 gpu 上分割模型参数(和计算)来解决模型无法在单个 gpu 上运行的问题。
# 典型的流程如下
模型分区: 模型被分为几个分区。每个分区分配给不同的 gpu。由于深度神经网络通常包含一堆垂直层,因此将大型模型按层分割是合乎逻辑的,其中一个或一组层可能被分配给不同的 gpu。
前向传递:在前向传递过程中,每个 gpu 都会使用 整个 训练集计算其模型部分的输出。一个 gpu 的输出将作为输入传递给序列中的下一个 gpu。序列中的下一个 gpu 在收到前一个 gpu 的更新之前无法开始处理。
后向传递:在后向传递过程中,一个 gpu 的梯度被传递给序列中的前一个 gpu。收到输入后,每个 gpu 都会计算模型中自己那部分的梯度。与前向传递类似,gpu 之间会建立顺序依赖关系。
参数更新:每个 gpu 都会在后向传递结束时更新其模型部分的参数。请注意,这些参数无需广播给其他 gpu。
重复:重复这一过程,直到模型在所有数据上都训练完成。
模型并行化允许对单个 gpu 难以支撑的大型模型进行训练。但这也会在前向和后向传递过程中引入 gpu 之间的通信。此外,由于数据集规模巨大,上述通过一大批 gpu 运行整个训练数据集的天真实现方式,对于 llm 可能并不实用,也会在 gpu 之间产生顺序依赖关系,导致大量等待时间和计算资源利用率严重不足。这也就产生了下面的流水线并的方式。
08
pipeline parallelism-流水线并行
流水线并行结合了数据并行和模型并行,其中训练数据集的每个迷你批次被进一步拆分为多个微型批次。在上面的模型并行例子中,当一个 gpu 使用第一个微批次计算输出并将数据传递给序列中的下一个 gpu 后,它不会闲置,而是开始处理训练数据集的第二个微批次,以此类推。这就增加了 gpu 之间的通信,因为每个微批次都需要在序列中相邻的 gpu 之间进行前向传递和后向传递通信。
09
tensor parallelism-张量并行
模型和流水线并行技术都会在层边界垂直分割模型。对于大型 llm,即使在 gpu 中安装单层也是一项挑战!在这种情况下,张量并行技术就派上了用场。它是模型并行的一种形式,但不是在层级上划分模型,而是在单个操作或 张量 级别上划分模型。这样可以实现更细粒度的并行,对某些模型来说效率更高。
还有许多其他技术可以在 gpu 上分割数据集和模型参数。这一领域的研究重点是尽量减少 gpu 间的通信,并在训练大型模型时减少 gpu 的闲置时间(flop 利用率)。大多数深度学习框架都内置了对模型和数据集分区的支持(如果用户不想手动设置的话)。
无论使用哪种并行方式,llm 都会因为参数和数据集的庞大规模,通过连接这些 gpu 的矩阵产生大量 gpu 间通信。结构中的任何拥塞都可能导致训练时间过长,使得gpu 利用率极低。
因此,用于 gpu/tpu 集群的互连架构技术和拓扑结构对 llm 的总成本和性能起着至关重要的作用。让我们探讨一下流行的 gpu/tpu 集群设计,以了解互连技术及其在 llm 训练中的应用。
10
gpu/tpu全貌
tpu 是谷歌开发的人工智能加速器,用于加速矩阵乘法、矢量处理以及训练大规模神经网络所需的其他计算。谷歌不向其他云提供商或个人出售 tpu。这些 tpu 集群仅由谷歌用于在谷歌云中提供 ml/ai 服务和其他内部应用。
|图二2 — 2d/3d
谷歌使用二维-2d或三维-3d环形网状网络构建 tpu 集群。在二维环形网格中,每个 tpu 与南/北/东/西的四个方向的 tpu 相连。环形网格的特点是网格边缘环绕(像甜甜圈或环形),因此网格边缘的 tpu 仍与其他四个 tpu 相连。同样的概念也可以扩展到三维拓扑结构。这种拓扑结构使相邻的 gpu 在交换结果时能够快速通信(张量/管道并行)。
tpu v4 集群在三维环形网络中拥有超过 4,096 个 tpu。它们使用光交换机(ocs)来转发tpu 之间的流量。因为消除了转发过程中光电转换操作,因此可以节省 ocs 上光模块的功耗。谷歌在 tpu v4 集群中对其所有 llm 模型(lamda、mum 和 palm)进行了训练,并声称训练中 tpu 的利用率非常高(超过 55%)。
谈到 gpu,nvidia 是 gpu 供应商的“大佬”,所有大型数据中心和高性能计算(hpc)都使用 nvidia 系统来训练大型 dnn。大多数 llm(谷歌创建的模型除外)都是使用 nvidia 的 gpu 进行训练。
nvidia gpu 配备高速 nvlinks,用于 gpu 与 gpu 之间的通信。与传统的 pcie 接口相比,nvlink 提供了更高的带宽,可加快 gpu 之间的数据传输,从而缩短机器学习的训练时间。第四代 nvlink 可提供每个方向200gbps 的带宽。nvidia 最新的 h100 gpu 有 18 个这样的链路,可提供 900gbps 的总带宽。此外,nvlink 支持 gpu 内存池,即多个 gpu 可以连接在一起,形成更大的内存资源。这有利于运行需要比本地 gpu 内存大的应用程序,并允许在 gpu 之间灵活划分模型参数。
| figure 3 — gpu 服务器(节点) 共计 8个gpus. 每个网卡会通过每个方向的osfp承载 400gbps的数据. the osfp cage 把gpu的cx7 nic 上和外部的以太/ib交换机互联,节点中的 gpu 可以通过 nvlink 交换机系统的层级结构,利用四个 nv 交换机的 osfp 端口连接到其他 gpu 来源: nvidia’s hot chips 2022 presentation.
gpu 服务器,又称系统或节点,是一个 8 个 gpu 的集群,集群内的 gpu 通过四个定制的 nvlink 交换机(nvswitches)通过 nvlinks 相互通信。多个 gpu 服务器可通过 gpu 架构连接在一起,形成大型系统。
gpu 矩阵是以叶脊结构(leaf/spine)或三级 clos 拓扑排列的交换机阵列。为所有连接于此的gpu 服务器之间提供任意对任意的连接。矩阵的叶/脊(leaf-spine)交换机通常采用胖树(fat-tree)拓扑结构。在胖树拓扑结构中,随着拓扑结构从节点向上移动到叶子和骨干,链路的带宽也会增加。这是因为每个上行链路需要处理来自多个下行链路的带宽。
| 图 4 — 数据中心网络中 gpu 服务器和 gpu 网络矩阵的概念图
# gpu网络矩阵的交换机数量取决于
· 系统规模 (或者说gpu节点的数量)。
· 内部交换机的吞吐量,单个交换机提供的吞吐量越高,构建矩阵所需的交换机数量就越少。
· 矩阵中的额外带宽(超额配置),以缓解拥塞情况。
# 想要实现最佳训练性能,就需要
· gpu 结构应具有较低的端到端延迟。由于存在大量 gpu 间通信,降低节点间数据传输的整体延迟有助于缩短整体训练时间。
· 矩阵可以保证节点间无损传输数据。无损传输是人工智能训练的一个重要标准,因为梯度或中间结果的任何损失,都会导致整个训练回到存储在内存中的上一个检查点,然后重新开始。这会对训练性能产生不利影响。
· 系统应具备良好的端到端拥塞控制机制。在任何树状拓扑结构中,当多个节点向一个节点传输数据时,瞬时拥塞是不可避免的。持续拥塞会增加系统的尾部延迟。由于 gpu 之间的顺序依赖关系,即使单个 gpu 的梯度更新在网络中出现延迟,许多 gpu 也会停滞。一个缓慢的链路(译者注:这里我个人理解为拥塞的交换机物理链路)就会导致训练性能下降!
此外,还应考虑到构建系统的总成本、功耗、冷却成本等。有鉴于此,让我们来看看 gpu 架构设计的选择以及每种方法的优缺点。
11
定制化 nvlink 交换机系统-- custom nvlink switch system
nvlink交换机既可以用于连接gpu服务器内部的8个gpu,也可以用于构建gpu服务器之间的交换结构,nvidia 在 hot chips 2022 会议上展示了使用 nv switch 矩阵的 32 节点(或 256 个 gpu)拓扑结构。由于 nvlink 被专门设计为连接 gpu 的高速点对点链路,因此它比传统网络具有更高的性能和更低的开销。
| 图5 — 使用nv switch的gpu矩阵
第三代 nv switch 支持 64 个 nvlink 端口,交换容量为 12.8tbps。它还支持组播和网内聚合。通过网内聚合,来自所有工作 gpu 的梯度数据会在 nv 交换内部聚合,更新后的梯度会发送回 gpu 以开始下一次迭代。这有可能减少训练迭代之间的 gpu 间通信量。
nvidia 声称,使用 nv switch矩阵训练 gpt-3 模型的速度比使用 infiniband 交换矩阵快 2 倍。这一性能令人印象深刻,但交换机的带宽比高端交换机供应商提供的 51.2tbps 交换机少 4 倍!使用 nv switch构建具有 >1k gpu 的大型系统在经济上并不可行,而且协议本身在支持更大规模方面可能存在局限性。
此外,nvidia 并不单独销售这些 nv switch。如果数据中心希望通过混合和匹配不同供应商的 gpu 来扩展现有的 gpu 集群,就不能使用 nv switch,因为其他供应商的 gpu 不支持这些接口。
(译者注:并没有把nv switch翻译成nv交换机,是为了保证这个名词的独立性)
12
infiniband (ib) 矩阵
infiniband 于 1999 年推出,被视为 pci 和 pci-x 总线技术的高速替代品,用于连接服务器、存储和网络。尽管由于其经济性的因素,infiniband 最初的雄心壮志有所收敛,但由于其卓越的速度、低延迟、无损传输和远程直接内存访问(rdma)功能,infiniband 在高性能计算、人工智能/ml 集群和数据中心中找到了自己的位置。
infiniband (ib) 协议设计高效、轻便,避免了与以太网协议相关的典型开销。它既支持基于通道的通信,也支持基于内存的通信,因此可以高效地处理各种数据传输方案。
ib 通过发送和接收设备之间基于信用的流量控制(在每个队列或虚拟线路层次上)实现无损传输。这种逐跳流量控制可确保数据不会因缓冲区溢出而丢失。此外,它还支持端点之间的拥塞通知(类似于 tcp/ip 协议栈中的 ecn)。它提供卓越的服务质量,允许优先处理某些类型的流量,以降低延迟并防止数据包丢失。
此外,所有 ib 交换机都支持 rdma 协议,该协议允许数据从一个 gpu 的内存直接传输到另一个 gpu 的内存,而不牵扯cpu的操作系统。这种直接传输方式大大提高了吞吐量,减少了端到端延迟。
尽管具备这些优势,但因为它们更难配置、维护和扩展,infiniband 交换机系统却不如以太网交换机系统受欢迎。infiniband 的控制平面通常通过单个子网管理器集中管理。它可以与小型集群配合使用,但对于拥有 32k 或更多 gpu 的 矩阵 而言,扩展难度很大。ib 矩阵还需要主机通道适配器和 infiniband 线缆等专用硬件,扩展成本比以太网矩阵高。
目前,nvidia 是唯一一家为 hpc 和 ai gpu 集群提供高端 ib 交换机的厂商。openai 在微软的 azure 云中使用 10,000 个 nvidia a100 gpu 和 ib 交换机矩阵训练了他们的 gpt-3 模型。meta 公司最近利用 nvidia a100 gpu 服务器和 quantum-2 ib 交换机 (25.6tbps 交换容量,400gbps 端口)构建了一个 16000的 gpu 集群。该集群用于训练生成式人工智能模型,包括 llama。
请注意,在超过10,000 gpu连接时,每个服务器内部 gpu 之间的切换是通过服务器中的 nv switch进行的。ib/以太网矩阵只是将服务器连接在一起。
| 图6 — 连接 128 个 gpu 的 gpu 结构概念图(未显示所有节点)。gpu-leaf链路: 400gbps; leaf-spine链路:800gbps.
由于对 llm 训练工作负载和更大 llm 模型的需求不断增加,超大规模厂商正在寻求建立拥有 32k 甚至 64k gpu 的 gpu 集群。在这种规模下,使用以太网 fabric 在经济上更有意义,因为以太网已经拥有一个强大的生态系统,包括许多芯片/系统和光学器件供应商,并且正在推动开放标准,以实现供应商之间的互操作性。
13
以太网矩阵--ethernet fabric
从数据中心到骨干网络,处处都可以看到以太网的部署,从 1g的低速端口到800g,再到即将到来的 1.6t,应用部署各不相同。infiniband 在端口带宽和总交换容量方面都落后于以太网。以太网交换机每g带宽的成本低于 infiniband 交换机,这得益于高端网络芯片供应商之间的良性竞争,导致供应商在每个 asic芯片增加更多带宽(译者注:互相pk追逐性能),从而使得不论固定端口交换机和模块化交换机,每g成本都更优异。
行业领先企业的高端以太网交换机 asic芯片,已经可以提供 51.2tbps 的交换容量和 800g 端口,是 quantum-2 性能的两倍。如果每个交换机的吞吐量增加一倍,在相同数量gpu的情况下,构建gpu矩阵所需所需的交换机数量将会减半!
无损传输:以太网可以通过优先流量控制(pfc)提供无损传输。pfc 允许八类服务,每一类都支持流量控制。其中一些类别可指定为启用 pfc 的无损传输。与有损流量相比,无损流量以更高的优先级通过交换机进行处理和交换。在拥塞期间,交换机/网卡可以对其上游设备进行流量控制,而不是丢弃数据包。
rdma支持:以太网还可通过 rocev2(rdma over converged ethernet,聚合以太网上的 rdma)支持 rdma,rdma 帧封装在 ip/udp 内。当 gpu 服务器中的网络适配器(nic)接收到发送给 gpu 的 rocev2 数据包时,nic 会绕过 cpu 将 rdma 数据直接发送到 gpu 的内存中。此外,还可以部署强大的端到端拥塞控制方案(如 dcqcn),以减少 rdma 的端到端拥塞和数据包丢失。
负载均衡增强:bgp 等路由协议使用等价多路径路由(ecmp),在源和目的地之间有多条 成本 相等的路径时,将数据包分配到多条路径上。链路成本(cost)就可以简单理解为设备跳数。ecmp 的目标是分配网络流量,提高链路利用率,防止拥塞。
当数据包到达交换机时,可以多条等价路径到达目的地,交换机会使用哈希函数来决定发送数据包的路径(实现负载均衡)。这种哈希可以使用源和目的ip 地址、源和目的端口号以及协议字段,将数据包映射到不同链路的流量上。然而,哈希并不总是完美的,可能会导致某些链路流量过载。例如,在图 7 中,假设单播流量模式为 g0 -> g19、g9 -> g2 ,以及g18 -> g11。理想情况下,网络应该不会拥塞,因为叶/脊交换机有足够的带宽支持这种流量模式。然而,由于哈希的离散不够,导致所有流量都可能选择 spine_switch_0。当出现这种情况时,该交换机的输出端口就会出现流量超载,1200gbps 的流量试图从 800gbps 的端口流出。(译者注:此处有一句due to a lack of entropy,我理解为就是hash并没有把流量分布出去,而是落在一个交换机上)。
| 图 7 — 不完善的哈希计算可能会导致某些链路被过度占用(译者注:在spine_ switch_0上看,左侧三个400g端口进入的流量凑要从右侧黑色的800g端口发出)
在这种情况下,端到端拥塞方案(例如ecn/dcqcn 等)可以有效地根据交换机结构内部的拥塞情况对发送方流量进行节流,不过在发送方节流之前仍可能会出现短暂的拥塞情况。
# 还有其他方法可以进一步减少拥塞
1.在脊/叶交换机之间的线路略微超配带宽。
自适应负载平衡:当有多条路径到达目的地时,如果一条路径出现拥塞,交换机可以通过其他端口来路由后续的流量数据,直到拥塞得到解决。为实现这一功能,交换机硬件会监控出口队列深度和耗尽率,并定期将信息反馈给上游交换机的负载平衡器。许多交换机已经支持这一功能。
rocev2 的数据包负载均衡可将这些数据包均匀地分布在所有可用链路上,以保持链路的有效均衡。通过这种方式,数据包可以不按顺序到达目的地。但是,网卡要可以将 roce 传输层这些不按顺序的数据,转换成有顺序的数据,以透明方式向 gpu 传输(译者注:也就是网卡需要做数据的排序工作)。这需要网卡和以太网交换机提供额外的硬件支持。
除上述功能外,网络内聚合(gpu 的梯度可以在交换机内聚合)也有助于减少训练期间的 gpu 间流量。nvidia 在高端以太网交换机集成软件支持这一功能。
因此,高端以太网交换机/网卡具有强大的拥塞控制/负载平衡功能和 rdma 支持。与 ib 交换机相比,它们可以扩展到更大的设计规模。一些云服务提供商和超级扩展商已经开始构建基于以太网的 gpu 矩阵,以连接大于 32000(32k)个 gpu。
14
全调度型矩阵fully-scheduled fabric(voq fabric)
最近,几家交换机/路由器芯片供应商发布了支持全调度或 ai矩阵芯片。全调度矩阵并不新奇,不过是voq矩阵的一种,该技术十多年来主要用于许多模块化机箱设计,包括瞻博网络的 ptx 系列路由器。这种 voq矩阵 概念可以扩展到支持分布式系统,以及更大规模的扩展。
在 voq 架构中,数据包只在入口leaf交换机中缓冲一次,其缓冲队列与数据包需要离开的最终出口leaf交换机/广域网端口/输出队列是唯一映射的。入口交换机中的这些队列称为虚拟输出队列(voq)。因此,每个入口leaf交换机都为整个系统中的每个输出队列留有缓冲空间。该缓冲区的大小通常可容纳每个 voq 大概40-70us 的拥塞数据(译者注:相当于内存)。当队列较小时,voq 会留在芯片缓冲区;当队列开始增加时,voq 会转移到外部存储器中的深度缓冲区。
· 在入口leaf交换机上,一旦 voq 积累了一些数据包,它就会向出口交换机发出请求,请求允许通过网络发送这些数据包。这些请求通过网络到达出口leaf交换机。
· 出口leaf交换机的调度程序会根据严格的调度层次和浅层输出缓冲区的空间来批准这一请求。并授权速率限制,以避免从矩阵中出口交换机的出口链路过载。
· 当授权批准到达 入口 leaf 交换机,它就会将一组数据包(收到授予的数据包)发送到出口,并将负载均衡到矩阵中的所有可用上行链路上(译者注:上行链路即是到达spine的链路)。
· 针对特定 voq 的数据包可以在所有可用的输出链路上均匀分布,以实现完美的负载平衡。这可能会导致数据包重新排序。但是需要注意,在这些数据包传输到 gpu 节点之前,出口交换机逻辑上是需要把这些数据包按顺序排列完毕。
| 图8 — voq 矩阵
为避免链路带宽被超额占用,出口调度程序会在确保矩阵中交换机转发数据时,对这些数据进行计量,确保不会超出。因此它消除了以太网结构中 99% 因非连续传输(许多端口试图向一个输出端口发送流量)而造成的拥塞,并完全消除了 hol 阻塞。需要注意的是,在这种架构中,数据(包括请求和授权)仍使用以太网结构传输。(译者注:这段翻译比较拗口,大家可以参考原文,大概的意思就是voq会提前保证带宽的预留和占用,但是关于控制的信令信息,依然是以太网传输)。
还有一些架构(包括瞻博网络的 express 和 broadcom 的 jericho 系列)通过其专有的信元化矩阵(cellified fabric)支持 voq。在这种情况下,leaf交换机将数据包划分为固定大小的单元,并将它们平均发送到到所有可用的输出链路上。这比在数据包层面上进行数据负载均衡发送能能提高链路利用率,因为在大小数据包混合的情况下,很难保证所有链路都得到充分利用。
伴随信元转发,我们还避免了输出链路的另一个存储/转发延迟(输出以太网接口的延迟)。在信元矩阵中,spine交换机被可高效转发信元的定制交换机所取代。这些矩阵信元交换机在功耗和延迟方面都优于以太网交换机,因为它们没有支持 l2 交换的开销。因此,基于信元的矩阵不仅能提高链路利用率,还能减少 voq矩阵中的端到端延迟。(译者注:此处我个人的理解是,把整个交换矩阵理解成一个大cell转发的交换机,来来实现高速的转发,因为如果是传统ip架构,交换机之间转发数据还涉及到二层以太网的封装和解封装问题,而cell转发则简化了这个步骤,越看越像早期的atm了,lol)
| 图9 — leaf交换机和cell交换机组成的基于信元的矩阵
# voq 架构也有如下局限
· 每个leaf交换机都需要在入口侧为系统中的所有 voq 设置合理的缓冲区,以便在拥塞期间缓冲数据包。缓冲区大小与 gpu 数量乘以每个 gpu 的优先级队列数量成正比。更大规模 gpu 规模就意味着需要更多的入口缓冲(译者注:个人觉得也是对leaf交换机性能和成本的挑战)。
· 出口侧的输出队列缓冲区应留有足够的空间,以覆盖通过矩阵的往返延迟 (rtt),这样这些缓冲区就不会在请求-授予握手期间空闲。在使用 3 级结构的大型 gpu 集群中,由于光缆较长和交换机的增加,其rtt 可能会增加。如果输出队列缓冲区的大小不适合增加的 rtt,输出链路将无法达到 100% 的利用率,从而降低系统性能。(译者注:个人理解这意味着缓冲区空间的计算,不仅仅是数据包乘以缓冲延迟的计算,也包括数据包在链路上的延迟计算得到大小,这样才能保证数据在传输过程中100%传递,这个确实我以前没想过)。
· 尽管 voq 系统通过出口调度消除了 hol 阻塞,大大减少了尾部延迟,但由于入口leaf交换机在传输数据包之前必须进行请求-授予握手,因此数据包的最小延迟确实会增加一个额外的 rtt(译者注:为了不拥塞,需要协商,因为协商,带来新的rtt是必然,就看如何rtt有多大,如何tradeoff或优化)。
尽管存在这些瓶颈,但完全调度的 voq 结构在减少尾部延迟方面的表现要比典型的以太网流量好得多。如果能使链路利用率大于 90%,那么尽管gpu 扩展带来缓冲区的增加,因而产生额外成本的增加(价格的增加或者rtt的增加等),这个方案依然值得投资。
另外,供应商锁定可能是 voq矩阵的一个问题,因为每个供应商都有自己的专有协议,而且很难在同一矩阵中混搭多品牌交换机使用。
15
关于推理/微调工作负载的一个小说明
llm 中的推理是使用已完成训练的模型来生成对用户提示的响应过程,通常是通过 api 或网络服务。例如,当我们在 chatgpt 会话中输入一个问题时,推理过程会在云端托管的已训练好的 gpt-3.5 模型副本上运行,从而得到回复。与训练相比,推理所需的 gpu 资源要少得多。但是,考虑到训练好的 llm 模型中有数十亿个参数,推理仍然需要多个 gpu(以分散参数和计算)。例如,meta 的 llama 模型通常需要 16 个 a100 gpu 进行推理(而训练需要 2000 个)。
同理,利用特定领域的数据集对已经训练好的模型进行微调所需的资源也较少,通常不超过100+ h100 规模的 gpu。基于此,推理和微调都不需要同一矩阵上的大规模 gpu 集群。
虽然单个推理工作负载并非计算密集型的,但随着越来越多的人和组织开始使用 chatgpt,推理工作负载在不久的将来将呈指数级增长。这些工作负载可以分布在不同的 gpu 集群/服务器上,每个gpu 集群/服务器都承载着已经训练好的的模型副本。
学术界和工业界都在认真研究如何优化训练和推理。量化- quantization(在训练和/或推理过程中使用精度较低的浮点数或整数)和参数剪枝- parameter pruning(剪除对性能贡献不大的权重/层)是用于缩小模型规模的一些技术。
meta 的 llama 模型表明,当使用四倍于 gpt-3 的数据集进行训练时,比 gpt-3 小 3 倍的模型可以提供更好的性能。如果这一趋势在未来版本的 llm 模型中得以延续,我们可以预期训练出来的模型会逐渐变小,从而减轻推理工作量的压力。
16
总结/展望
开发和训练llm 需要一支由人工智能/机器学习研究人员、工程师、数据科学家组成的高度专业化的团队,还需要在云资源上投入巨资。缺乏广泛的 ml专业知识的企业不太可能独立应对此类挑战。相反,更多的企业会寻求利用自己的专有数据集对市面上训练有素的模型进行微调。云服务提供商可能会为企业提供这些服务。
因此,模型训练工作量预计主要来自学术机构、云服务提供商和人工智能研究实验室。
与人们的预期相反,未来几年的训练工作量预计不会减少或停滞不前。为了让模型产生准确、最新的结果,而不是产生 幻觉,必须更频繁地对模型进行训练。这将大大增加训练工作量。
以太网矩阵是构建用于训练的大型 gpu 集群的“不二之选”。目前市面上的所有高端以太网交换机(模块化/独立式)都能应对这种大型集群挑战。通过一些增强型功能,如通过数据包级的负载均衡,对 rocev2 数据包进行重新排序、网内聚合和支持直通模式(cut-through),这些交换机可以获得比 ib 矩阵更为出色的性能。但是,在这些大型以太网矩阵集群部署和广泛使用之前,ib fabric 仍将继续使用。用于分布式交换机的 voq 矩阵方案看起来很有前景,并为这一组合增添了另一种潜在的解决方案!
gpu/网络交换机的性能和规模每两年才翻一番。如果模型的规模继续随着每个新版本的推出而增加一倍或两倍,那么它们很快就会撞上硬件墙(译者注:硬件性能不够)!ai界必须大力投资研究,使 llm 更优化、更环保、更可持续。
总之,这是一个令人激动的研究和创新时代!
sharada yeluri是瞻博网络的高级工程总监,负责瞻博网络 ptx 系列路由器中使用的 express 系列芯片产品。她在 cpu 和网络领域拥有 12 项以上的专利。
小马智行与新石器达成战略合作,助力无人配送规模化落地
高德红外出席第四届红外技术及其应用大会并发表专题演讲
基于RTD传感器和IC温度传感器的温度测量方法
中国未来5-15年在能源电力领域的走向以及发展!
vb语言程序简单设计实例(5款vb语言设计程序分享)
训练大语言模型带来的硬件挑战
美国银行的大部分工作岗位将会被机器人取代
如何预防NVMe存储的四大问题
码垛机器人在农业生产方面的应用
Google编程风格指南(三)
美团第四代无人机正式发布 可在零下20度至50度的恶劣环境运行
2020年第四季度全球智能手机市场报告公布
瑞科接近开关KP2接线图
如何更改在PCB上移动元器件的模式
Power Integrations推出LYTSwitch-6系列安全隔离型LED驱动器IC的最新成员
“百度云手机”旗舰版正式发布,77元/月
A0级以上新能源汽车市占率60%,全球齿轮制造大厂的数字化实践
Interfacing 8051-based Microco
VR培训公司Talespin推出“虚拟人技术”,用以培训员工人际交往能力
新iPhone会有哪些值得关注亮点