AI芯片,看什么?硬件芯片ai芯片

量化(Quantization)在加速神经网络方面发挥了巨大作用——从32位到16位再到8位,甚至更快。它是如此重要,以至于谷歌目前因涉嫌侵犯BF16的创建者而被起诉,索赔16亿至52亿美元。所有的目光都集中在数字格式上,因为它们在过去十年中对人工智能硬件效率的提升起到了很大的作用。较低精度的数字格式有助于推倒数十亿参数模型的内存墙。

上述都是设计一颗AI芯片需要考量的因素。

矩阵乘法

任何现代机器学习模型的大部分都是矩阵乘法。在GPT-3中,每一层都使用大量矩阵乘法:例如,其中一个具体运算是(2048x12288)矩阵乘以(12288x49152)矩阵,输出(2048x49152)矩阵。

重要的是如何计算输出矩阵中的每个单独元素,这可以归结为两个非常大的向量的点积-在上面的示例中,大小为12288。这由12288次乘法和12277次加法组成,它们累积成一个数字–输出矩阵的单个元素。

通常,这是通过将累加器寄存器初始化为零,然后重复地在硬件中完成的

乘以x_i*w_i;

将其添加到累加器中;

每个周期的吞吐量均为1。经过大约12288个循环后,输出矩阵的单个元素的累加完成。这种“融合乘加”运算(FMA:fusedmultiply-add)是机器学习的基本计算单元:芯片上有数千个FMA单元战略性地排列以有效地重用数据,因此可以并行计算输出矩阵的许多元素,以减少所需的周期数。

上图中的所有数字都需要在芯片内部的某个位以某种方式以位表示:

x_i,输入激活;

w_i,权重;

p_i,成对乘积;

整个输出完成累加之前的所有中间部分累加和;

最终输出总和;

在这个巨大的设计空间中,当今大多数机器学习量化研究都可以归结为两个目标:

足够准确地存储数千亿个权重,同时使用尽可能少的位,从容量和带宽的角度减少内存占用。这取决于用于存储权重的数字格式。

实现良好的能源和面积效率。这主要取决于用于权重和激活的数字格式;

这些目标有时是一致的,有时是不一致的——我们将深入研究这两个目标。

数字格式设计目标1:芯片效率

许多机器学习芯片计算性能的根本限制是功耗。虽然H100理论上可以实现2,000TFLOPS的计算能力,但在此之前它会遇到功率限制-因此每焦耳能量的FLOPs是一个非常需要跟踪的指标。鉴于现代训练运行现在经常超过1e25次flops,我们需要极其高效的芯片,在数月内吸收(sucking)兆瓦功率,才能击败SOTA。

基本数字格式

首先,让我们深入了解计算中最基本的数字格式:整数。

一、以2为底的正整数

正整数具有明显的以2为底的表示形式。这些称为UINT,即无符号整数。以下是8位无符号整数(也称为UINT8,范围从0到255)的一些示例。

这些整数可以有任意位数,但通常仅支持以下四种格式:UINT8、UINT16、UINT32和UINT64。

二、负整数(Negativeintegers)

负整数需要一个符号来区分正负。我们可以将一个指示符放在最高有效位中:例如0011表示+3,1011表示–3。这称为符号-数值(sign-magnitude)表示。以下是INT8的一些示例,其范围从–128到127。请注意,由于第一位是符号,因此最大值实际上已从255减半到127。

符号-数值很直观,但效率很低——您的电路必须实现截然不同的加法和减法算法,而这些算法又不同于没有符号位的无符号整数的电路。有趣的是,硬件设计人员可以通过使用二进制补码表示来解决这个问题,这使得可以对正数、负数和无符号数使用完全相同的进位加法器电路。所有现代CPU都使用二进制补码。

在unsignedint8中,最大数字255是11111111。如果添加数字1,255会溢出到00000000,即0。在signedint8中,最小数字是-128,最大数字是127。作为让INT8和UINT8共享硬件的技巧资源,-1可以用11111111表示。现在当数字加1时,它溢出到00000000,按预期表示0。同样,11111110可以表示为-2。

