乐趣区

关于人工智能:一文说透-AI-大模型背后的基础设施

作者:王锦

云计算背地的基础设施大家可能曾经耳熟能详,AI 大模型惊艳地进入公众视线之后,人工智能算法其背地的基础设施,也成了大家经常探讨的话题。那么到底是哪些基础设施,撑持起了模型的训练和模型的运行,咱们先从掂量基础设施的算力说起。

从区块链的算力说起

在比特币呈现之前,大家可能对算力都没什么特地的概念,只是在买电脑的时候隐约晓得,CPU 频率越高,CPU 每秒能够执行的指令就越多,电脑的性能也就越好。直到比特币的呈现,工作量证实计算(Proof of Work)间接与钱挂钩,算力这个概念才开始显式地呈现在各种工程以及软件中,大家也会用算力来掂量各种硬件。比特币中的计算次要用到的是哈希算法。掂量工作量证实计算的算力就是哈希率(hash rate),即每秒能计算多少个哈希值。

那么这个哈希计算的算力和 AI 大模型的算力有什么关系呢?且听我缓缓道来。我先用生存中常见的做饭让大家来了解一下这个哈希计算的过程:

制作一道牛肉炒饭,首先须要将牛肉和米饭别离解决,将牛肉切块后放入平底锅中煎炒,在这个过程中,增加一些佐料,例如盐、胡椒粉、酱油等等,来调整炒出的牛肉口感和滋味。最初将煮好的米饭退出锅中与牛肉翻炒在一起,失去一份美味的牛肉炒饭。

这个将各种食材和佐料混合到一起过程就是哈希计算的过程,它是一个单向不可逆的计算过程,牛肉炒饭没法复原成牛肉。而比特币和这个计算过程有什么关系呢?持续依照这个炒饭的例子来说,就是比特币全网每隔一段时间会公布一个工作,谁能把最近 10 分钟陈腐食材都交融起来(收集交易账本),最先炒出的炒饭有黯然销魂的滋味,就能取得一个比特币。那要怎么办?多炒几份,每份的料都略微有一点点不一样,而后做完之尝一下有没有黯然销魂的滋味,第一个炒出黯然销魂炒饭的人,便证实了本人工作量,也就取得了对应的处分。

从这个例子中,咱们能够发现,在单位工夫内炒的饭的数量越多,炒出黯然销魂炒饭的可能性也就越高。

这个时候就有人就会想方法,我多搞几个灶台同时炒,是不是就能快一些?是的,这个就是 CPU 和 GPU 算力的差别。CPU 就像家里常见的燃气灶,灶台数量不多(核数少),然而火很旺,各种简单的菜都能炒,然而单位工夫内只能炒几次饭。而 GPU 就像一个小灶子,火很小,但刚好能炒出炒饭,因为灶台数量十分多(核数多),所以单位工夫内能炒的饭的数量十分多。GPU 的这个核数多的个性记一下,咱们前面马上还提到。

同时,咱们也能够从这个炒饭的角度,来了解一下为什么区块链中的工作量证实计算(Proof of Work)是十分节约的。因为最终只有那份黯然销魂滋味的饭是有用的,其余的饭在尝尝没有黯然销魂味之后全副都要被倒掉。

GPU 的算力根底

AI 大模型的深度学习模型次要运行在神经网络之上,而神经网络网络的计算过程能够被视为大量矩阵计算的组合。矩阵计算有别于一般的逻辑计算,多核的并行计算可能极大地晋升计算速度,是的,GPU 多核在这里就派上用途了:10×10 的矩阵运算就像 100 个灶台都摆着锅,同时能够把 100 种食材放到对应的 100 口锅中去烹饪。这些计算与工作量证实计算的最大差别就是这 100 个灶台烧的菜都是不一样的,而且烧出来的菜都是有用的,不像区块链中的工作量证实场景下炒进去的饭 99.999% 都被倒掉。

