加州大学颠覆性架构,13瓦功耗,大模型告别GPU

AI快讯 2024-07-23

一直以来,矩阵乘法(MatMul)都是大语言模型(LLM)计算量的“吞金兽”,没有大量GPU集群的支持,大模型训练简直寸步难行。随着LLM规模的不断扩大,MatMul带来的内存占用和延迟问题也愈发严重,让不少开发者望而却步。

为了解决这个难题,加州大学圣克鲁兹分校、苏州大学和加州大学戴维斯分校的研究人员联手打造了一种开创性的架构,完全摒弃了语言模型中的矩阵乘法。这项技术不仅能让大模型的性能保持在高水平,还大幅降低了对内存的依赖,堪称LLM发展史上的里程碑!

实验数据不会说谎: 在27亿参数规模下,这种无MatMul模型的性能竟能与需要更多内存的顶级Transformer模型媲美!更令人惊喜的是,研究人员还开发了一种高效的GPU实现方案,将训练时的内存使用量锐减61%!通过优化推理内核,推理时的内存消耗更是降至原来的十分之一以下,速度也提升了4.57倍!

更令人振奋的是,这项研究还展示了一种基于FPGA的定制硬件解决方案,在处理十亿参数规模模型时,功耗仅为13瓦,堪比人脑的效率!

这项技术究竟是如何实现的?

核心技术解密

1. 三元权重:加减法也能玩转大模型

image.png

传统神经网络中,计算输入数据和权重的乘积需要进行大量的矩阵乘法,耗时耗力。为了简化计算,研究人员引入了“三元权重”的概念。简单来说,就是将权重值限定在-1、0和+1三种,这样在计算时就只需要进行简单的加减法操作:

权重为+1:将对应输入值加到结果中

权重为-1:将对应输入值从结果中减去

权重为0:直接忽略该输入值

通过这种巧妙的转换,复杂的乘法操作被化繁为简,计算复杂度和成本也随之大幅降低。

2.  优化GRU:与自注意力机制说再见

为了彻底摆脱矩阵乘法,研究人员还对循环神经网络(GRU)进行了优化,用其替代了需要大量矩阵乘法的自注意力机制。

删除隐藏状态相关权重: 去掉GRU中与隐藏状态相关的权重矩阵,简化模型结构。

逐元素操作: 使用逐元素乘积(即每个元素分别相乘)替代矩阵乘法。

数据依赖的输出门:  添加一个输出门,根据输入数据动态控制输出,提升模型的灵活性和效率。

经过优化的GRU模型完全不需要进行矩阵乘法操作,计算复杂度得到进一步降低。

3. 硬件效率提升:数据搬运也要精打细算

在计算过程中,数据需要在内存和处理器之间来回传输,这会消耗大量时间。为了提高效率,研究人员设计了一种融合算法,将多种操作(如标准化和量化)整合到一次计算中完成。

标准化:  对输入数据进行均值和方差计算,使其标准化。

量化:  将标准化后的数据转换为整数形式,降低计算复杂度。

计算输出: 使用量化后的数据进行加减法操作,得到最终输出。

这种融合算法减少了数据传输次数,有效提升了整体计算速度。

4.  GPU和FPGA优化:软硬兼施,效率更上一层楼

除了算法层面的优化,研究人员还在硬件层面进行了改进:

GPU优化: 使用融合内核,将多个操作合并到一个内核中执行,减少内存访问次数,提升计算速度。

FPGA加速器: 构建了一种专用的硬件加速器,专门用于处理三元权重和逐元素操作,大幅降低功耗和计算时间。

5. 训练技巧:让模型训练更快速、更稳定

为了进一步提升模型性能,研究人员还采用了一些训练技巧:

代理梯度:  针对训练过程中出现的不可微操作(如取整和截断),使用代理梯度方法,确保模型能够持续学习。

较大的学习率:  使用较大的学习率可以加快模型的收敛速度,更快找到最佳参数。

学习率调度器:  采用余弦调度器,在训练过程中逐步降低学习率,提升模型训练的稳定性。

6. 硬件实现:打造低功耗、高性能的硬件平台

研究人员在FPGA上实现了这一全新语言模型,并设计了四个主要功能模块:

行操作单元:  执行加法、减法、乘法和除法等基本操作。

均方根单元:  计算输入数据的均方根,用于标准化处理。

加载存储单元:  负责数据的读取和存储操作。

三元矩阵乘法单元:  专门处理三元权重的矩阵乘法操作。

通过这些功能模块,FPGA可以高效执行语言模型的计算任务,在保证高性能的同时降低能耗。

实验结果:性能炸裂,效率爆表!

研究人员进行了一系列实验,验证了无矩阵乘法(MatMul-free)语言模型在性能和效率方面的优越性:

1. 性能对比:不输传统Transformer

image.png

将无MatMul模型与目前最先进的Transformer模型进行对比,发现在不同规模(3.7亿、13亿和27亿参数)的模型在多项基准任务上的表现都毫不逊色。

3.7亿参数模型: 无MatMul模型在部分任务上的性能略低于Transformer模型,但差距不大。

13亿参数模型:  无MatMul模型的性能与Transformer模型相近,在部分任务上甚至更胜一筹。

27亿参数模型:  无MatMul模型在多个任务上都超越了Transformer模型,展现出强大的性能优势。

2. 内存和计算效率:省内存、速度快

训练时内存使用: 无MatMul模型在训练时减少了高达61%的内存消耗。

推理时内存使用: 无MatMul模型在推理时的内存消耗比未经优化的模型减少了10倍以上。

计算速度: 在训练时,无MatMul模型的计算速度比传统模型快了25.6%。在推理时,速度提升了4.57倍。

3. 扩展性:未来可期

研究人员还发现,无MatMul模型在利用更多计算资源来提升性能方面更为高效。

无MatMul模型的性能曲线比传统Transformer更为陡峭,意味着在增加计算资源时,其性能提升速度更快。

当计算规模达到一定程度(例如Llama-3 80亿或Llama-2 700亿的训练计算量)时,无MatMul模型的性能有望超越传统Transformer模型。

4. 硬件实现:低功耗,高效率

image.png

在FPGA实现中,无MatMul模型展现出极低的动态功耗和较高的计算效率。

单核实现: 在单核情况下,无MatMul模型的前向传播时间为43毫秒(d=512),时钟频率为60MHz。

多核实现:  通过并行化和优化,预计速度可提高64倍,计算时间和功耗将大幅降低。

总结:开启大模型发展新篇章

总而言之,无MatMul语言模型在性能和效率上都具有显著优势:

性能强劲:  在不同规模的模型上,无MatMul模型与传统Transformer模型性能相当,甚至在部分任务上更胜一筹。

效率惊人: 无MatMul模型在训练和推理时都表现出极高的计算效率和内存利用率。

扩展性强:  无MatMul模型在增加计算资源时表现出更高的性能提升速率,拥有巨大的发展潜力。

@版权声明:部分内容从网络收集整理,如有侵权,请联系删除!

相关文章