溢出被用作一个功能!实际上,0到127被映射为正常值,128到255被直接映射到-128到-1。

固定点(FixedPoint)

为了更进一步,我们可以在现有硬件上轻松创建新的数字格式,而无需进行修改。虽然这些都是整数,但您可以简单地想象它们是其他东西的倍数!例如,0.025只是千分之25,它可以存储为整数25。现在我们只需要记住其他地方使用的所有数字都是千分之几。

新的“数字格式”可以表示从–0.128到0.127的千分之一的数字,而没有实际的逻辑变化。完整的数字仍被视为整数,然后小数点固定在右起第三位。这种策略称为定点(fixedpoint)。

更一般地说,这是一个有用的策略,我们将在本文中多次回顾它-如果您想更改可以表示的数字范围,请在某处添加比例因子。(显然,您可以用二进制来执行此操作,但十进制更容易讨论)。

浮点(FloatingPoint)

但定点有一些缺点,特别是对于乘法。假设您需要计算一万亿乘以一万亿分——尺寸上的巨大差异就是高*动态范围*的一个例子。那么1012和10-12都必须用我们的数字格式来表示,所以很容易计算出你需要多少位:从0到1万亿以万亿分之一的增量计数,你需要10^24增量,log2(10^24)~=80位来表示具有我们想要的精度级别的动态范围。

每个数字80位显然是相当浪费的。您不一定关心绝对精度,您关心相对精度。因此,尽管上述格式能够准确区分1万亿和999,999,999,999.999999999999,但您通常不需要这样做。大多数时候,您关心的是相对于数字大小的误差量。

这正是科学记数法所解决的问题:在前面的示例中,我们可以将一万亿写为1.00*10^12,将一万亿写为1.00*10^-12,这样的存储空间要少得多。这更复杂,但可以让您在相同的上下文中表示极大和极小的数字,而无需担心。

因此,除了符号和值之外,我们现在还有一个指数。IEEE754-1985标准化了行业范围内以二进制存储该数据的方式,而当时使用的格式略有不同。主要有趣的格式,32位浮点数(“float32”或“FP32”)可描述为(1,8,23):1个符号位、8个指数位和23个尾数位。

符号位为0表示正,1表示负;

指数位被解释为无符号整数e,并表示比例因子2e-127,其值可以介于2-126-和2127之间。更多指数位意味着更大的动态范围;

尾数位表示值1.。更多尾数位意味着更高的相对精度;

其他位宽已标准化或事实上已采用,例如FP16(1,5,10)和BF16(1,8,7)。争论的焦点是范围与精度。

FP8(1,5,2或1,4,3)最近在OCP标准中标准化了一些额外的怪癖,但目前还没有定论。许多人工智能硬件公司已经实现了具有稍微优越的变体的芯片,这些变体与标准不兼容。

硅效率(SiliconEfficiency)

回到硬件效率,所使用的数字格式对硅面积和所需功率有巨大影响。

一、整数硅设计电路(IntegerSiliconDesignCircuit)

整数加法器是有史以来研究最深入的硅设计问题之一。虽然实际的实现要复杂得多,但考虑加法器的一种方法是将它们想象为根据需要将1一直相加并一直加到总和上,因此在某种意义上,n位加法器正在做一定量的工作到n

对于乘法,请回想一下小学的长乘法。我们进行n位乘以1位的乘积,然后最后将所有结果相加。在二进制中,乘以1位数字很简单(0或1)。这意味着n位乘法器本质上由n位加法器的n次重复组成,因此工作量与n^2成正比。