不过 GPU 可不是一开始就这么牛的,在 NVIDIA 的 CUDA 呈现以前,能够说 GPU 绝对于 CPU 毫无算力劣势。NVIDIA 的 CUDA(Compute Unified Device Architecture)是在 2007 年 6 月推出,是一种基于 NVIDIA GPU 的并行计算平台和编程模型。CUDA 是为了反对 NVIDIA 的高性能计算 GPU 而开发的,能够让开发者应用 C/C++、Python 等编程语言编写并行计算程序,从而充分利用 GPU 的并行计算能力,也就是上文提到的 GPU 的多核能力。

在 2017 年,NVIDIA 在为了进一步晋升深度学习模型的运算效率,在 Volta 架构上提供了一种叫 Tensor Cores 的新型计算单元,具备专门的电路设计,用于执行深度学习中的矩阵乘法和卷积等张量运算,以进步计算效率。因而,Tensor Cores 能够被视为专门针对深度学习计算的硬件加速器。

其减速成果可视演示如下动图所示,十分惊艳:

由此来看 GPU 作为算力根底,撑持起了通用 AI 大模型的训练。咱们来拆解一下 GPU 的组成,看看哪些对算力起了至关重要的影响。

  • CUDA Cores:通用计算单元,次要用于执行规范的浮点运算,例如加法、乘法和向量操作。它们被设计用于高并发的数据并行计算,可能同时执行大量的浮点运算,CUDA 外围数量决定了 GPU 并行处理的能力。
  • Tensor Cores:Tensor Core 是专为执行张量或矩阵运算而设计的专用执行单元,应用低精度浮点运算(FP16)执行矩阵乘法和累加操作,可能极大地提高深度学习模型的训练速度和效率。该计算单元在 Volta 架构上推出,专为深度学习而设计的,在最近推出的 Turing 和 Ampere 架构上一直演进。
  • 显存:临时贮存 GPU 要解决的数据和处理完毕的数据。显存的容量越大,GPU 就可能解决更大规模的数据和程序,从而进步算力。
  • 显存带宽:显存带宽是指芯片与显存之间的数据传输速率,它以字节 / 秒为单位。显存带宽是决定显卡性能和速度最重要的因素之一。
  • NVLink:NVIDIA 推出的一种高速连贯技术,用于连贯多块 GPU 之间的数据传输。NVLink 的传输速度比 PCIe 更快,PCIe 4.0 的带宽最高能够达到 16GB/s,而 NVLink 2.0 的带宽则高达 300GB/s,这意味着 NVLink 的传输速度是 PCIe 的数十倍。NVLink 可能让 GPU 间接拜访其余 GPU 上的显存,可能大幅度提高多 GPU 零碎的性能和效率。

常见的含 NVIDIA 显卡的 GPU 服务器的构造示意图(图片起源:GPU 内存 (显存) 的了解与根本应用)

通过这张图能够看到,随着 GPU 并行计算的一直倒退,PCIe 总线连贯形式在高性能计算畛域曾经显得有些过期。在传统的 CPU 体系结构下,各个计算单元通过 PCIe 总线与主板上的 CPU、内存、硬盘等设施进行通信,因为 PCIe 总线带宽无限,这种形式往往无奈满足大规模并行计算的需要。于是 NVIDIA 在物理层面另开了一条叫 NVLink 的高速互联通道,将多个 GPU 间接连接起来,造成一个高性能计算集群。从 NVLink 也能够看出,通信替换带宽的晋升是基础设施中晋升算力的关键点,这个咱们前面还会讲到。

算力基础设施

拆解完 GPU 的算力根底组成之后,咱们再来看看算力基础设施,几张显卡就能形成算力基础设施吗?不是的,基础设施是个简单的系统工程,比方要将大自然的水变成拧开水龙头就能进去的自来水,就要落地一套蕴含水源、输水、净水、配水的供水工程。

那么,GPU 也是同样的,从单张卡形成计算集群提供微小算力,也是一个宏大的软硬件联合的工程。其中通用计算集群局部因为篇幅的起因在本文就不过多开展,咱们次要讲讲 GPU 相干的局部:和所有的基础设施一样,算力基础设施最要害也是算力调配问题,以后 GPU 单卡的算力越来越强,也越来越贵,如果粗犷地依照单卡的粒度去调配算力,将会导致较大的资源节约,让多个训练任务跑在一张显卡上是十分有必要的。

