5

从“万恶之源”到“百模大战”

 10 months ago
source link: http://enterprise.pconline.com.cn/1636/16368064.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

从“万恶之源”到“百模大战”

16849977945776010.jpg Asgardia 责任编辑:wangkeyue 发布于:2023-07-17 10:42 PConline原创

想当年小美带着《极乐净土》一经推出便血洗B站,如今仍是众人戒不掉的“再听亿遍”,已经被众粉丝封神为二次元音乐界的“万恶之源”。以Transformer为基础的大模型也在企业级“B站”github开启了血洗之风,引来众供应商粉丝投身 “百模大战”,十足企业级科技界的“万恶之源”。

大模型如何带来AI基础设施新难题?

深度学习是机器学习方法的一个子集,它使用人工深度神经网络从大型数据集中自动发现特征检测或分类所需的表示,通过采用多层处理来逐步提取更高级别的特征。“深度”指的是使用大量的层,这导致更准确的模型来捕获复杂的模式和概念。DNN模拟人类大脑的功能,其中神经元相互连接以接收信息、处理信息并将其传递给其他神经元。与大脑神经元类似,感知器(人工神经元)的简单模型从一组输入中接收信息,并对输入(X)的加权(W)和应用非线性函数F(激活函数)。深度神经网络和Transformer(即通常人们所说的大模型)是深度学习两种主要拓扑结构。