虽然实际实现因面积、功率和频率限制而有很大不同,但通常1)乘法器比加法器昂贵得多,但2)在低位数(8位及以下)时,FMA的功耗和面积成本更高以及来自加法器的更多相对贡献((n与n^2缩放).

二、浮点电路(FloatingPointCircuits)

浮点单位有很大不同。相反,乘积/乘法相对简单。

如果恰好有一个输入符号为负,则符号为负,否则为正。

指数是传入指数的整数和。

尾数是传入尾数的整数积。

相比之下,总和相当复杂。

首先,计算指数差。(假设exp1至少与exp2一样大-如果没有,请在说明中交换它们);

将尾数2向下移动(exp1-exp2),使其与尾数1对齐;

向每个尾数添加隐式前导1。如果一个符号为负,则对尾数之一执行二进制补码;

将尾数加在一起形成输出尾数;

如果发生溢出,则结果指数加1,尾数下移;

如果结果为负,则将其转换回无符号尾数并将输出符号设置为负;

对尾数进行归一化,使其具有前导1,然后删除隐式前导1;

适当舍入尾数(通常舍入到最接近的偶数);

值得注意的是,浮点乘法的成本甚至比整数乘法“更少”,因为尾数乘积中的位数更少,而指数的加法器比乘法器小得多,几乎无关紧要。

显然,这也是极其简化的,特别是我们没有讨论的非正规和nan处理占用了大量的空间。但要点是,在低位数浮点中,乘积很便宜,而累加则很昂贵。

我们提到的所有部分在这里都非常明显-将指数相加,尾数的大型乘法器数组,根据需要移动和对齐事物,然后标准化。(从技术上讲,真正的“融合”(“fused”)乘加有点不同,但我们在这里省略了。)

该图表说明了上述所有要点。有很多东西需要消化,但要点是INT8xINT8的累加和累加到定点(FX)的成本是最便宜的,并且由乘法(“mpy”)主导,而使用浮点作为操作数或累加格式(通常在很大程度上)由累积成本(“alignadd”+“normacc”)主导。例如,通过使用带有“定点”累加器的FP8操作数而不是通常的FP32,可以节省大量成本。

总而言之,本文和其他论文声称FP8FMA将比INT8FMA多占用40-50%的硅面积,并且能源消耗同样更高或更差的说法一直。这是大多数专用ML推理芯片使用INT8的主要原因。

数字格式设计目标2:准确性

既然整数总是更便宜,为什么我们不到处使用INT8和INT16而不是FP8和FP16呢?这取决于这些格式能够如何准确地表示神经网络中实际显示的数字。

我们可以将每种数字格式视为一个查找表。例如,一个非常愚蠢的2位数字格式可能如下所示:

显然,这组四个数字对任何事情都没有多大用处,因为它缺少太多数字-事实上,根本没有负数。如果表中不存在神经网络中的数字,那么您所能做的就是将其四舍五入到最近的条目,这会给神经网络带来一点误差。

那么表中理想的值集是多少?表的大小可以有多小?

例如,如果神经网络中的大多数值都接近于零(实际上也是如此),我们希望能够有很多这些数字接近于零,这样我们就可以通过牺牲准确性来获得更高的准确性。哪里没有。

在实践中,神经网络通常是正态分布或拉普拉斯分布,有时根据模型架构的确切数值,存在大量异常值。特别是,对于非常大的语言模型,往往会出现极端异常值,这些异常值很少见,但对模型的功能很重要。

上图显示了LLAMA65B部分权重。这看起来很像正态分布。如果将此与FP8和INT8中的数字分布进行比较,很明显浮点集中在重要的地方-接近零。这就是我们使用它的原因!

不过,它仍然与真实分布不太匹配——每次指数递增时,它仍然有点太尖了,但比int8好得多。

我们可以做得更好吗?从头开始设计格式的一种方法是最小化平均绝对误差——舍入造成的平均损失量。

对数系统(LogNumberSystems)

例如,Nvidia在HotChips上宣称LogNumberSystem是继续扩展过去8位数字格式的可能途径。使用对数系统时,舍入误差通常较小,但存在许多问题,包括极其昂贵的加法器。

NF4和变体(AF4)是4位格式,假设权重遵循完全正态分布,则使用精确的查找表来最大限度地减少误差。但这种方法在面积和功耗方面非常昂贵——现在每个操作都需要查找巨大的条目表,这比任何INT/FP操作都要糟糕得多。

我们个人对LemurianLabsPAL最有希望,但关于其数字格式,还有很多信息尚未披露。他们声称其16位精度和范围比FP16和BF16更好,同时硬件也更便宜。

块号格式(BlockNumberFormats)

一个有趣的观察是,元素的大小几乎总是与张量中附近的元素相似。当张量的元素比平常大得多时,附近的元素本质上并不重要——它们相对太小,无法在点积中看到。

我们可以利用这一点-我们可以在多个元素之间共享一个指数,而不是对每个数字都使用浮点指数。这节省了很多大部分冗余的指数。

此时,存在一整套可能的格式,具有不同的权衡。微软试图量化硬件的设计空间:

硬件供应商面临着一个棘手的问题,即尝试设计高度专业化的高效格式,同时又不关闭可能具有截然不同的数值分布的未来模型架构的大门。

推理(Inference)

上述大部分内容都适用于推理和训练,但每种都有一些特定的复杂性。

推理对成本/功耗特别敏感,因为模型通常只训练一次,但部署到数百万客户。训练也更加复杂,有许多数值上有问题的操作(见下文)。这意味着推理芯片在采用更小、更便宜的数字格式方面通常远远领先于训练芯片,因此模型训练的格式和模型推理的格式之间可能会出现很大的差距。

有许多工具可以从一种格式适应另一种格式,这些工具属于一个范围:

一方面,训练后量化(PTQ:post-trainingquantization)不需要执行任何实际的训练步骤,只需根据一些简单的算法更新权重:

最简单的方法是将每个权重四舍五入到最接近的值。Theeasiestistosimplyroundeachweighttothenearestvalue.

LLM.int8()将除一小部分以外的所有异常值权重转换为INT8;

GPTQ使用有关权重矩阵的二阶信息来更好地量化;

Smoothquant进行数学上等效的变换,尝试平滑激活异常值;

AWQ使用有关激活的信息来更准确地量化最显着的权重;

QuIP对模型权重进行预处理,使其对量化不太敏感;

AdaRound将每一层的舍入分别优化为二次二元优化;

存在许多其他方法并且正在不断发布。许多“训练后”量化方法通过使用某种修改后的训练步骤或代理目标迭代优化量化模型,从而模糊了与训练的界限。这里的关键方面是,这些极大地降低了成本,但现实世界的性能损失通常比人们经常吹捧的简单基准要大。

训练(Training)

由于向后传递,训练稍微复杂一些。有3个matmul——一个在前向传递中,两个在后向传递中。

每个训练步骤最终都会接收权重,对各种数据进行一系列矩阵乘法,并产生新的权重。

FP8训练更加复杂。下面是NvidiaFP8训练方法的稍微简化版本。

这个清单的一些显着特点:

每个matmul都是FP8xFP8并累加为FP32(实际上精度较低,但Nvidia告诉大家它是FP32),然后量化为FP8以用于下一层。累加必须比FP8具有更高的精度,因为它涉及对同一大型累加器进行数万次连续的小更新,因此每个小更新需要很高的精度才能不向下舍入为零;

每个FP8权重张量都带有一个比例因子。由于每一层的范围可能显着不同,因此缩放每个张量以适应该层的范围至关重要;

权重更新(在主框之外)对精度非常敏感,并且通常保持较高的精度(通常为FP32)。这又归结为幅度不匹配——权重更新与权重相比很小,因此再次需要精度才能使更新不向下舍入为零;

最后,训练与推理的一大区别是梯度有更多的极端异常值,这一点非常重要。可以将激活梯度(例如SwitchBack、AQT)量化为INT8,但权重梯度迄今为止抵制了这种努力,必须保留在FP16或FP8(1,5,2)中。

THE END
1.AI训练芯片行业深度解析:市场趋势技术进展竞争格局与未来投资...- :作为我国互联网巨头,也在训练芯片领域展开布局。其推出的训练芯片在云计算、大数据等领域具有广泛应用前景。未来,有望通过其在互联网领域的优势,推动训练芯片在更多应用场景的落地。 - 寒武:寒武作为我国新兴的芯片企业,凭借其在训练芯片领域的创新能力,迅速崛起。其推出的训练芯片在性能、功耗等方面具有竞争优势,受...http://www.slrbs.com/jrzg/aizhishi/724838.html
2.AI推理CPU当道,Arm驱动高效引擎AI的训练和推理共同铸就了其无与伦比的处理能力。在AI训练方面,GPU因其出色的并行计算能力赢得了业界的青睐,成为了当前AI大模型最热门的芯片;而在 AI 推理方面,具备卓越通用性和灵活性的CPU本应发挥关键作用,但其重要性却常常被忽视。 “对于那些希望将大语言模型(LLM)集成到产品和服务中的企业和开发者来说,CPU...https://www.elecfans.com/d/6345053.html
3.从PB社今日小作文看芯片重要机会——从训练到推理——芯片方向正在从训练向推理转向,AMD 、英伟达、Groq、AI手机都在热炒推理芯片训练芯片已经涨上天,关注还在低位,有超车潜力、有引爆因素的国产推理芯片。引爆点1:Groq推“最快”AI推理芯片 比英伟达GPU快10倍引爆点2:推理芯片NPU成AI手机、AI PC最大的增量方向!NPU即神经网络处理器,它是一种专门设计用于加速终端...http://guba.sina.cn/view_144542_77.html
4.英伟达AI芯片路线图分析与解读Nvidia是一个同时拥有 GPU、CPU和DPU的计算芯片和系统公司。Nvidia通过NVLink、NVSwitch和NVLink C2C技术将CPU、GPU进行灵活连接组合形成统一的硬件架构,并于CUDA一起形成完整的软硬件生态。 在AI计算芯片架构方面,注重训练和推理功能的整合,侧重推理。围绕GPU打造ARM和X86两条技术路线。在Nvidia的AI路线图中,并没有...https://wallstreetcn.com/articles/3712058
1.昇腾训练芯片和推理芯片的区别昇腾训练芯片和推理芯片在人工智能(AI)领域扮演着不同的角色,它们之间的区别主要体现在以下几个方面: 一、服务阶段与功能 训练芯片:主要用于AI模型的训练阶段。在这个阶段,芯片需要处理大量的数据和复杂的计算,以优化模型参数,提高模型的准确率和泛化能力。训练芯片的设计重点在于提高计算速度和精度,以支持大规模并行计...https://blog.csdn.net/fuhanghang/article/details/141310666
2.全民AI时代来了!但是你了解大模型AI芯片吗?(附国内外AI芯片参数...AI芯片一般可以理解为能运行AI算法的芯片,能处理AI应用中大量计算任务的模块,AI大模型算力的需求主要来源于训练(training)和推理(inference)这两环节,但是这两有什么区别? 训练是指基于一大堆的数据训练出一个复杂的大模型,训练芯片主要用于机器学习和深度学习,需要有强大的并行处理能力,此外还需要配备空间够大且高效的...https://www.xcc.com/news/detail/5555377
3.AI训练推理云边端对AI芯片的需求及挑战(1)云端:即数据中心,关注算力、扩展能力、兼容性。云端部署的AI芯片包括训练芯片和推理芯片。 (2)边缘端:即手机、安防摄像头等领域,关注综合性能,要求低功耗、低延时、低成本。边缘端部署的AI芯片以实现推理功能为主。 云端推理占比逐步提升,AI落地应用数量增加。根据IDC数据,随着人工智能进入大规模落地应用的关键时...https://www.eet-china.com/mp/a289837.html
4.解读AI通用计算芯片:GPU训练CPU推理,用最优的成本降低AI算力支出...AI计算方面,由于CPU有着更强的逻辑运算能力,就更加适合推理;而GPU拥有大量的计算单元,就更适合训练。 当前,人工智能已经成为推动企业业务创新和可持续发展的核心引擎。我们知道,算力、算法和数据是人工智能的三大核心要素,缺一不可。今天,笔者就从通用计算芯片这个维度出发,跟大家详细聊聊关于算力的相关技术与市场竞争态...https://www.51cto.com/article/784165.html
5.碾压H100!英伟达GH200超级芯片首秀MLPerfv3.1,性能跃升17%...使用了 NVLink-C2C 的 GH200 Grace Hopper 超级芯片仅使用 3% 的推理时间就完成了相同的传输。 由于具有更高的内存带宽和更大的内存容量,与 MLPerf Inference v3.1 的 H100 GPU 相比,Grace Hopper 超级芯片的单芯片性能优势高达 17%。 推理和训练全面领先 ...https://www.ithome.com/html/string/718598.htm
6.中昊芯英拥有自研AI训练芯片及推理芯片两大产品线,并已经完成...中昊芯英拥有自研AI训练芯片及推理芯片两大产品线,并已经完成了数十项发明专利的布局。核心AI训练芯片刹那TM算力可达204TFLOPS/396TOPS以上,自主研发的多至1024片的片间互联构架,为大https://ir.p5w.net/question/0001D0BF57F06A4E450E98FB4EC15B01DAF8.shtml
7.AI算力芯片天下一分为四,中国实力渐显艾瑞专栏谷歌介绍,Anthropic现在是首批大规模部署Cloud TPU v5e的企业之一。Cloud TPU v5e是谷歌云迄今为止最多功能、效率最高且可扩展性最强的AI加速器。这种芯片让Anthropic能以高性能且高效的方式为其Claude大语言模型(LLM)服务。 亚马逊:训练芯片Trainium、推理芯片Inferentia...https://column.iresearch.cn/b/202311/970854.shtml
8.计图支持国产统信操作系统和飞腾CPU芯片,实现GPU加速的训练和推理计图(Jittor)是由清华大学发布的首个动态编译深度学习框架,在5月8日兼容寒武纪芯片之后,计图目前又在国内自主研发操作系统统信UOS+国产CPU飞腾FT2000的架构下,成功实现了CPU和GPU的训练推理。 图1使用统信操作系统进行GPU训练图例 图1为国内自主操作系统统信UOS的操作界面,通过在终端中运行数行命令,就可以完成计图的...https://cg.cs.tsinghua.edu.cn/jittor/news/2021-06-21-00-00-fc/
9.芯片代理商:英伟达的H100训练芯片为啥受欢迎?训练芯片对数据传输速率和算力有较高要求,而推理芯片则需要低延迟。鉴于英伟达在训练芯片领域具备算力优势和软件方面的优势,他们成为科技公司首选的厂商,因此更多科技公司倾向于使用H100。 即使在推理应用场景下,英伟达仍然有一些替代方案可供选择,但在训练芯片领域,英伟达几乎是唯一的选择。这是因为英伟达在训练芯片领域的...http://www.htt-ic.com/index.php?m=home&c=View&a=index&aid=1952
10.AI上海范上海云端推理芯片中国AI算力再加速AI芯片是指面向人工智能应用开发的芯片,针对人工智能算法做了特殊加速设计。当前,从架构角度看,AI芯片以GPU、FPGA、ASIC等为主。从应用场景看,AI芯片分为云端芯片、边缘端芯片和终端芯片,其中云端AI芯片是指在服务器端完成人工智能相关运算的芯片。从实现功能看,AI芯片主要分为训练芯片和推理芯片。https://app.sheitc.sh.gov.cn/gydt/691342.htm
11.国产推理芯片上“硬菜”!大模型和边缘计算都不在话下人工智能芯片从功能上可以分为训练芯片和推理芯片,前者注重绝对的计算能力,而后者更注重综合指标,是实现AI应用落地终端的“最后一公里”。 “训练不是目的,生产大模型不是目的,千行百业的落地和应用才是最终的目的。”陈宁表示,不论是机器人、无人驾驶汽车智能传感,还是各类智能硬件,甚至脑机接口芯片,都需要大模型的...https://www.seccw.com/Document/detail/id/25807.html