vGPU 是 NVIDIA 推出的一个反对在 VM 利用上的虚构 GPU 软件,它反对在一块物理 GPU 创立许多小型的虚构 GPU,并让这些虚构 GPU 提供给不同的用户应用,其外部原理如下图所示:

对于物理硬件的虚拟化,次要分为两个:存储的虚拟化、运算的虚拟化

  • 存储:通过创立专用的 buf(dedicated framebuffer),当时占据形式创立虚构 GPU 的存储空间
  • 运算:通过工夫片管理器(scheduling)来管制工作对 GPU 物理设施引擎的应用工夫

基于工夫片(time-sliced)的 vGPU 实质下面还是让工作专用物理设施(引擎),通过扭转虚构 GPU 的工夫片应用多少,来管制工作对整个物理设施上的资源的使用量。这么形式尽管可能满足一些利用场景,然而因为物理卡上的资源是专用的,所有工作要轮着用,使得整卡切分后在算力 / 带宽 / 工作切换下面难做到好的 QoS。

国内 GPU 虚拟化的形式基本上是参考 vGPU 的形式进行。GPU 的虚拟化根本围绕:数据是否平安、隔离是否充沛、QoS 是否可能保障这三个问题来进行设计。不可否认,这些虚拟化都获得了很好的成果,而且对集群资源利用率的晋升下面帮忙很大。然而毕竟不能批改束缚底层硬件,在平安和资源分配均衡上始终都存在局限。还有就是,软件切分隔离会带来物理卡的资源节约,切分越多节约越重大。

不过 NVIDIA 自 2020 年推出的 Ampere 架构的芯片就很好的解决了上述的问题。以大家最宽泛提到的 A100 显卡为例:Ampere 架构通过硬件上的设计使得 GPU 可能创立子 GPU(这个虚拟化进去 GPU 也常被称为是 GPU Instance/GI)。通过对系统通道、管制总线、算力单元(TPC)、全局显存、L2 cache、数据总线)这些 GPU 物理资源的切分后的重新组合,每个 GI 可能做到数据保护、故障隔离独立、服务(Qos)稳固。

  • GI:创立 GI 能够被认为是将一个大 GPU 拆分为多个小 GPU,每个 GI 都有专用的计算和内存资源。每个 GI 的行为就像一个更小、性能齐全独立的 GPU,它包含预约义数量的 GPC(Graphics Processing Cluster)、SMs、二级缓存片、内存控制器和帧缓冲内存。
  • CI:计算实例 (Compute Instance, CI) 是能够在 GI 中配置不同级别的计算能力的分组,封装了能够在 GI 中执行工作的所有计算资源(GPC、复制引擎、NVDEC 单元的数量等),每个 GI 中的 CI 数量可变。但联合咱们现有的调度粒度,咱们偏向于在一个 GI 中只创立一个 CI,而后在 CI 外部再通过现有形式实现并发。

上面左图将 A100 作为整体应用的示意图,右图为开启 MIG 的 A100 示意图:

因为显存和 SM 的切分的硬件限度,GI 的显存 / 算力只能是无限的几种组合,GI 的切分形式可枚举为以下 18 种。

以 A100(40GB)为例,则表中的 7 代表 7g.40gb,4 代表 4g.20gb,3 代表 3g.20gb,2 代表 2g.10gb,1 代表 1g.5gb,依据 MIG Device Name 的规定,1g 代表 GI 包含 1 个计算切片,5gb 代表 GI 的内存大小;而 A100(80GB)只须要相应地扭转内存大小。