深度神经网络主要使用三种类型的网络架构:多层感知器(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。MLP是由一系列全连接层组成的前馈神经网络,其中每一层都是前一层所有输出的加权和的非线性函数集。在CNN中,卷积层通过执行卷积操作从输入中提取简单特征。每一层都是前一层输出的不同子集的加权和的非线性函数集,每个子集共享相同的权重。每个RNN层都是前一层输出和前一状态的加权和的非线性函数的集合,在处理前一层样本时计算并存储在RNN的内部存储器中。每种类型的深度神经网络都对特定的认知应用子集特别有效。

对深度神经网络加速器设计的一个常见问题是访问DRAM的延迟成本,特别是考虑到目标应用程序需要处理的大量数据。不过,在大模型出现之前,可以利用不同的数据重用和静态策略来减少访问次数。例如,在权值固定的数据流中,卷积权值是固定的,存储在处理单元的本地内存中,并在从外部DRAM逐步上传的输入激活中重用。相反,在输出固定数据流中,处理单元的部分输出存储在本地并逐步重用,直到计算完成。然后,将最终结果移动到外部DRAM。

大模型的出现改变了传统对深度神经网络加速器内存访问设计机制。大模型最初是为NLP提出的,旨在通过注意层识别数据之间的远距离依赖关系,其中用于线性转换输入数据的权重是基于输入数据本身动态计算的,建立的权值(Q、K、V)都是随机生成的。由于加权和的计算需要在内存层次结构的不同级别和处理单元之间进行大量的数据移动,这会对计算体系结构的可用能量、内存带宽和内存存储构成挑战。由于全局全对注意机制,大模型计算的时间和空间复杂度会随节点数呈二次增长,计算图随层数呈指数增长。因此,为具有数百万个节点数的大型图训练深度大模型可能是极其资源密集型的。大模型速度可以更快,因为它们可以并行工作,为此更利于用GPU进行计算,从而可以更快地计算具有大输入的任务。

为此,在内存带宽、数据集大小和长时间运行任务的优化方面的预期,大模型加速器的设计更多集中于GPU的设计,并以此影响了传统HPC GPU计算架构向AI大模型的不断增强。

大模型如何影响基础设施发展?

在人工智能加速发展的背景下,DNN获得了更多令人印象深刻成果,随后在这个市场领域进行了大量投资,促使硬件制造商不断面向AI来改变GPU架构,以便更加优化地计算AI负载,例如实现对低精度计算的支持。这导致了GPU架构在HPC和神经网络算法实现事实上的协同设计,这大大提高了人工智能应用程序的性能、准确性和能效。

HPC资深供应商Nvidia从Volta架构开始表现了对AI的浓厚兴趣,并在Tesla V100上体现了其融合HPC和AI的超强能力。Tesla V100的主要计算功能包括针对深度学习优化全新的流多处理器(SM)架构,集成了专为深度学习设计的张量内核。此时起,主板开始采用HBM2内存系统,峰值内存带宽为900GB /s,比前代Pascal GP100提供1.5倍的内存带宽。三年后,基于Ampere架构的A100问世,开始支持使用张量核心或单精度FP32操作,峰值性能增加到19.5 TFlops。H100 SXM5 GPU通过支持80GB(五层)快速HBM3内存,提供超过3TB/秒的内存带宽,比两年前推出的A100内存带宽有效地增加了两倍。Nvidia还开发了TAO工具包,可加速语音和视觉AI应用程序AI模型的创建。Nvidia基于他的GPU模块应用推出了DGX系列AI服务器。最新的DGX H100服务器于2022年发布,是第四代DGX服务器,包括8张Hopper H100卡,提供总计16 PFlops的FP16张量AI计算,并组装总计640 GB的HBM3内存。

前不久,Intel面向中国市场发布了Habana Gaudi2深度学习加速器,此举被广泛认为是对Nvidia GPU市场一路走高的有力反击。新的Gaudi2采用24个可编程Tensor处理器核心(TPCs),21个100Gbps(RoCEv2)以太网接口,96GB HBM2E内存容量,48MB片上SRAM,集成多媒体处理引擎,有2.4TB/秒的总内存带。在Stable Diffusion训练上,Gaudi2展示了从1张卡至64张卡近线性99%的扩展性。此外,MLCommons刚刚公布的MLPerf训练3.0结果,亦验证了Gaudi2处理器在1750亿参数的GPT-3模型上,从256个加速器到384个加速器可实现令人印象深刻的接近线性的95%扩展效果。

深度学习模型需要依赖高水平的并行性和大量内存资源来解决复杂性,为此企业优化硬件平台的选择远不止GPU,还有FPGA、ASIC、RISC-v等诸多可选实现。即使是CPU,Intel也表现了自己对AI优化上的设计信心。

GPU凭借其高吞吐量和并行性,在性能方面非常高效,但是,它们消耗大量功率并且比同类产品贵得多。与GPU的可重构架构相比,CPU可能具有更高的缓存大小和更高的片上带宽。对此,Intel提炼了计算密集型深度神经网络操作(如矩阵乘法)的专家调优原语的关键成分,开发了深度学习加速库oneDNN,并在去年开源了oneDNN Graph API和神经网络计算图编译模块 oneDNN Graph Compiler。 oneDNN通过充分利用计算功能单元,以及寄存器和L1缓存提供的高带宽,对微内核进行了微调,以最大限度地提高计算效率。它抽象了ISA的差异,所以oneDNN图编译器不需要处理不同CPU提供的不同向量或矩阵指令。oneDNN库的实现在操作符级别上使用了内部的并行化方法。在一些基于oneDNN作为后端的推理使用中,oneDNN也表现出了不错的性能增益。

大模型能否直接使用超算系统?

随着大模型需要更多GPU支撑起的异构算力,这很容易与此前超算市场的需求形成混淆。例如,同样是授予单个应用程序共享异构系统节点,同样是需要更多的GPU并行性来提升算力,那超算系统是不是可以直接用做大模型系统呢?又或是对大模型系统的调优会直接有利于超算呢?例如,前不久,Intel宣布了美国能源部阿拉贡国家实验室已经完成基于Intel CPU及GPU的新一代超算“Aurora”的安装工作,其使用Intel Xeon Max系列 CPU(至强Max 9480) 和六个Intel Max 系列GPU组成,以追求成为全球第一台理论峰值性能超过200亿亿次/秒FP64浮点计算的超级计算机。这个Aurora能直接跑大模型么?

对此,笔者认为,因计算目的、底层算法需求实现等诸多因素的不同,二者在系统调优方向及生态发展上有着各自显著差异的,但也不失一些共性需求。

例如,当下超算系统面临的一个显著挑战,是跨不同硬件和软件堆栈的应用程序代码的可移植性。传统上,不同的供应商支持不同的编程模型,不同体系结构的编程技术差异很大,这导致开发和支持多个代码版本的复杂必要性,需要每个版本都针对特定的硬件特性进行优化。如今,超算系统供应商们正通过将应用程序与函数库使用的编程模型做更有效地抽象封装分离,来实现系统架构的灵活性和可扩展性。例如,NVIDIA继续开发cuSPARSE API,弃用和重构稀疏矩阵计算的许多常见使用模式;AMD正在修订其对HIP和ROCm库的支持,一定程度上在模仿NVIDIA的CUDA标准。一方面明修栈道,Intel用高端Max 系列的CPU和GPU去部署Aurora;一方面暗度陈仓, Intel加紧为其新的GPU开发可以方便移植的DPC++数据并行编程模型。DPC++利用C++ lambdas并为程序员提供了parallel_for等结构,以方便地表达数据并行性,由编译器映射到特定于GPU的实现中。

大模型也需要并行技术在多个GPU上有效地训练。随着模型规模的不断扩大,大模型系统优化的构建和设计主要挑战更多表现为,解决对大量的参数带来的越来越高的计算和内存成本。最初的Transformer只有数百万个模型参数,而最新的数据显示,GPT-4参数已经有着1.8万亿了。现有的方法着重在于如何找到跨设备内存和计算工作负载之间的最优的平衡策略。诸如,在内存消耗、通信开销和执行效率方面,尽可能地减少数据移动、最大限度地节省GPU上的内存、减少CPU的计算时间等等。通过找寻将计算和内存效率与易用性更好的结合的方式,推动大模型训练进一步走进中小企业,找到更具性价比的方式,赢得更多市场客户的青睐。

不过,超算系统与大模型系统的发展也有某种共性需求。例如,上文提到的Aurora超算,CPU核心数超过110万个,有超过 60000 个 GPU。超算系统在百亿亿级系统节点的追求上,CPU内核会越发多于GPU内核,因此两者之间在指令管理和数据流方面会暴露新的如何协调控制的问题。而对这一问题的关注解决,也将有利于超算与大模型都需要的提高GPU和CPU内核吞吐量的优化。

大模型如何飞入寻常百姓家?

以上梳理其实都可以算是神经网络在数据中心服务器级别的实现,可以依靠着强大的CPU+GPU异构系统,掌控海量数据参数的处理能力,并不断实现新的吞吐量突破。那这是否意味着需要低功耗设备的边缘场景里就没有部署神经网络的能力呢?

当然不会是这样的。例如,在刚刚过去的2023年世界人工智能大会上,高通技术公司产品管理高级副总裁兼AI负责人Ziad Asghar在接受澎湃新闻的采访时表示,高通将能够在今年实现支持参数达100亿的生成式AI模型在手机上运行。

早在前两年,高通就展示了自己用张量处理单元来部署AI的探索。高通提出了一种AI核心,4路VLIW架构,包括VTCM内存、矢量/张量单元,作用于高性能推理。该核心集成到了AI 100 SoC中,采用7纳米技术,16个AI核心,功率可达 149 TOPS,功率效率为12.37 TOPS/W。

为了可以将神经网络计算移动到边缘,除了不断发展高效的硬件设计,近几年神经网络的一些压缩技术的发展也值得关注。例如,量化是神经网络中一种最为重要的压缩技术,允许将神经网络的权重、激活从浮点计算转向低精度的定点计算。

量化问题转换为数学表示可以表述为:一组连续的实值数实值(FP浮点型)输入应该以何种方式分布在一组固定的离散数字(INT整数型)上,以最小化所需的位数,并最大化随之而来的计算的准确性。

在数据中心级的计算中,神经网络依靠单精度(FP32)和半精度(FP16)的混合精度训练使AI加速器的吞吐量可以有着数量级的提高。通常在混合精度训练中,权重、激活、梯度使用FP16浮点值,用于优化器更新/维护的参数副本使用FP32浮点值。以FP32格式为例,其包括1个+/-的符号位,其后依次为8个指数位及23个尾数位,共32位数字。具有K个尾数位的浮点格式的乘法器电路,是一个(K+1)×(K+1)全加器阵列。这需要将两个输入数字的尾数部分相乘,从而构成了乘法器中的主要面积和功率成本。相应的,FP32、FP16格式分别需要576个、121个全加器。某种程度上,乘法器的实体尺寸与尾数长度的二次方成正比。

量化问题就是将这些参数从浮点值表示转换为用INT4位或更少表示的低精度固定整数值,从而可以影响网络的内存占用、延迟、能量消耗、硬件复杂性和计算复杂性的减少。理论上,量化可以使内存和延迟的开销减少到1/16。实践中,ResNet50的INT4推理在Nvidia Tesla T4和RTX上相比于其INT8可以带来额外50-60%的加速,这更加强调了神经网络使用低比特精度来实现最大化效率的重要性。

当训练的参数量可以不断按照指数级增长,但内存和计算资源越发受到严重限制时,量化问题面对长期存在边缘设备的神经网络部署需求就显得尤为重要。

之所以可以对神经网络进行有量化操作空间,原因在于大多数当前的神经网络模型容易过度参数化,因此有足够的机会在不影响计算准确性的情况下降低比特精度。而业界的实践表明,神经网络对激进量化和极端离散化也能表现出不错的鲁棒性,即在量化模型与原始非量化模型之间具有较高的误差/距离的同时,仍然可以获得非常好的泛化性能。算法实现上,Softmax和Layer Normalization模块将纯整数量化扩展到了Transformer架构,也发展出了批归一化的残差网络的纯整数计算方法。

低精度逻辑在延迟、功耗和面积效率方面的多重优势也促进了硬件设计面向AI的进一步发展。许多硬件处理器,都开始支持对低精度算法的快速处理,这可以提高推理吞吐量和延迟。ARM由于此前一些内核不包括专用浮点单元,若是作用于AI部署就需要先对对模型进行量化,为此也开发了相关支持的函数库,如CMSIS-NN,用于ARM Cortex-M系列的芯片,支持低性能芯片/架构的神经网络部署。量化也促进了非边缘处理器带来显着改进。例如前文中提到的高通用于AI 100 SoC的张量处理单元就是专门为高效低精度矩阵乘法设计的执行单元,类似的还有Tesla T4就是得益于NVIDIA Turing架构对INT4的支持,也包括包括NVIDIA V100和Titan RTX。

笔者之所以敢肯定高通手机也采用了量化技术,就在于Ziad Asghar在采访的最后透露高通手机端现在能够支持INT4计算了。进一步,笔者查询发现他在此前分享中提到,到在量化方面,高通将FP32模型量化压缩到INT4模型后实现了64倍内存和计算能效提升。

不过,由于参数精度下降而引起的计算准确性问题也不容忽视。例如,业界实践在2-bit经典均匀量化的ResNet-50在ImageNet数据集上达到top-1准确率是67.1%,与实值ResNet-50相比下降了9.9%。这种性能差距主要是由于量化误差引起的,量化会限制实值权重和激活的数值分布空间,让统一量化器无法适应。为此,如今的神经网络架构量化技术,都会配合搜索和编译等技术共同开展。由于神经网络是多层网络架构,通过搜索可以找到哪些层适合量化,从而在提高数值的精确性带来计算资源增加,与推进低精度量化带来带宽资源节省之间找到新的平衡。

大模型“做事“新蓝海在哪儿?

当下,大模型方案更多聚焦于NLP、CV、多模态、音频信号处理领域的解决,从而在自然语言推理与生成、图像分析分类与分割等诸多场景表现出了惊人的能力,诸如编辑短视频脚本、撰写直播话术、开发各种应用、进行AI辅助绘画,等着在客服、虚拟人、翻译、营销、游戏、社交、教育、医疗等多个领域的百业待兴。不过,从这些大模型能力的解决场景来看,多是从作用于个人生活或工作需求出发的。对此,当下大模型方案依旧缺乏对企业级场景理解的更多成功商业成果展示。如果把前者比喻为“作诗”,那么对企业级场景理解则是大模型要不断摸索的“做事”的未来发展蓝海。

何谓企业级场景理解呢?例如,某服务器厂商宣布了自己在液冷方案上的一项创新,可以通过传感器的部署监测服务器部件的制冷情况,并通过云端预训练模型做出动态调整。笔者不想关心其真能否秒级调整,但是觉得其采用云端模型的计算,这会是一个非常值得关注的技术解决方案看点。液冷方案中采用AI节能的效果早就被云计算巨头们运用成熟,例如谷歌曾宣布其通过DeepMind的人工智能的解决方案将数据中心的冷却能量降低了40%,PUE降低了15%。

这种以传感器为基础的建立的物联网,以及依靠云计算来支持和管理物联网设备的场景,未来将会在企业用户中更为普及,发挥更为重要的作用。而云环境下的资源分配能力、数据流和控制流的管理调度能力等会严重影响物联网+云计算场景的实施效果。对此,有着多头关注和捕获长序列依赖关系特性的大模型,应是非常适合于优化云环境中的资源分配和提高整体性能。通过利用不同的大模型方法,云可以自主学习并适应其行为,从而带来更多的稳定性和安全性。相信在云计算任务方面,大模型也有施展空间,如任务调度和内存分配。在5G和低功耗AI芯片加持下的移动边缘计算,也可探索通过利用大模型,加快响应和处理用户请求,从而减少网络响应时间并加快数据传输。

总的来看,大模型为云环境中的智能资源管理提供了机会,而这也是大模型需要探索“做事”的一片新蓝海。通过将大模型善于捕获远程依赖关系和处理复杂模式的能力,应用于云计算场景工作负载的理解,来预测、分配和平衡等任务与资源需求,可以有着优化资源利用并提高性能的广阔前景。

除此之外,在大模型在工业应用领域的探索或早于云计算。诸如在能源、交通、气象、工业过程控制等领域的数字化转型中,一些预测判断任务可以表现为基于多个相关时间序列在未来时间点求未来值的预测能力。例如,利用传感器网络监测电力消耗来部署智能电网管理。由于大模型其捕获长序列依赖关系的强大能力,使其在依靠大量时间序列数据来进行长期预测的场景广受研究者欢迎。但大模型自身的架构特点也带来了一些处理瓶颈。为了提高更长序列处理的效率,采用的稀疏矩阵自关注机制,会导致丰富时间信息数据的丢失。此前一些研究者发现可以通过建立新型分解架构来实现渐进分解能力,划分为多个子序列的自关注,通过更为颗粒化的相关性发现来提高预测能力,同时优化内存访问机制来降低GPU内存需求。如今,国内已经有供应商团队在基于大模型的时间序列预测任务上取得了更为创新的研究突破,甚至将研究结果发上了《Nature》。(赞!)

大模型对存储的挑战可能还没真正开始

大模型AI到来正在改变一切,数据的利用方式是近似计算/模糊计算,数据的精确输出不要求数据的精确输入。例如,我们见到FaceBook推出的的Segment Anyting(SA)在理解图像语义的时候,输入如果是“工装“是可以直接找到”衬衫“的图像;又或是我们在Midjourney上看到那种在平面图像中可以让处于背身的人物直接通过拖拽实时地显出人物正脸。这是否意味着,企业的数据治理需求正在迎来新的改变?而真正的AI存储还未出现?

分布式存储将集中式存储推向传统,如今大模型AI到来正有机会将此前的存储都推为传统。无论是分布式存储还是集中式存储,都有赖于数据数据输出的精确计算。数据从CPU经过数据中心网络到最终盘阵的全堆栈路径里,在用各种技法确保数据的安全,如高可靠、高可用、高效率。传统存储方式里,精确计算下,数据的准确输入决定了此后数据输出的精确可靠。

在香农信息论的后续研究下,我们发展了各种技术来确保数据不丢,例如纠删码。但在大模型应用下强调的量化的概念,同样是来源于香农信息论的理解,却对数据的存储采用了不一样的方式,它使用数值近似来解决涉及连续数学量的问题,即通过数值输入数据表示在一些合理的拓扑结构中求解。由于数据可以在内存级的近似计算下求得精确值。这是否意味着企业的数据存储容量可以因大模型的计算方式有效节省了,通俗来讲,就是有的 “解“的数据不用提前存了,或是本身就可以不存在。毕竟,通过内存级的计算读取可能会远远快过经过数据中心网络的寻盘时间。

无论是通过剪枝来创造稀疏性,或是通过Checkmate来约束最小化内存持续等等,可能更多是利用传统数据存储思路对AI资源能力的有限支持,尤其是在K-Means那种聚类方法下可能更多值的内存访问会变得没意义。在新大模型的AI模式下,比COOrdinate(COO)、压缩稀疏行(CSR)和压缩稀疏列(CSC)更合适面向商业硬件的存储方式是什么?传统存储模型里会按照通过数据的”冷温热“利用来分层数据存储策略,在大模型的AI模式下,存储模型是否会个侧重于安全级的”低中高“来分型呢?传统数据安全更多是针对目标数据的不可获取来设计的,在大模型的AI模式下,可能即使数据源被劫持,但没有算力和算法的加持,目标数据也是不可获得的,这是否能带来新的安全存储思考呢?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK