首页 / 用于AI加速器集成电路的矩阵乘法计算装置及AI加速器装置

用于AI加速器集成电路的矩阵乘法计算装置及AI加速器装置有效专利 实用

技术领域

[0001] 本申请一般而言涉及集成电路(IC)设备和人工智能(AI)。更具体而言,本申请涉及一种用于加速计算工作负载的设备结构,例如基于变压器的模型(又称变压器)中的计算工作负载。

相关背景技术

[0002] 变压器一直是自然语言处理(NLP)领域的主流神经网络架构,其使用范围也在不断扩展到其他机器学习应用领域。最初的变压器在《Attention is all you need》(Vaswani等人,2017年)一文中进行了介绍,这引发了许多变压器模型变体的发展,例如来自变压器的生成式预训练变压器(GPT)模型和双向编码器表示(BERT)模型。这些变压器在推理任务中的表现明显优于其他模型,因为它们使用了自关注机制,该机制避免了递归并且允许轻松并行。另一方面,变压器工作负载的计算密集度非常高,对内存的要求也很高,一直以来都饱受时间密集和效率低下的困扰。
[0003] 最近,NLP模型的模型大小和计算需求两者都成千倍地增长。例如,对于1024个图形处理单元(GPU)而言,可能需要大约4个月的时间才能训练出像GPT‑3这样拥有1,750亿个参数的模型。目前,拥有一万亿个参数的新NLP模型正在开发中,数万亿个参数的模型也即将问世。如此快速的增长使得为大规模NLP模型提供服务变得越来越困难。
[0004] 从上面可以看出,用于加速AI的计算工作负载的改进型设备是非常可取的。

具体实施方式