通过 OpenAI 近期披露的文章《Scaling Kubernetes to 7,500 nodes》和 2018 年披露的文章《Scaling Kubernetes to 2,500 nodes》,咱们能够窥探到 OpenAI 的训练集群也是一个 Kubernetes 集群,下面 GPU 虚拟化最终落地的编排算力工作计划就是 k8s,无关 k8s 集群以及云原生因为篇幅无限在本文就不做过多开展了,咱们针对 OpenAI 的文章略微讲几个点:

  1. 模型生产流程:文章提到这个集群不太依赖负载平衡,因而这 7500 台机器的 k8s 集群是一个训练集群,并不是最终提供服务的集群,无关模型的生产流程最初一节会开展说。
  2. k8s API Server:集群规模变大之后,和大家最常遇到的问题一样,API Server 最先扛不住,把存储从网络 SSD 盘切换到本地 SSD 盘解决问题。
  3. 大模型镜像:镜像大模型的镜像都特地大,拉镜像网络扛不住,应用镜像预热计划升高了一部分带宽,剩下的问题放在未解决中还心愿持续优化。举荐能够试试阿里开源的分布式镜像散发计划 Dragonfly。
  4. 容器网络:2018 年的时候 OpenAI 还在思考怎么把 Flannel 网络 (~2Gbit/s) 切到 hostNetwork 网络(10-15Gbit/s),最近披露的文章中提到曾经切到 Azure 的 VMSSes CNI 计划了。依据材料,Azure Kubernetes Service(AKS)中的单个 Node 应用 CNI 的话,带宽能到 40 Gbit/s。

高性能计算

通过循序渐进的形容,咱们从原理到构造,逐渐理解了算力基础设施的组成。同时,因为 AI 大模型的暴发,整体的训练数据集也越来越大,训练周期越来越长,简直所有的训练都是多机多卡。那么这个时候,前文所提到通信带宽就成为了限度算力晋升的瓶颈。

为了解决这个问题的技术,在业余畛域咱们将其称之为:High-Performance Computing 高性能计算,旨在进步运算单元间的通信效率。因为 OpenAI 并未披露这些细节,咱们以阿里云的高性能网络 EFlops 实际开展来讲讲。

EFlops 网络的性能优化分为两层:服务器外部的通信优化和服务器间的网络通信优化。

服务器外部的通信优化,次要是解决 PCIe 各场景下的通信拥塞问题进而晋升通信效率。

在服务器间的通信优化方面,EFlops 采纳了 RDMA(Remote Direct Memory Access)网络作为通信网络,同时自研通信库 ACCL(Alibaba Collective Communication Library)提供通用的分布式多机多卡的汇合通信性能。ACCL 实现了翻新的无拥塞算法和高速网络传输,性能靠近甚至超过了业界当先的其它通信库。同时,ACCL 也兼容 Nvidia 的 NCCL 通信库,以进步其普适性。

与其它汇合通信库相似,ACCL 反对各种罕用的深度学习框架和平台。在底层数据传输方面,因为 RDMA 具备低时延和高吞吐率的个性,节点间次要通过 RDMA / GPU Direct (GDR)进行数据传输。而节点外部也反对 PCIe/NVLink 等各种互联形式。

AI 全栈平台 PAI

作为一个基础设施,咱们根本都讲清楚了,但事实上,咱们的算力基础设施,不能简略地类比那些水电煤的基础设施的,算力是个十分形象的货色,这种资源在自然界是不存在的。

如果非要类比水厂的话,能够说输出的是海量的数据和数据科学家们的思考和想法,而后两头过程是基于科学家们精心设计的工程,利用大量的显卡的算力进行大规模的模型训练,最初的输入是一个能够提供问答服务的模型接口。所以模型训练对于整个人工智能算法生产过程而言,只是一个最重要的中间环节,残缺的模型生产过程包含了模型开发、模型训练和模型部署。在网上大家所应用的问答服务,是最初一个环节,模型部署的产物。

所以如果要生产出一个十分弱小的 AI 模型,这一套残缺的生产过程是必不可少的,于是阿里云提供了 AI 全栈平台 PAI。

阿里云机器学习产品 PAI(Platform of Artificial Intelligence)面向企业客户及开发者提供易上手、高性价比、高性能、不便扩大、具备多种行业场景插件的机器学习 / 深度学习工程化平台。内置 140+ 种优化算法,提供包含数据标注(PAI-iTAG)、模型构建(PAI-Designer、PAI-DSW)、模型训练(PAI-DLC)、编译优化、推理部署(PAI-EAS)等全流程 AI 工程化能力。

