手把手教你剪羊驼,陈团队提出LLM-Shearing大模型修剪法,《机心报告》
日期:2023-10-17 14:51:52 / 人气:356
剪羊驼2(羊驼)模型效果如何?今天,普林斯顿大学的陈团队提出了一种大规模模型剪枝方法,称为LLM-Shearing,可以在几乎没有计算和成本的情况下获得比同规模模型更好的性能。
自大规模语言模型(LLM)出现以来,它们在各种自然语言任务中取得了显著的成绩。但是大规模的语言模型需要海量的计算资源来训练。因此,业界对构建同样强大的中型模型越来越感兴趣,美洲驼、MPT和猎鹰出现了,它们实现了高效的推理和微调。
这些不同大小的LLM适用于不同的用例,但是从零开始训练每个单独的模型(即使是10亿个参数的小模型)仍然需要大量的计算资源,这对于大多数科研机构来说仍然是一个很大的负担。
因此,在这篇论文中,普林斯顿大学的陈团队试图解决以下问题:能否利用现有的预训练LLM,以比从头训练少得多的计算量,构建一个更小的、通用的、有竞争力的LLM?
研究人员探索使用结构化修剪来实现这一目标。这里的问题是,对于一般的LLM,剪枝后的模型性能会下降,尤其是剪枝后没有很多计算投入的时候。他们使用的高效剪枝方法可以用来开发规模更小但性能仍然具有竞争力的LLM,训练所需的计算量相比从零开始训练大大减少。
地址:https://arxiv.org/abs/2310.06694.
代码地址:https://github.com/princeton-nlp/LLM-Shearing
剪羊毛美洲驼-1.3B,剪羊毛美洲驼-2.7B
在修剪LLM之前,研究人员确定了两个关键的技术挑战。一个是如何确定性能强、推理高效的最终剪枝结构。LLM目前的结构化剪枝技术没有指定的目标结构,导致剪枝后的模型性能和推理速度不尽人意。二、如何继续对剪枝模型进行预训练,以达到预期的性能?他们观察到,与从头开始训练模型相比,使用原始预训练数据进行训练将在不同领域导致不同的损失减少。
针对这两个挑战,研究人员提出了“LLM-shearing”算法。这种新的剪枝算法被称为“定向结构化剪枝”,它将源模型剪枝到指定的目标架构中,该架构由现有预训练模型的配置决定。他们说剪枝法是在源模型中搜索子结构,在资源有限的情况下最大限度地保持性能。此外,设计了动态批量加载算法,可以根据丢包率按比例加载各个域的训练数据,从而高效利用数据,加速整体性能提升。
最后,研究人员将LLMA 2-7b模型剪枝为两个更小的LLM,即剪切LLMA-1.3b和剪切LLMA-2.7b,这证明了该方法的有效性。
他们只使用500亿token(即OpenLLaMA预训练预算的5%)进行剪枝和继续预训练,但对于11个有代表性的下游任务(如常识、阅读理解和世界知识)和以开放方式生成的指令调整,这两个模型的性能仍然优于其他同规模的流行LLM,包括皮媞亚、煽动和OpenLLaMA。
不过需要提到的是,这篇论文发表的时候,3B最强开源模型的记录已经被StableLM-3B打破了。
此外,下游任务的性能轨迹表明,使用更多的token来进一步训练剪枝模型将带来更大的好处。研究人员只对多达70亿个参数的模型进行了实验,但LLM-shearing具有很高的通用性,可以在未来的工作中扩展到任何规模的大规模语言模型。
方法介绍
给定一个现有的大模型M_S(源模型),本文的目标是研究如何有效地生成一个更小更强的模型M_T(目标模型)。研究认为,这需要两个阶段来完成:
第一阶段,将M_S剪枝为M_T,减少了参数数量,但不可避免地导致性能下降。
第二阶段,不断对M_T进行预训练,使其性能更强。
结构化剪枝
结构化剪枝可以去除模型的大量参数,从而达到压缩模型、加速推理的效果。然而,现有的结构修剪方法会导致模型偏离常规架构的配置。例如,CoFiPruning方法生成的模型具有非统一层配置,与标准的统一层配置相比,会产生额外的推理开销。
本文扩展了协同裁剪,允许源模型被裁剪为任何指定的目标配置。例如,本文在生成2.7B模型时使用ignite-base-3b架构作为目标结构。
此外,本文还学习了一组不同粒度的模型参数剪枝掩码,掩码变量如下:
每个掩码变量控制是删除还是保留相关的子结构。例如,如果对应的z^layer=为0,就需要删除这一层。下面的图2说明了修剪掩码如何控制修剪的结构。
剪枝后,本文通过保留每个子结构中与掩码变量相关的最高分组件,最终确定剪枝后的架构,并继续用语言建模目标对剪枝后的模型进行预训练。
动态批量加载
本研究认为有必要对剪枝后的模型进行大量的预训练,以恢复模型性能。
受其他研究的启发,本文提出了一种更有效的算法,即动态批量加载,该算法可以简单地根据模型性能动态调整域比例。算法如下:
实验和结果
模型配置:本文以LLaMA2-7B模型为源模型,然后进行结构剪枝实验。他们将LLaMA2-7B压缩成2.7 B和1.3B两个更小的目标尺寸,并将裁剪后的模型与相同尺寸的模型进行性能比较,包括OPT-1.3B、皮媞亚-1.4B、OPT-2.7B、皮媞亚-2.8B和indire-。表8总结了所有这些模型的模型架构细节。
数据:因为LLaMA2的训练数据不公开,所以本文使用了RedPajama数据集。表1提供了该模型和基线模型中使用的训练前数据。
培训:研究人员在所有实验中使用了多达16个Nvidia A100 GPU (80GB)。
剪过毛的羊驼优于同样大小的LM。
本文表明,sheered-LLaMA明显优于现有的类似规模的LLM,并且只有一小部分计算预算用于从零开始训练这些模型。
下游任务:表2显示了在零样本和少量样本的情况下,剪切美洲驼和类似大小的现有预训练模型在下游任务中的性能。
指令调优:如图3所示,与其他所有同规模的预训练模型相比,带指令调优的sheered-LLaMA取得了更高的胜率。
图4显示,INCITEBase-3B模型的准确性在开始时要高得多,但在持续的预训练过程中,其性能趋于稳定。
分析
最后,分析了该方法的优点。
动态批量加载的有效性
其中,研究者从以下三个方面分析了动态批量加载的有效性:(1)跨域的最终LM丢失,(2)整个训练过程中每个域的数据使用情况,(3)下游任务的性能。这些结果都是基于Sheared-LaMA-1.3B算法。
跨域损耗差。动态批量加载的目的是平衡各域的降损率,使损耗在大致相同的时间内达到参考值。模型损耗(原始批量加载和动态批量加载)和参考损耗之间的差异如图5所示。相比之下,动态批量加载可以均匀地降低损耗,各个域的损耗差异也很相似,说明数据使用效率更高。
数据使用。表3比较了RedPajama的原始数据比率和动态加载的域数据的使用情况(图7显示了整个训练过程中域权重的变化)。与其他域相比,动态批量加载增加了图书和C4域的权重,这表明这些域更难恢复剪枝模型。
下游性能。如图6所示,与在原始RedPajama分布上训练的模型相比,通过动态批量加载训练的剪枝模型取得了更好的下游性能。这表明,动态批量加载带来的更均衡的损耗降低可以改善下游性能。
与其他修剪方法的比较
此外,研究者将LLM-shearing方法与其他剪枝方法进行了比较,并报告了验证混淆程度,这是衡量整体模型能力的有力指标。
由于计算的限制,下面的实验控制了所有比较方法的总计算预算,而不是将每个方法运行到底。
如表4所示,在相同的稀疏度下,本文的目标剪枝模型的推理吞吐量高于非均匀剪枝协同推理模型,但混淆程度略高。
其他分析
表5表明,在控制令牌总量的情况下,增加剪枝代价可以不断改善混淆度。然而,由于剪枝比连续预训练更昂贵,研究人员分配了0.4B令牌进行剪枝。
更多研究细节,请参考原论文。"
作者:杏彩娱乐
新闻资讯 News
- 《穿越怒海》揭露了“爱学习”的...12-04
- 谍战片《刀尖》在信仰版之后曝光...12-04
- 导演雷神3:诸神的黄昏:我是为了...12-04
- 九年来,迪士尼首次在没有电影的...12-04