[0035] 本申请一般而言涉及集成电路(IC)设备和人工智能(AI)系统。更具体而言,本申请涉及加速基于变压器的神经网络模型(又称变压器)中的计算工作负载的方法和设备。这些方法和结构可以用于机器/深度学习应用,例如自然语言处理(NLP)、计算机视觉(CV)等。仅作为示例,本申请已经应用于配置为执行NLP的高吞吐量操作的AI加速器装置和芯粒设备。
[0036] 目前,绝大多数NLP模型都是基于变压器模型,例如来自变压器的双向编码器表示(BERT)模型、BERT Large模型和生成式预训练变压器(GPT)模型,例如GPT‑2和GPT‑3等。然而,这些变压器对计算和内存的要求非常高。根据示例,本申请提供了一种使用芯粒设备的装置,该芯粒设备配置为加速AI应用的变压器计算。图1A和图1B示出了AI加速器装置的示例。
[0037] 图1A图示了具有两个芯粒设备110的简化AI加速器装置101。如图所示,芯粒设备110通过一个或多个芯片到芯片(D2D)互连120相互耦合。此外,每个芯粒设备110都耦合到存储器接口130(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态RAM(SDRAM)等)。装置101还包括基板构件140,该基板构件140为配置在基板构件140的表面区域的芯粒设备110提供机械支撑。基板可以包括中介层,例如硅中介层、玻璃中介层、有机中介层等。芯粒可以耦合到一个或多个中介层,这些中介层可以配置为使芯粒和其他组件之间能够进行通信(例如,充当允许电信号在内部元件和外部元件之间传递的桥接器或导管)。
[0038] 图1B图示了简化AI加速器装置102,其中八个芯粒设备110在基板构件140上配置为两组,每组四个芯粒。在这里,一组中的每个芯粒设备110都通过一个或多个D2D互连120耦合到其他芯粒设备。装置102还示出了耦合到每个芯粒设备110的DRAM存储器接口130。DRAM存储器接口130可以耦合到一个或多个存储器模块,由“Mem”块表示。
[0039] 如图所示,AI加速器装置101和102体现为外围组件快速互连(PCIe)卡形状因子,但是AI加速器装置也可以按照其他形状因子配置。这些PCIe卡形状因子可以配置为各种尺寸(例如,全高、全长(FHFL);半高、半长(HHHL)等)和机械大小(例如,1×、2×、4×、16×等)。在示例中,一个或多个基板构件140耦合到PCIe卡,每个基板构件140都有一个或多个芯粒。本领域的普通技术人员将认识AI加速器装置的这些元件和配置的其他变化、修改和替代。
[0040] AI加速器装置的实施例可以实施几种技术以提高各种AI应用中的性能(例如,计算效率)。AI加速器装置可以包括数字内存内计算(DIMC)以集成计算功能和存储器构造。映射器、数值和稀疏性的算法可以在计算构造中进行优化。而且,使用在有机中介层上配置的芯粒和互连可以提供模块性和可扩展性。
[0041] 根据示例,本申请实施具有内存内计算(IMC)功能的芯粒,该芯粒可以用于加速变压器的工作负载所需的计算。用于训练这些模型的计算可以包括执行缩放的点积注意函数以确定与特定AI应用中与期望结果相关联的概率分布。在训练NLP模型的情况下,期望结果可以包括预测后续单词、确定上下文单词含义、翻译成另一种语言等。
[0042] 芯粒架构可以包括多个切片设备(或切片),由中央处理单元(CPU)控制以并行执行变压器计算。每个切片都是可以处理这些计算中的一部分的模块化IC设备。多个切片可以被分成一个或多个切片的瓦片/群组(即,子集),其中CPU耦合到瓦片中的每个切片。这种瓦片CPU可以配置为通过瓦片中的每个切片并行地执行变压器计算。全局CPU可以耦合到这些瓦片CPU中的每个瓦片CPU,以配置为通过使用瓦片CPU,通过一个或多个芯粒中的所有切片并行地执行变压器计算。芯粒的进一步的细节是参照图2A至图5B进行讨论的,而变压器是参照图6至图9进行讨论的。
[0043] 图2A是图示了16切片设备201的示例配置的简化框图。在这种情况下,芯粒201包括四个瓦片设备210,其中每个瓦片设备210都包括四个切片设备220、CPU 221和硬件调度(HW DS)设备222。在具体示例中,这些瓦片210以对称的方式布置。如前所述,瓦片210的CPU 221可以协调由瓦片内的所有切片执行的操作。HW DS222耦合到CPU 221,并且可以配置为协调对瓦片210中的切片220的控制(例如,以确定瓦片中的哪个切片处理变压器计算的目标部分)。在具体示例中,CPU 221可以是精简指令集计算机(RISC)CPU等。进一步地,CPU 
221可以耦合到调度引擎,该调度引擎配置为协调对CPU 221的控制(例如,以确定变压器计算中的哪些部分由特定CPU处理)。
[0044] 每个瓦片210的CPU 221都可以通过全局CPU接口230(例如,总线、连接器、插座等)耦合到全局CPU。这种全局CPU可以配置为协调对AI加速器装置(例如分别为图1A和图1B的装置101和102)中的所有芯粒设备的处理。在示例中,全局CPU可以使用每个瓦片的HW DS222来指示每个关联的CPU 221在瓦片中的切片上执行变压器计算的各个部分。此外,全局CPU可以是RISC处理器等。芯粒201还包括D2D互连240和存储器接口250,两者均耦合到每个瓦片中的每个CPU 221。在示例中,D2D互连可以用单端信令配置。存储器接口250可以包括耦合到一个或多个存储器设备(例如,DRAM、SRAM、SDRAM等)的一个或多个存储器总线。
[0045] 进一步地,芯粒201包括耦合到每个瓦片中的每个CPU 221的PCIe接口/总线260。PCIe接口260可以配置为与服务器或其他通信系统通信。在多个芯粒设备的情况下,主总线设备通过使用主芯粒设备耦合到每个芯粒设备的PCIe总线260(例如,主总线设备也耦合到主芯粒设备)。这种主芯粒设备通过至少使用D2D互连240耦合到每个其他芯粒设备。主芯粒设备和主总线设备可以配置在基板构件(例如,与芯粒相同的基板或单独的基板)上。集成一个或多个芯粒的装置也可以耦合到电源(例如,配置在片上、配置在系统中或在外部耦合),并且可以被配置并且可通过使用主总线设备对服务器、网络交换机或主机系统进行操作。服务器装置也可以是为数据中心内的服务器群或其他类似配置而配置的多个服务器装置之一。
[0046] 在具体示例中,为GPT‑3配置的AI加速器装置可以并入八个芯粒(与图1B的装置102类似)。芯粒可以用D2D 16×16Gb/s互连、32位LPDDR56.4Gb/s存储器模块和16通道PCIe Gen 5PHY NRZ 32Gb/s/通道接口进行配置。LPDDR5(16×16Gb)可以为大规模NLP模型(例如量化GPT‑3)提供必要的容量、带宽和低功率。当然,可以有其他变化、修改和替代。
[0047] 图2B是图示了16切片芯粒设备202的示例配置的简化框图。与芯粒201类似,芯粒202包括四个群组210(或瓦片),每个群组都包括四个切片设备220和CPU 221。如图所示,每个群组/瓦片210的CPU 221都耦合到每个切片220和其他群组/瓦片210中的每个其他CPU 
221。在示例中,瓦片/群组充当神经核心,而切片充当计算核心。使用这种多核配置,芯粒设备可以配置为并行处理和运行多个计算。CPU 221也耦合到全局CPU接口230、D2D互连240、存储器接口250和PCIe接口260。如图2A所描述的,全局CPU接口230连接到全局CPU,该全局CPU控制每个群组210的所有CPU 221。
[0048] 图3A是图示了芯粒的示例切片设备301的简化框图。对于16切片芯粒示例,切片设备301包括具有四个计算路径312的计算核心310,每个计算路径312都包括输入缓冲器(IB)设备320、数字内存内计算(DIMC)设备330、输出缓冲器(OB)设备340和单指令多数据(SIMD)设备350,这些设备耦合在一起。这些路径312中的每个路径都耦合到切片横杆/控制器360,该切片横杆/控制器360由瓦片CPU控制,以协调由每个路径312执行的计算。
[0049] 在示例中,DIMC耦合到时钟,并且配置在芯粒的多个切片中的每个切片的一个或多个部分中,以允许DIMC中所提供的一个或多个矩阵计算的高吞吐量,以使高吞吐量由每一时钟周期512个乘法累加表征。在具体示例中,耦合到DIMC的时钟是源自第一时钟(例如,芯粒时钟发生器、AI加速器装置时钟发生器等)的第二时钟,该第二时钟配置为输出约0.5GHz至4GHz的时钟信号;第二时钟可以配置为约为第一时钟的速率的一半的输出速率。
DIMC还可以配置为支持块结构稀疏性(例如,对神经网络(如变压器)的权重模式施加结构约束)。
[0050] 在示例中,SIMD设备350是耦合到DIMC的输出的SIMD处理器。SIMD 350可以配置为在向量过程上处理一个或多个非线性操作和一个或多个线性操作。SIMD 350可以是可编程向量单元等。SIMD 350还可以包括一个或多个随机存取存储器(RAM)模块,例如数据RAM模块、指令RAM模块等。
[0051] 在示例中,切片控制器360耦合到每个计算路径312的所有块,并且还包括耦合到每个计算路径的控制/状态寄存器(CSR)362。切片控制器360还耦合到存储器组370和数据重整引擎(DRE)380。切片控制器360可以配置为将数据从存储器组370馈送给每个计算路径312中的块,并且通过处理器接口(PIF)364协调这些计算路径312。在具体示例中,PIF 364耦合到每个计算路径312的SIMD 350。
[0052] 图3B示出了计算核心310的进一步的细节。切片设备302的简化框图包括输入缓冲器320、DIMC矩阵向量单元330、输出缓冲器340、片上网络(NoC)设备342和SIMD向量单元350。DIMC单元330包括多个内存内计算(IMC)模块332,配置为计算输入数据上的缩放的点积注意函数以确定概率分布,这需要高吞吐量矩阵乘法—累加运算。
[0053] 这些IMC模块332也可以耦合到块浮点对齐模块334和部分产品精简模块336,以在将DIMC结果输出给输出缓冲器540之前进行进一步处理。在示例中,输入缓冲器320接收来自存储器组370(如图3A所示)的输入数据(例如,数据向量),并且将数据发送给IMC模块332。IMC模块332还可以接收来自存储器组370的指令。
[0054] 除了前面讨论的细节,SIMD 350还可以配置为元素指向向量单元。SIMD 350可以包括计算单元352(例如,加、减、乘、最大值等)、查找表(LUT)354和配置为接收来自输出缓冲器340的一个或多个输出的状态机(SM)模块356。
[0055] NoC设备342通过快捷连接344耦合到前馈回路中所配置的输出缓冲器340。此外,NoC设备342耦合到每个切片,并且是为多播和单播过程配置的。更具体地,NoC设备342可以配置为连接所有切片和所有瓦片,将多播输入激活连接到所有切片/瓦片,并且收集对于特殊分布的累积是单播的部分计算。
[0056] 考虑到前面的8芯粒AI加速器装置示例,输入缓冲器可以具有64KB的容量,其中有16个组,并且输出缓冲器可以具有128KB的容量,其中有16个组。DIMC可以是具有尺寸64×
64的8位块(八个64×64IMC模块),并且NoC可以具有512位的大小。SIMD中的计算块可以配置为进行8位和32位整数(int)和无符号整数(uint)计算以及浮点计算,例如IEEE 
854float16或float32。这些切片组件可以根据AI加速器装置将服务的变压器而变化。
[0057] 图4是图示了示例IMC模块700的简化框图。如图所示,模块700包括一个或多个计算树块410,配置为对来自一个或多个读写块420的输入数据执行期望计算。这些读写块420中的每个读写块都包括一个或多个第一存储器选择单元422(也表示为“W”)、一个或多个第二存储器选择单元424(“也表示为I”)、激活多路复用器426和运算符单元428。第一存储器选择单元422将输入提供给运算符单元428,而第二存储器选择单元424控制激活多路复用器426,该激活多路复用器426也耦合到运算符单元428。在乘法—累加运算中,运算符单元428是乘法器单元,并且计算树块410是乘法器加法器树块(即∑x.w)。
[0058] 如特写401所示,存储器选择单元422、424中的每个存储器选择单元都包括存储器单元430(例如,SRAM单元等)和选择多路复用器432。存储器选择单元422、424中的每个存储器选择单元都耦合到读写控制器440,该读写控制器440也耦合到存储器组/驱动器块442。在示例中,读写控制器440可以配置有列写入驱动器和列读取感测放大器,而存储器组/驱动器块432可以配置有顺序行选择驱动器。
[0059] 输入激活控制器450可以耦合到每个读写块420的激活多路复用器426。输入激活控制器450可以包括精度和稀疏性感知输入激活寄存器和驱动器。运算符单元428接收第一存储器选择单元422的输出,并且通过激活多路复用器426接收该块450的输出,该激活多路复用器426由第二存储器选择单元424的输出控制。然后,将运算符单元428的输出馈送到计算树块410中。
[0060] 输入激活块450也耦合到时钟源/发生器460。如前所述,时钟发生器460可以产生第二时钟,该第二时钟源自第一时钟,该第一时钟配置为输出约0.5GHz到4GHz的时钟信号;第二时钟可以按照约为第一时钟的速率的一半的输出速率进行配置。时钟发生器460耦合到一个或多个符号和精度感知累加器470,配置为接收计算树块410的输出。在示例中,累加器470配置为接收两个计算树块410的输出。
[0061] 返回参考8芯粒AI加速器装置示例,存储器单元可以是双组2×6TSRAM单元,并且选择多路复用器可以是8T组选择多路复用器。在这种情况下,存储器组/驱动器块442包括双组SRAM组。此外,读/写控制器可以包括64字节的写入驱动器和64字节的读取感测放大器。本领域的普通技术人员将认识这些IMC模块组件以及其配置的其他变化、修改和替代。
[0062] 图5A是图示了在切片中处理的数据的示例数值格式的简化框流程图。图5A中的501示出了具有GM/输入缓冲器510、IMC 520、输出缓冲器530、SIMD 540和NoC 550的数据格式的环路,该环路反馈给GM/输入缓冲器510。IMC块520示出了乘法—累加运算(∑x.w)。附加地,来自IMC 532的数据的格式也流向输出缓冲器530。在该示例中,数值格式包括不同长度的整数(int)、浮点(float)和块浮点(BFP)
[0063] 图5B是图示了包括图5A所示的某些格式的某些数值格式的简化图。块浮点数值可以用于解决某些性能障碍。变压器的训练一般采用浮点方式,即32位浮点或16位浮点,推理一般采用8位整数(“int8”)。使用块浮点运算时,一组尾数有效值共享一个指数(见图5B底部int8向量的对角线填充块),而浮点运算时,每个尾数都有单独的指数(见图5A顶部的32位浮点运算和16位浮点运算格式)。使用块浮点数字格式进行推理的方法,可以显示出定点的效率,而没有整数运算的精度和部署问题,还可以使用较小的尾数,例如4位整数(“int4”),同时保持精度。此外,通过使用块浮点格式(例如,用于激活、权重等)和稀疏性,可以加速训练模型的推理,从而获得更好的性能。本领域的普通技术人员会认识到用于处理变压器工作负载的这些数字格式的其他变化、修改和替代。
[0064] 图6图示了简化变压器架构600。典型的变压器可以被描述为具有配置有解码器堆栈的编码器堆栈,并且每个这样的堆栈可以具有一个或多个层。在编码器层610中,自注意层612在编码数据的同时确定上下文信息,并且将编码的数据馈送给前馈神经网络616。编码器层610从底部到顶部处理输入序列,将输出转换为一组注意向量K和V。解码器层620也包括相应的自注意层622和前馈神经网络626,并且进一步包括编码器—解码器注意层624,该编码器—解码器注意层624使用来自编码器堆栈的注意向量来帮助解码器进行进一步的上下文处理。解码器堆栈输出浮点向量(如图5B所示),该向量被馈送给线性和softmax层630,以将输出投影为最终期望结果(例如,期望单词预测、解释或翻译)。线性层是全连接的神经网络,该全连接的神经网络将解码器输出向量投影为较大的向量(即,logits向量),该向量包含与所有潜在结果(例如,所有潜在单词)相关联的分数,并且softmax层将这些分数变成概率。基于概率输出,投影的单词含义可以基于最高概率或根据应用的其他派生标准来选择。
[0065] 变压器模型变化包括仅基于解码器堆栈的变化(例如,变压器语言模型,例如GPT‑2、GPT‑3等)和仅基于编码器堆栈的变化(例如,掩码语言模型,例如BERT、BERT Large等)。
变压器基于四个参数:序列长度(S)(即,令牌数)、注意头数量(A)、层数(L)和嵌入长度(H)。
这些参数的变化现在用于构建几乎所有基于变压器的模型。本申请的实施例可以为任何类似的模型类型配置。
[0066] 变压器一开始是未经训练的,并且通过暴露于期望学习应用的期望数据集进行预训练。基于变压器的语言模型暴露于大量文本(例如,Wikipedia),以训练语言处理功能,例如预测文本序列中的下一个单词、将文本翻译成另一种语言等。这种训练过程涉及将文本(例如,单词或单词的部分)转换为令牌ID、通过自注意层评估令牌的上下文以及通过前馈神经网络预测结果。
[0067] 自注意过程包括(1)确定输入句子中每个单词的嵌入的查询(Q)、键(K)和值(V),(2)从输入句子中每个单词与目标单词的点积Q和K计算分数,(3)将分数除以尺寸K的平方根,(4)通过softmax操作传递结果以规范化分数,(5)将每个V乘以softmax分数以及(6)将加权V向量相加以产生输出。注意,值矩阵V成为与softmax注意矩阵进行矩阵相乘的权重矩阵;在块浮点数值的上下文中,这需要V的列分块化转换器,如下所述。
[0068] 许多东西会影响这种变压器架构的性能。Softmax函数往往是变压器层的关键路径(并且已经很难在硬件中加速)。对重叠计算、SIMD操作和NoC传输的需求也会影响性能。进一步地,NoC、SIMD和存储器带宽利用的效率也很重要。
[0069] 不同的技术可以与AI加速器装置和芯粒设备示例结合使用,以提高性能,例如量化、稀疏性、知识精炼、高效标记化和软件优化。支持可变序列长度(即,不需要填充到最高序列长度)也可以减少内存需求。其他技术可以包括如何在切片和芯片之间分割自注意的优化、在切片和芯片之间移动层和张量以及层和FC矩阵之间的数据移动。
[0070] 根据示例,本申请提供了一种AI加速器装置(如图1A和图1B所示),该装置耦合到变压器设备集合(例如,BERT、BERT Large、GPT‑2、GPT‑3等)。在具体示例中,这种变压器设备集合可以包括在范围从三层到N层的堆栈中配置的多个变压器,其中,N是不超过128的整数。
[0071] 在示例中,每个变压器都配置在一个或多个DIMC中,以使每个变压器包括多个矩阵乘法器,该矩阵乘法器包括为三个全连接矩阵(FC)前面的变压器的注意层配置的QKV矩T阵。在这种配置中,DIMC配置为加速变压器,并且进一步包括Q K的点积,接着是softmax(Q T
K/平方根(dk))V。在示例中,AI加速器装置还包括SIMD设备(如图3A和图3B所示),配置为加速softmax函数的计算过程。
[0072] 使用变压器(如BERT Large),NLP需要非常高的计算(例如,比CV高5个数量级)。例如,BERT Large需要每个变压器层每秒进行5.6千兆次乘法—累加运算(“GMAC”)。因此,NLP推理挑战是以最低的能耗实现这种性能。
[0073] 虽然本申请是在用于NLP应用的BERT Large变压器的背景下讨论的,但是本领域的普通技术人员将认识变化、修改和替代。所示的特定实施例也可以适用于其他基于变压器的模型和其他AI/机器学习应用。
[0074] 如前所述,块浮点(BFP)格式对于深度神经网络推理中的矩阵乘法运算的高效硬件加速很重要。矩阵权重通常沿着列分块化,而激活通常沿着行分块化。因此,BFP数值使矩阵乘法的高效整数算法能够实现,同时保持大的动态范围。在矩阵乘法之后,与权重列向量的激活行向量点积累加成浮点(FP)格式(例如,FP32、FP16等),并且作为矩阵瓦片(例如,FP16的64×64瓦片)存储到输出缓冲器中。我们也可以使用BFP32‑1,其中有2的补位中的24位尾数和2的补位中的8位指数,作为FP32的等效格式进行部分积的累加。
[0075] 输出缓冲器存储器负载/存储通常是逐行实施的,这对于逐行BFP分块化的典型情况很方便,以生成下一个矩阵乘法的激活。然而,存在一些情况,其中,矩阵乘法的输出用作后续矩阵乘法(例如,在BERT编码器模型中具有注意函数的值矩阵的矩阵乘法)的权重矩阵,这需要将来自输出缓冲器的数据存储在列分块化配置中。在这些情况下,当存储器负载/存储由逐行存储配置表征时,跨列分块化会带来挑战,因为输出转换器一次只能读取一行数据。
[0076] 根据示例,本申请提供了一种列分块化转换器装置和方法,用于将数据从行分块化配置中的第一格式转换为列分块化配置中的第二格式。列分块化装置可以配置为AI加速器装置的IC,例如前述示例AI加速器IC。
[0077] 图7A和图7B是图示了根据本申请的示例的列分块化转换器装置701/702的简化框图。如图所示,装置701/702与图3A所示的切片设备301类似。这些图之间的任何共享参考数值都是指前面描述的相同元件。在这里,图7A和图7B只示出了计算核心310中的两个计算路径313,然而,根据应用可以有额外的计算路径312。
[0078] 图7A的装置701可以包括计算路径312,该计算路径312具有输入缓冲器(IB)设备320、计算设备330、输出缓冲器(OB)340设备。IB设备320耦合到计算设备330,并且配置为接收多个矩阵输入。计算设备330耦合到OB设备340,并且配置为对多个矩阵输入执行多个矩阵计算。在具体示例中,计算设备330可以是执行softmax函数的数字内存内计算(DIMC)设备330,如前所述。在这种情况下,OB设备340可以由逐行存储配置表征,并且可以配置为以第一格式存储由多个矩阵计算产生的多个矩阵输出产生的多个矩阵输出。
[0079] OB转换器设备710可以耦合在计算设备330和OB设备340之间。这种OB转换器设备710可以配置为以第一格式将多个矩阵输出存储在OB设备340中。如图所示,OB转换器设备
710与OB设备340分开配置,然而,OB转换器设备710也可以配置在OB设备340中。这些配置可以实施为内嵌列分块化转换器装置。
[0080] 横杆设备360耦合到IB设备320、计算设备330和OB设备340。横杆转换器设备720也耦合到OB设备340,并且配置为使用为多个矩阵输出中的每个矩阵输出确定的最大指数值和尾数值将多个矩阵输出从第一格式转换为第二格式,从而产生多个转换的矩阵输出。如图所示,横杆转换器设备720配置在计算路径312中,然而,横杆转换器设备720还可以配置在横杆设备360中。
[0081] 进一步地,存储器设备370耦合到横杆设备360。这种存储器设备配置为使用最大指数值和尾数值,以第二格式和列分块化配置存储多个转换的矩阵输出。第一格式可以是浮点(FP)格式,而第二格式可以是块浮点(BFP)格式。在具体示例中,第一格式是FP16格式,第二格式是块大小为64个元素、尾数位宽度为8位和共享指数为8位的BFP格式(BFP16‑64格式)。在这种情况下,多个矩阵输出可以由尾数的64×64字节瓦片和共享指数的64字节行表征。本申请的这种实施例包括用于将输出缓冲器中所存储的64×64元素的FP16瓦片转换为沿列分块化的BFP16‑64瓦片的列分块化转换器的高效算法和硬件架构。
[0082] 在示例中,横杆转换器设备720包括最大指数寄存器722,配置为存储多个矩阵输出中的每个矩阵输出的最大指数值。OB设备340和转换器设备可以一起配置为在第一逐行过程中确定多个矩阵输出中的每个矩阵输出的最大指数值,在第二逐行过程中确定多个矩阵输出中的每个矩阵输出的尾数值以及将最大指数值和尾数值存储在存储器设备中。最大指数寄存器722在第一逐行过程中可以用于存储最大指数值。
[0083] 在具体示例中,横杆转换器设备720配置为在第二逐行过程中对多个矩阵输出中的每个矩阵输出的尾数值执行移位过程和舍入过程。横杆设备360可以配置为在第二逐行过程中,在每行之后将尾数值写入存储器设备370。进一步地,横杆设备360可以配置为在第二逐行过程之后将最大指数值写入存储器设备370。横杆转换器设备720可以在反馈配置中耦合到OB设备340,以执行第一逐行过程和第二逐行过程。
[0084] 与图7A相比,图7B示出了列分块化转换器装置702的替代设备架构,其中,OB转换器设备710也包括耦合到横杆转换器设备720的最大指数寄存器712。代替列分块化转换器设备720,OB转换器设备710可以配置为在第一逐行过程中确定多个矩阵输出中的每个矩阵输出的最大指数值,并且将最大指数值存储在该第一最大指数寄存器712中。然后,横杆转换器设备720可以配置为将来自第一最大指数寄存器712的最大指数值存储在其第二最大指数寄存器722中,并且在第二逐行过程中为来自OB设备的多个矩阵输出中的每个矩阵输出确定尾数值。
[0085] 与第一架构类似,横杆转换器设备720可以配置为对多个矩阵输出中的每个矩阵输出的尾数值执行移位过程和舍入过程。并且,横杆设备360可以配置为在第二逐行过程之后将最大指数值写入存储器设备370。由OB转换器设备710和横杆转换器设备720执行的过程的进一步的细节参照图8A和图8B进行讨论。
[0086] 图8A是图示了根据本申请的示例的操作列分块化转换器装置的方法801的简化流程图。这种方法对应于图7A所示的装置701,其中,横杆转换器设备720配置为执行第一逐行过程和第二逐行过程。如图所示,方法801首先在OB转换器710处接收多个矩阵输出(N×M矩阵输出的瓦片,其中,N和M是整数)。在示例中,这些矩阵输出是来自矩阵乘法(例如,对于softmax函数)的结果(每行由“Data1”至“DataN”表示),OB转换器710将该结果转换为第一格式(由“D1‑F1”至“DN‑F1”表示)并且写入OB设备/组340(由“DN,M‑F1”表示)。考虑到64×64字节示例,行中64个元素中的每个元素都是BFP32‑1格式,OB转换器710将该格式转换为FP16格式。
[0087] 在这里,横杆转换器设备720读取OB组340,以执行第一逐行过程和第二逐行过程,从而分别确定最大指数值和尾数值。横杆转换器设备720一次一行地读取OB组340中所存储的数据的每一行,以确定每个条目的最大指数值并且更新最大指数寄存器722(例如,如果expi
[0088] 然后,转换器设备720在第二逐行过程中再次从OB组340读取每一行,以确定尾数值。对于OB组条目中的每个条目,转换器设备720可以执行移位过程和舍入过程,以将尾数值转换为期望格式(例如,整数格式或其他数值格式)。在64×64字节示例中,移位过程和舍入过程可以导致将尾数值转换为8位整数(int8)格式。在处理一行尾数(由“Man1”至“ManN”表示)之后,发送经过处理的数据,以写入存储器设备370。一旦所有行都被处理,列分块化配置中尾数到第二格式(由“DN,M‑F2”表示)的转换就完成了。关于之后发送的最大指数寄存器数据,存储器设备370将包含连续数据块,其中,每一列都是第二格式。在64×64字节矩阵数据示例中,连续块由65×64字节表征,并且每一列都是BFP16‑64格式。
[0089] 图8B是图示了根据本申请的示例的操作列分块化转换器装置的方法802的简化流程图。这种方法对应于图7B所示的装置702,其中,OB转换器设备710配置为使用其自己的最大指数寄存器712执行第一逐行过程,并且横杆转换器设备720配置为执行第二逐行过程。使用与方法801相同的表示,方法802首先在OB转换器710处接收多个矩阵输出(矩阵输出的瓦片)。在示例中,OB转换器设备710将输出转换为第一格式。在将每一行数据都转换为第一格式之后,OB转换器设备710还确定每个条目的最大指数值,并且更新最大指数寄存器712(例如,如果expi710处理之后,最大指数寄存器712包含瓦片的每一列的最大指数。考虑到64×64字节示例,行中64个元素中的每个元素都是BFP32‑1格式(32位浮点格式),OB转换器710将该格式转换为FP16格式(16位浮点格式)。
[0090] 然后,横杆转换器设备720从OB转换器寄存器712读取最大指数数据到其自己的最大指数寄存器722。与方法801类似,横杆转换器设备720在第二逐行过程中从OB组340读取每一行,以确定尾数值。转换器设备720也执行移位过程和舍入过程,以将尾数值转换为期望格式(例如,整数格式或其他数值格式)。在处理一行尾数之后,发送经过处理的数据,以写入存储器设备370。一旦所有行都被处理,列分块化配置中尾数到第二格式的转换就完成了。关于之后发送的最大指数寄存器数据,存储器设备370将包含连续数据块,其中,每一列都是第二格式。在64×64字节矩阵数据示例中,连续块由65×64字节表征,并且每一列都是BFP16‑64格式。
[0091] 虽然这些示例关于FP和BFP数值格式进行了讨论,但是列分块化转换器装置以及其方法可以应用于将数据从任何第一格式转换为可以由相应的指数和尾数值确定的任何第二格式。在计算共享块指数方面也有变化,例如,代替最大指数,可以使用百分位值。此外,在缓冲器存储器负载/存储逐列实施的情况下,可以使用本文中所描述的相同技术将逐列存储配置转换为逐行存储配置。本领域的普通技术人员将认识这些分块化转换方法和结构的其他变化、修改和替代。
[0092] 图9是图示了变压器和示例AI加速器装置之间的映射过程的简化框流程图。如图所示,变压器901包括多个变压器层910,每个变压器层都具有注意层902。在这种情况下,有16个注意头920(例如,BERT Large)计算前述注意函数。这16个注意头通过全局CPU 932映射到AI加速器装置903(与装置201和202类似)的16个切片930,以传递给瓦片CPU 934。
[0093] 根据示例,本申请提供了一种用于矩阵计算装置中的数据转换的方法和设备。在具体示例中,矩阵计算装置可以配置为乘法和累加(MAC)单元,该MAC单元充当点积和矩阵乘法硬件的关键构建块,该硬件用于加速深度神经网络推理应用,包括前述NLP工作负载。在这样的应用中,可能需要处理一种以上的数据格式。例如,高效的MAC实施方式通常是基于整数算法,这些实施方式支持固定点或块浮点(BFP)数值格式。然而,在某些应用中,需要MAC单元或其他矩阵计算装置具有处理浮点(FP)或脑浮点(Bfloat)数值格式的能力。
[0094] 因此,本申请提供了一种能够实现矩阵计算装置的方法和设备,该矩阵计算装置配置为通过将数据分割并且以矩阵计算装置中的本机格式并行处理分段数据部分,以目标格式处理矩阵数据。仅作为示例,本申请讨论作为8位整数(int8)格式的本机格式和作为16位浮点(FP16)格式的目标格式。本矩阵计算装置的实施例可以配置为AI加速器IC的IC,例如前述AI加速器系统。下面参照图10A和图10B讨论进一步的细节。
[0095] 图10A是图示了根据本申请的示例的矩阵计算装置1001的简化图。如图所示,类似于图3B的示例切片设备302,该装置1001可以配置有输入缓冲器(IB)1010设备、耦合到IB设备1010的计算设备1020(例如,DIMC设备)和耦合到计算设备1020的输出缓冲器(OB)设备1030。此外,单指令多数据(SIMD)设备1040可以耦合到OB设备1030。与切片设备302类似,这种装置1001可以配置在芯粒设备(参见图2A和图2B中的示例)中,该芯粒设备是AI加速器系统(参见图1A和图1B中的示例)的部分。
[0096] 在示例中,输入缓冲器(IB)设备1010配置为接收一个或多个矩阵输入(例如,从存储器设备等)。这种IB设备1010可以类似于前面所示的IB设备(例如,图3A和图3B)进行配置。每个这样的矩阵输入都可以由第一格式表征,并且至少具有第一输入部分和第二输入部分。这些输入部分是将由计算设备1020并行处理的矩阵输入的分段部分。根据实施例,矩阵输入可以具有多个输入部分,包括矩阵权重和激活部分(参见图10B)。
[0097] IB设备1010可以从配置为将(多个)矩阵输入转换为第一格式的输入转换器设备接收第一矩阵输入或第一格式的多个矩阵输入。这种输入转换器设备,例如CPU(例如,图2B所示的瓦片CPU 221)、耦合到IB设备1010的内嵌输入转换器1012(用虚线示出)等。参照前面的示例,(多个)矩阵输入可以是FP格式、Bfloat格式等。第一格式可以是BFP格式、固定点格式等。只要第一格式允许原始格式的矩阵数据的转换分割,也可以使用其他格式。
[0098] 仅作为示例,矩阵计算装置可以配置为以整数数值格式执行矩阵计算。在这样的情况下,计算装置可以配置为处理可以符合整数格式的数据部分中的矩阵输入。例如,多个计算单元中的每个计算单元都可以配置为进行int8格式的矩阵计算,并且矩阵输入可以是64×64字节瓦片配置中的FP16格式。在这种情况下,输入转换器设备(例如,瓦片CPU、内嵌输入转换器1012等)将FP16矩阵输入转换为24位块浮点(BFP24)格式,其中有16位尾数和8位指数。尾数然后可以分成两个8位部分,即最高有效字节(MSB)部分和最低有效字节(LSB)部分,以由计算设备1020并行处理。
[0099] 在示例中,计算设备1020包括多个计算单元1022,至少具有第一计算单元1022和第二计算单元1022。这对计算单元可以配置为对非本机格式的矩阵输入执行矩阵计算。更具体地,第一计算单元1022可以配置为至少使用第一输入部分确定第一矩阵输出,并且第二计算单元1022可以配置为至少使用第二输入部分确定第二矩阵输出。然后,计算设备1020可以配置为使用第一矩阵输出和第二矩阵输出确定第二格式的组合矩阵输出。在具体示例中,计算设备1020通过将第一矩阵输出移位并且将移位的第一矩阵输出添加到第二矩阵输出来确定组合矩阵输出。
[0100] 在示例中,矩阵输入中的每个矩阵输入都包括矩阵权重和矩阵激活。每个矩阵权重输入都可以包括矩阵权重指数和矩阵权重尾数。返回参考FP16示例,矩阵权重指数包括8位,并且矩阵权重尾数包括16位,这16位可以分为8位MSB部分和8位LSB部分。类似地,矩阵激活指数也包括8位,并且矩阵激活尾数也包括16位,这16位可以分为8位MSB部分和8位LSB部分。在这种情况下,计算设备使用矩阵激活和矩阵权重尾数的MSB部分,通过执行点积过程来确定第一矩阵输出。类似地,计算设备使用矩阵激活和矩阵权重尾数的LSB部分,通过执行点积过程来确定第二矩阵输出。
[0101] 虽然前面的示例只讨论了将矩阵输入数据分割成两个部分,但是其他示例可以将数据分割成由多个计算单元并行处理的多个数据部分。在这样的情况下,计算设备1020将使用类似的移位和添加过程来确定多个矩阵输出,以将这些矩阵输出组合成组合矩阵输出,其中,每个数据部分都以适当的顺序定位。这些部分也可以存储在与计算设备的本机格式相匹配的分段部分中。本领域的普通技术人员将认识对数据格式和数据分割的选择的其他变化、修改和替代。
[0102] 考虑到FP16示例,第一输入部分是MSB权重部分,而第二输入部分是LSB权重部分。第一计算单元1022配置为使用MSB部分确定第一矩阵输出,而第二计算单元1022配置为使用LSB部分确定第二矩阵输出。通过将MSB部分移位8位并且加上LSB部分,组合矩阵输出,如图10B所示。所得到的组合矩阵输出具有38位尾数(对于64×64矩阵)和8位指数,这可以被表示为BFP46‑1格式。
[0103] 在示例中,计算设备包括耦合到多个计算单元1022的对齐设备1024。对齐设备1024可以配置为使用组合输出确定第三格式的舍入矩阵输出。这种舍入过程可以用于为后续部分乘积精简(PPR)过程准备矩阵输出。在FP16示例中,BFP46‑1格式的组合矩阵输出可被舍入为BFP32‑1格式的矩阵输出。在另一个示例中,BFP46‑1组合矩阵输出可以通过对齐设备1024或耦合到对齐设备1024的数据转换器转换为FP32矩阵输出。
[0104] 在示例中,PPR设备1026耦合到对齐设备1024。PPR设备1026可以配置为使用舍入矩阵输出确定精简矩阵输出。PPR过程可以用于准备矩阵输出,以对原始数据格式(例如,FP16)进行后续转换,以存储在OB设备1030中。
[0105] 在示例中,计算设备1020还包括计算转换器1028,配置为使用前面的矩阵输出确定转换输出格式的第一转换矩阵输出。在FP16示例中,计算转换器1028将BFP32‑1格式的精简矩阵输出转换为FP16矩阵输出。在将组合矩阵输出转换为FP32格式的情况下,计算转换器1028将FP32格式的精简矩阵输出转换为FP16矩阵输出。
[0106] 在示例中,OB设备1030配置为存储所得到的转换矩阵输出。这种OB设备1030可以类似于前面所示的OB设备(例如,图3A和图3B)进行配置。如在FP16示例中对IB设备1010所讨论的那样,OB设备1030可以配置为将矩阵输出存储在64×64字节瓦片配置中。参照图10讨论矩阵数据转换和计算过程的附加细节。
[0107] 这种矩阵计算装置的实施例以及其相关方法可以提供许多好处。本方法和装置能够对不同数据格式的矩阵输入进行计算处理,这些数据格式可以被分割成与本机格式兼容的部分。此外,这种多格式能力可以在不需要完全独立的硬件和计算路径的情况下完成。进一步地,这些好处可以在IC芯片和芯粒设备中实现,而且硅面积的增加成本最小。
[0108] 图10B是图示了根据本申请的示例的在矩阵计算装置1002中使用数据分割和并行处理的数据格式转换方法的简化图。如图所示,装置1002包括IB设备1010和计算设备1020,该计算设备1020具有编号为0到N的多个计算单元1022、对齐设备1024、PPR设备1026和计算转换器1028。
[0109] 如前面的示例中所讨论的,每个矩阵输入都可以包括矩阵权重和矩阵激活。每个矩阵权重输入都可以包括矩阵权重指数和矩阵权重尾数。返回参考FP16示例,矩阵权重指数包括8位,并且矩阵权重尾数包括16位,这16位可以分为8位MSB部分和8位LSB部分。在这种情况下,矩阵激活指数也包括8位,并且矩阵激活尾数也包括16位,这16位可以分为8位MSB部分和8位LSB部分。
[0110] 在这种情况下,矩阵权重的第一部分(例如,MSB)存储在第一计算单元1022‑0(示出为IMC0)中,而矩阵权重的第二部分(例如,LSB)存储在第二计算单元1022‑4(示出为IMC4)中。计算设备1020使用矩阵激活和矩阵权重的第一部分,通过执行点积过程来确定第一矩阵输出,并且使用矩阵激活和矩阵权重的第二部分,通过执行点积过程来确定第二矩阵输出。然后,将第一矩阵输出移位(在FP16示例中移位了8位)并且添加到第二矩阵输出,以确定组合矩阵输出。
[0111] 随后,对齐设备1024可以从组合矩阵输出确定舍入矩阵输出,并且PPR设备1026可以从舍入矩阵输出确定精简矩阵输出。进一步地,计算转换器1028可以从精简矩阵输出确定转换矩阵输出。矩阵输出的流程图是在图10B中相对于计算设备1020的组件的虚线内示出的。
[0112] 如前所述,其他示例可以将数据分割成多个数据部分,这些数据部分由多个计算单元并行处理。在这样的情况下,计算设备1020将使用类似的移位和添加过程来确定多个矩阵输出,以将这些矩阵输出组合成组合矩阵输出,其中,每个数据部分都以适当的顺序定位。这些部分也可以存储在与计算设备(例如,配置为处理FP16矩阵输入的int8计算单元)的本机格式相匹配的分段部分中。进一步地,处理矩阵输出的步骤以及其各自的硬件组件可以根据应用添加、删除或重新排列。本领域的普通技术人员将认识对数据格式和数据分割的选择的其他变化、修改和替代。
[0113] 根据示例,本申请提供了一种用于矩阵计算装置中的数据压缩和解压缩的方法和设备。在具体示例中,矩阵计算装置可以配置为矩阵乘法计算装置(例如,MAC单元),配置为加速深度神经网络推理应用,包括前述NLP工作负载。在这样的应用中,需要改进对大数据大小的处理。例如,基于变压器的建模网络通常涉及大量元素(例如,权重、激活等),这些元素不能全部存储在片上存储器中。因此,访问这些元素需要频繁地从内存存储设备(例如,DDR)进行传输,这可能导致这些元素的处理因为此类内存操作的大延迟而变得受内存约束。
[0114] 因此,本申请提供了一种能够实现矩阵计算装置的方法和设备,该矩阵计算装置配置为处理以压缩格式存储的矩阵数据并且解压缩该数据以进行矩阵计算。仅作为示例,本申请讨论了36×64字节压缩块浮点(BFP)格式(表示为SBFP‑12‑16)的数据块,这些数据块解压缩成65×64字节BFP格式(表示为BFP16‑64)。本矩阵计算装置的实施例可以配置为AI加速器IC的IC,例如前述AI加速器系统。下面参照图11A和图11B讨论进一步的细节。
[0115] 图11A是图示了根据本申请的示例的矩阵乘法计算装置1101的简化图。如图所示,这种装置可以类似于图3A的示例切片设备301进行配置(参见前面对用相同参考数字表示的图3A元件的描述)。相反,装置1101包括耦合到横杆设备360的横杆转换器设备1110和耦合到计算设备330的权重缓冲器(WB)设备1120。在这里,转换器设备1110至少包括第一寄存器设备1112和第二寄存器设备1114。转换器设备1110可以配置为通过横杆设备360从存储器设备370解压缩数据,并且将数据发送给WB设备1120,以准备由计算设备330进行处理。
[0116] 在示例中,WB设备1120可以与输入缓冲器(IB)设备320一起配置为一个缓冲器设备。此外,横杆转换器设备1110、第一寄存器设备1112、第二寄存器设备1114和任何其他寄存器设备可以在每个计算路径312中一起或单独配置。可替代地,横杆转换器设备1110任意寄存器也可以配置在横杆设备360中,并且耦合到每个计算路径312。下面讨论操作该装置的方法的进一步的细节。
[0117] 根据示例,本申请提供了一种使用块压缩/解压缩操作矩阵乘法计算装置的方法。这种装置至少包括存储器设备,该存储器设备配置为存储第一格式的多个权重矩阵元素,该第一格式包括多个权重矩阵列。每个这样的列都包括多个比例因子和多个尾数块。在这种情况下,装置类似于图11A所示的装置1101进行配置。方法可以简单概括如下:
[0118] 1、由第一寄存器设备从存储器设备针对每个权重矩阵列接收多个比例因子;
[0119] 2、由转换器设备使用权重矩阵列的多个比例因子确定每个权重矩阵列的最大指数,从而产生多个最大指数;
[0120] 3、将多个最大指数存储在第二寄存器设备中;
[0121] 4、由第一寄存器设备从存储器设备针对每个权重矩阵列接收多个尾数块;
[0122] 5、由转换器设备使用多个权重矩阵列的多个比例因子和多个尾数块确定多个转换尾数块;
[0123] 6、由WB设备以第二格式接收多个权重矩阵元素,该第二格式包括多个转换尾数块和多个最大指数;
[0124] 7、由计算设备使用第二格式的多个权重矩阵元素确定多个矩阵乘法输出;
[0125] 8、由OB设备存储多个矩阵乘法输出;以及
[0126] 9、根据需要执行其他步骤。
[0127] 上面的步骤序列用于操作根据本申请的一个或多个实施例的为AI加速器装置配置的矩阵乘法计算装置。根据实施例,这些步骤中的一个或多个步骤可以组合或删除,或者可以添加其他步骤,而不脱离本文中的权利要求书的范围。本领域的普通技术人员将认识其他变化、修改和替代。这种方法的进一步的细节贯穿本说明书被提供并且在下面被更具体地提供。
[0128] 在示例中,每个尾数块都包括一个或多个尾数值,并且多个比例因子中的每个比例因子都与多个尾数块之一相关联。确定多个转换尾数块的步骤可以包括将每个尾数块的每个尾数与相关联的比例因子相乘,从而产生缩放尾数。这个步骤还可以包括将每个尾数块的每个缩放尾数移位,从而产生移位尾数。进一步地,这个步骤可以包括对每个尾数块的每个移位尾数进行舍入,从而产生舍入尾数。
[0129] 在示例中,第一格式的多个权重矩阵元素可以由36×64字节存储配置(例如SBFP12‑16格式)表征,并且第二格式的多个权重矩阵元素可以由65×64字节存储配置(例如BFP16‑64)表征。在SBFP12‑16的情况下,多个权重矩阵元素配置成64个权重矩阵列,以使每个权重矩阵列都包括四个8字节尾数块和四个1字节比例因子(总共36字节)。在具体示例中,多个比例因子(在SBFP12‑16格式中总是正数)中的每个比例因子都由无符号8位浮点(FP8)比例因子表示,该FP8比例因子包括4位指数字段和4位分数字段。可选的可编程指数偏差可以用于优化比例因子动态范围。对于每个FP8比例因子,有对应的8字节尾数,每个字节都存储两个4位整数(int4)尾数值(因此每个FP8比例因子共有16个4位尾数元素)。因此,65字节的BFP16‑64块可以压缩成四个SBFP12‑16块,总计36字节,压缩比为1.8056。
[0130] 再次参考SBFP12‑16,前面的方法可以包括在第一寄存器设备中读入4×64字节比例因子,这需要第一寄存器设备具有至少256字节的容量。然后,转换器设备可以计算四个比例因子的指数字段上的最大指数,并且将结果保存在第二寄存器设备中,这需要第二寄存器设备具有至少64字节的容量。然后,将每个64字节的尾数块行(每个都有两个4位尾数)读入第一寄存器设备,以确定转换尾数块。转换过程包括将每个4位尾数乘以其各自的FP8比例因子尾数值(5位整数,包括4个分数位和隐式1),然后将结果移位并且舍入为8位。相乘后得到9位尾数。移位和舍入过程的特征在于,首先将每个9位尾数移位一定数量,该数量是通过从4个块上的最大指数中减去尾数的块指数来计算的,然后将结果舍入为8位。可以将一行或多行转换尾数块发送给WB设备,并且在所有行的尾数块都被处理之后,可以将64字节的指数发送给WB设备,以完成对BFP16‑64格式的解压缩。在这里,我们假设矩阵乘法单元是为BFP16‑64数值格式设计的,因此需要从SBFP12‑16解压缩。当然,可以有其他变化、修改和替代。例如,SBFP块大小可以从16增加或减少,以权衡压缩比与压缩准确性。类似地,我们可以考虑SBFP尾数的不同位宽度以及比例因子的不同FP格式。
[0131] 图11B是图示了根据本申请的示例的矩阵乘法计算装置1102的简化图。如图所示,这种装置1102可以类似于图3B的示例切片设备302进行配置(参见前面对用相同参考数字表示的图3B元件的描述)。相反,装置1102包括耦合到内存内计算(IMC)模块332的WB设备1120。类似于IB设备320,WB设备1120也耦合到片上网络(NOC)设备342和存储器设备(由来自“GM”的输入表示)。如前所述,WB设备1120可以与IB设备320一起配置。
[0132] 虽然前面的示例讨论了权重矩阵元素,但是目前的压缩/解压缩实施也可以应用于其他矩阵元素,例如矩阵激活。在这种情况(参见图11A)下,横杆转换器设备1110耦合到横杆设备360和IB设备320,并且解压缩方法可以应用于存储器设备370中所存储的多个激活矩阵元素或输入矩阵元素。
[0133] 图11C是图示了根据本申请的示例的数据格式1103的简化图。如图所示,数据格式1103包括多个尾数块1132和多个比例因子1134。如前所述,这些尾数块和比例因子都可以配置为列,其中,每列都具有尾数块1132的部分和比例因子1134的部分。在其他应用中,块
1132和因子1134可以配置为行。
[0134] 在示例中,块1132配置在N×M阵列(由BN,M表示)中,并且因子1134配置在N×M阵列(由SN,M表示)中。在这里,整个阵列都包括在因子1134的阵列上配置的块1132的阵列,但是这个顺序可以颠倒。在逐行配置中,块1132和因子1134可以配置在整个阵列的右侧和左侧。根据应用,也可以使用其他配置。
[0135] 返回参考SBFP12‑16格式,每列都被配置为权重矩阵列,该权重矩阵列包括四个8字节尾数块和四个1字节比例因子。在这种情况下,每个尾数块行都包括64个尾数块,并且每个比例因子行都包括64个比例因子,这意味着矩阵数据格式总共包括4×64尾数块和4×64比例因子。如前所述,每个尾数块都包括2个int4尾数,并且每个比例因子都配置为FP8比例因子。当然,可以有其他变化、修改和替代。
[0136] 这种矩阵计算装置的实施例以及其相关方法可以提供许多好处。本方法和装置能够以压缩格式存储大量矩阵元素,该压缩格式可以在检索时解压缩以进行矩阵计算。此外,这种压缩—解压缩能力可以在不需要完全独立的硬件和计算路径的情况下完成。进一步地,这些好处可以在IC芯片和芯粒设备中实现,而且硅面积的增加成本最小。
[0137] 根据示例,本申请提供了一种配置为进行块压缩/解压缩的AI加速器装置。这种装置至少包括存储器设备(例如,DDR存储器),该存储器设备配置为以第一格式存储多个权重矩阵元素,该第一格式包括多个权重矩阵列。每个这样的列都包括多个比例因子和多个尾数块。装置也与耦合到存储器设备的一个或多个芯粒设备一起配置,并且每个芯粒设备都至少具有耦合到多个切片设备的CPU。
[0138] 在这种情况下,装置类似于图2A所示的装置201进行配置。每个芯粒设备都至少可以包括第一寄存器设备、第二寄存器设备和转换器设备,它们全部耦合到CPU。类似于前面的矩阵计算装置,转换器设备和寄存器设备可以一起或单独配置。在具体示例中,转换器设备和寄存器设备可以配置在调度设备222中。根据示例,使用块压缩/解压缩操作AI加速器装置的方法可以简单概括如下:
[0139] 1、由第一寄存器设备从存储器设备针对每个权重矩阵列接收多个比例因子;
[0140] 2、由转换器设备使用权重矩阵列的多个比例因子确定每个权重矩阵列的最大指数,从而产生多个最大指数;
[0141] 3、将多个最大指数存储在第二寄存器设备中;
[0142] 4、由第一寄存器设备从存储器设备针对每个权重矩阵列接收多个尾数块;
[0143] 5、由转换器设备使用多个权重矩阵列的多个比例因子和多个尾数块确定多个转换尾数块;
[0144] 6、由配置在多个切片设备中的多个存储器设备,接收第二格式的多个权重矩阵元素,该第二格式包括多个转换尾数块和多个最大指数;
[0145] 7、通过耦合到多个切片设备的多个计算设备,使用第二格式的多个权重矩阵元素确定多个矩阵乘法输出;以及
[0146] 8、根据需要执行其他步骤。
[0147] 上面的步骤序列用于操作根据本申请的一个或多个实施例的配置为进行块压缩/解压缩的AI加速器装置。根据实施例,这些步骤中的一个或多个步骤可以组合或删除,或者可以添加其他步骤,而不脱离本文中的权利要求书的范围。本领域的普通技术人员将认识其他变化、修改和替代。这种方法的进一步的细节贯穿本说明书被提供。
[0148] 虽然上面是对具体实施例的完整描述,但是可以使用各种修改、替代构造和等同物。作为示例,AI加速器装置和芯粒设备可以包括上述元件的任何组合以及本说明书之外的元件。因此,上面的描述和说明不应被视为限制本申请的范围,该范围由所附权利要求书定义。

当前第1页 第1页 第2页 第3页
相关技术
加速器装置相关技术
加速器集成电路相关技术
伊利亚·索洛维奇克发明人的其他相关专利技术