在模型开发阶段,可通过 PAI-Designer 和 PAI-DSW 两款开发工具来实现建模。

  • PAI-Designer 免写代码开发工具,提供经典的机器学习算法组件,如回归、分类、聚类、文本剖析等。
  • PAI-DSW 机器学习交互式编程开发工具,实用于不同程度的开发者。

在模型训练阶段,PAI-DLC 提供一站式的云原生深度学习训练平台。

  • PAI-DLC 反对多种算法框架、超大规模分布式深度学习工作运行和自定义算法框架,具备灵便、稳固、易用和高性能等特点。

在模型部署阶段,PAI-EAS 提供在线预测服务,PAI-Blade 提供推理优化服务。

  • PAI-EAS 反对用户将通过机器学习模型(PMML,PAI-OfflineModel,Tensorflow,Caffe 等)一键部署成服务,同时也反对用户依据 EAS 制订的接口标准开发自定义的在线服务。
  • PAI-Blade Blade 的所有优化技术均面向通用性设计,能够利用于不同的业务场景,通过模型零碎联结优化,使模型达到最优推理性能。

在整个 PAI 平台中,咱们能够将架构分成三层:

  • 最上层即咱们最近常提的 Model As A Service,为终端用户提供间接可用的模型服务。
  • Paas 层即平台层,以算法模型生命周期构建的各个产品平台,从模型开发、模型训练到最终的模型部署。
  • Iaas 层基础设施层即本文花最大篇幅讲的货色,在 PAI 中次要是灵骏智算和弹性 ECS 集群,提供算力、网络、存储等。

最初,随着 AI 大模型逐渐渗透到各行各业,很多畛域都在产生着翻天覆地的变动。在 AI 大模型的算力加持下,很多行业正在产生质的变动,一直实现效率晋升和数智降级。尽管国内的算力基础设施与国内最前沿存在肯定差距,然而这种差距并不大,咱们曾经在多点并进,逐渐突破性能瓶颈,一直推动着 AI 算力的降级。在这个过程中,欢送大家构想出各种数智需要场景,对咱们平台的算力撑持提出更高的要求,咱们也十分乐于去应答这些挑战,让咱们一起迎接人工智能时代的到来。

参考:

[1]GPU 硬件的倒退与个性剖析 —Tesla 系列汇总

https://zhuanlan.zhihu.com/p/515584277

[2]GPU 内存 (显存) 的了解与根本应用

https://zhuanlan.zhihu.com/p/462191421

[3]Eflops 硬件集群简介_产品简介_机器学习_麻利版通用版本

https://help.aliyun.com/apsara/agile/v_3_6_0_20210705/learn/ase-product-introduction/hardware-cluster.html

[4]EFLOPS: Algorithm and System Co-Design for a High Performance Distributed Training Platform

https://ieeexplore.ieee.org/document/9065603

[5]ACCL: Architecting Highly Scalable Distributed Training Systems With Highly Efficient Collective Communication Library

https://ieeexplore.ieee.org/document/9462480

[6]Scaling Kubernetes to 7,500 nodes

https://openai.com/research/scaling-kubernetes-to-7500-nodes

[7]Scaling Kubernetes to 2,500 nodes

https://openai.com/research/scaling-kubernetes-to-2500-nodes

[8]Visualized Modeling in Machine Learning Designer – Machine Learning Platform for AI – Alibaba Cloud Documentation Center

https://www.alibabacloud.com/help/en/machine-learning-platform-for-ai/latest/visualized-modeling-in-machine-learning-studio

[9]DSW Notebook Service – Machine Learning Platform for AI – Alibaba Cloud Documentation Center

https://www.alibabacloud.com/help/en/machine-learning-platform-for-ai/latest/dsw-notebook-service

[10]EAS Model Serving – Machine Learning Platform for AI – Alibaba Cloud Documentation Center

https://www.alibabacloud.com/help/en/machine-learning-platform-for-ai/latest/eas-model-serving

[11]Inference Acceleration (Blade) – Machine Learning Platform for AI – Alibaba Cloud Documentation Center

https://www.alibabacloud.com/help/en/machine-learning-platform-for-ai/latest/pai-blade-and-inference-optimization-agile-edition

退出移动版