A Simple and Effective Pruning Approach for Large Language Models

TL;DR

Wanda通过输入激活与权重乘积实现无训练剪枝,显著优于传统幅值剪枝。

cs.CL 🔴 高级 2023-06-21 50 次浏览
Mingjie Sun Zhuang Liu Anna Bair J. Zico Kolter
神经网络剪枝 大规模语言模型 稀疏性 模型压缩 效率提升

核心发现

方法论

Wanda采用基于输入激活范数与权重幅值乘积的剪枝指标,逐输出单元局部比较权重重要性,无需再训练或二阶信息。其核心机制包括:• 计算每个权重对应输入激活范数与幅值的乘积作为重要性评分;• 按照预设稀疏比例在每个输出单元内排序剪除低重要性权重;• 仅需单次前向传播估算激活统计,极大降低计算复杂度。该方法结合了大规模语言模型中出现的高幅值特征,解决传统幅值剪枝在LLMs中的表现不佳问题。

关键结果

  • 在LLaMA和LLaMA-2模型上,Wanda在无训练条件下实现50%非结构化稀疏,准确率与稠密模型接近,且显著优于传统幅值剪枝(差距达20%以上)。在WikiText perplexity任务中,Wanda的表现优于幅值剪枝,LLaMA-7B模型的perplexity降至7.26,优于幅值剪枝的17.29。与SparseGPT相比,Wanda在保持性能的同时,计算成本降低了数百倍。
  • 结果显示,Wanda不仅在稀疏率达50%的情况下保持模型性能,还能在高稀疏率(如80%)下获得较优的语言建模效果,验证了稀疏子网络的存在与可行性。其在推理加速方面,通过结构化稀疏实现1.6倍左右的推理速度提升,极大增强了模型部署的实用性。
  • 此外,Wanda在不同模型规模和不同稀疏结构(如4:8和2:4)上均表现出良好的鲁棒性和适应性。通过微调(LoRA或全参数微调),性能差距得以进一步缩小,显示出稀疏子网络的潜力与可调性。

研究意义

该研究突破了大规模语言模型剪枝的瓶颈,提出无需再训练的高效稀疏化方案,为模型压缩与加速提供新思路。Wanda的简洁性与高效性使其适用于实际部署场景,推动LLMs在边缘设备和实时应用中的落地。其利用模型内部的特征分布特性,揭示了稀疏子网络的存在,为理解模型内部机制提供了新视角。未来,结合微调与结构优化,有望实现更大规模、更高性能的稀疏模型,促进AI技术的普及与应用。

技术贡献

Wanda在剪枝指标设计上创新性地结合了输入激活范数与权重幅值,提出逐输出单元的局部比较策略,显著降低计算复杂度(从二阶矩阵逆到简单点积)。其无需梯度或二阶信息,单次前向估算激活统计即可完成剪枝,突破了SparseGPT等方法的效率瓶颈。该方法的理论基础在于模型中出现的高幅值特征,利用其特性实现更精准的权重筛选。技术上,Wanda提供了一个简洁、快速、效果优异的剪枝方案,为大模型的稀疏化提供了新工具。

新颖性

Wanda的核心创新在于引入输入激活范数与权重幅值的乘积作为重要性指标,并在每个输出单元内局部排序剪除权重,区别于传统全局或层内剪枝策略。这一设计充分利用了LLMs中出现的高幅值特征,解决幅值剪枝在大模型中的性能退化问题。相比SparseGPT的二阶重构和Optimal Brain Damage的全局优化,Wanda更简洁高效,且无需训练或二阶逆矩阵计算,首次实现了在大规模预训练模型中的无训练高效稀疏化。

局限性

  • Wanda在极端高稀疏(如80%以上)时,模型性能仍有一定下降,尤其在少样本微调后效果有限。其依赖于校准数据的代表性,若激活统计偏差,可能影响剪枝效果。对于某些任务或模型结构,局部输出单元的剪枝策略可能不适用,导致性能下降。此外,结构化稀疏的性能提升受限于硬件支持和稀疏格式的优化,实际部署中仍需结合硬件特性优化。

未来方向

未来可结合微调策略,利用少量任务数据优化稀疏子网络性能。探索更复杂的剪枝指标,结合二阶信息或动态调整稀疏比例。研究不同模型架构(如Transformer变体)对Wanda的适应性,推动稀疏模型在多任务、多模态场景中的应用。进一步优化结构化稀疏的硬件加速方案,提升实际推理速度与能效。

AI 总览摘要

近年来,大规模语言模型(LLMs)在自然语言处理领域取得了突破性进展,但其庞大的参数规模带来了巨大的计算与存储成本。传统的模型压缩技术如量化和剪枝在小模型中表现良好,但在亿级参数的LLMs中,效果有限且难以实现高效无训练剪枝。本文提出了一种名为Wanda的剪枝方法,基于输入激活范数与权重幅值的乘积指标,逐输出单元局部比较权重重要性,无需再训练或二阶信息。该方法充分利用了LLMs中出现的高幅值特征,显著提升了剪枝效果。实验在LLaMA和LLaMA-2模型上验证了Wanda的优越性,50%的非结构化稀疏模型在保持性能的同时,准确率与稠密模型接近,perplexity指标也大幅改善,优于传统幅值剪枝和SparseGPT。更重要的是,Wanda的计算复杂度极低,单次前向传播即可完成剪枝,大大降低了剪枝成本。通过结构化稀疏,模型推理速度提升约1.6倍,显示出良好的实际应用潜力。未来,结合微调与硬件优化,Wanda有望推动大模型的高效部署,促进AI技术的普及。该研究为大模型稀疏化提供了新思路,开启了无训练高效剪枝的新篇章。

深度分析

研究背景

近年来,随着Transformer架构的普及,大规模预训练语言模型(如GPT、BERT、LLaMA)在多个任务中表现出色,但其参数规模不断扩大,带来了计算、存储和能耗的巨大挑战。传统的模型压缩技术包括量化、剪枝和稀疏化,已在小模型中取得一定成功,但在亿级参数的LLMs中,效果受限。剪枝方法如Magnitude、Optimal Brain Damage(OBD)、SparseGPT等,虽然在小模型中表现优异,但在大模型中面临效率瓶颈,尤其是需要复杂的二阶信息或再训练。近年来,研究发现LLMs中出现了大量高幅值特征,揭示了模型内部的稀疏性潜力,为无训练剪枝提供了新可能。

核心问题

大规模预训练模型的剪枝面临两个核心难题:一是传统幅值剪枝在LLMs中效果不佳,导致性能严重下降;二是高效剪枝方法需在不再训练的前提下,快速找到稀疏子网络。现有方法如SparseGPT虽然不需再训练,但计算复杂度高,难以在实际应用中快速部署。此外,模型内部的特殊特性(如大幅值激活)未被充分利用,限制了剪枝效果。解决这些问题,既要保证剪枝效率,又要保持模型性能,是当前研究的重点。

核心创新

本研究提出的Wanda方法具有三大创新:• 利用输入激活范数与权重幅值的乘积作为重要性指标,结合模型内部特征分布,提升剪枝的准确性;• 在每个输出单元内局部比较权重,避免全局剪枝带来的性能损失;• 仅用单次前向传播估算激活统计,极大降低计算成本。相较于SparseGPT的二阶重构和OBD的全局优化,Wanda简洁高效,适合大规模模型的快速稀疏化,且无需再训练或二阶逆矩阵计算。

方法详解

  • �� 计算每层输入激活的范数(∥Xj∥2)作为激活重要性指标;• 对每个线性层的每个输出单元(行)内,计算每个权重的乘积评分:|Wij|·∥Xj∥2;• 按照预设稀疏比例,将低评分的权重剪除;• 只需一次前向传播获取激活统计,无需再训练或微调;• 适应结构化N:M稀疏,通过每M个连续权重内的评分进行筛选。

实验设计

在LLaMA和LLaMA-2模型上,采用128序列校准数据,评估不同稀疏比例(50%、80%)的性能。对比幅值剪枝和SparseGPT,指标包括准确率和perplexity。通过零样本任务和语言建模验证,Wanda在保持模型性能的同时实现高稀疏率,表现优异。结构化稀疏在推理速度提升方面也显示出明显优势。

结果分析

Wanda在50%非结构化稀疏下,LLaMA-7B模型的准确率从66.97%降至接近稠密模型,且perplexity降至7.26,远优于幅值剪枝的17.29。在结构化稀疏中,性能仍优于传统方法。推理加速方面,结构化2:4稀疏实现了1.6倍推理速度提升。微调后,性能差距进一步缩小,验证了稀疏子网络的存在和可调性。

应用场景

Wanda可用于模型部署中的快速剪枝,尤其适合边缘设备和实时应用。无需再训练,节省大量时间和资源。结合微调策略,还能恢复或提升模型性能,适应多任务场景。未来结合硬件优化,有望实现更高效的推理加速和能耗降低。

局限与展望

当前方法在极高稀疏率下性能仍有下降,且依赖校准数据的代表性。局部输出单元剪枝策略可能不适用于所有模型架构,硬件支持不足也限制了结构化稀疏的实际效果。未来需结合模型微调和硬件优化,提升鲁棒性与实用性。

通俗解读 非专业人士也能看懂

想象你在整理一个大型仓库,里面堆满了各种商品。每次你需要搬运一部分商品,但仓库太大,搬运太费劲。于是,你决定只搬那些最常用、最重要的商品,把其他的暂时放一边。Wanda就像这个整理师,它会看仓库里的商品(模型中的权重)和你每天用的商品清单(激活),判断哪些商品是最常用的(重要的),然后把不常用的商品(低重要性权重)暂时收起来。这样,仓库变得更小、更轻,但你还能用它完成大部分任务。这种方法不用重新整理仓库,只是简单地把不重要的商品藏起来,既省时间,又能保持仓库的功能。

简单解释 像给14岁少年讲一样

想象你有一个超级大的玩具箱,里面装满了各种玩具。有时候,你只想玩一些最喜欢的玩具,但箱子太满,拿起来很麻烦。于是,你决定只留下你最喜欢的玩具,把其他的放到一边。Wanda就像这个聪明的朋友,它会帮你挑出最喜欢的玩具(重要的玩具),把不常玩的玩具藏起来。它不用拆箱,也不用买新玩具,只是简单地挑选出最重要的那部分。这样,你的玩具箱变得更轻、更方便拿取,还能玩到大部分喜欢的游戏。这就像模型剪枝一样,把不重要的部分“藏起来”,让模型变得更快、更小,但还能做很多事情。

术语表

Magnitude Pruning (幅值剪枝)

一种根据权重绝对值大小剪除部分连接的技术,简单高效,适合小模型,但在大模型中效果有限。

论文中提到的传统剪枝方法,用于比较基准性能。

Input Activation Norm (输入激活范数)

衡量输入特征强度的指标,常用L2范数,反映特征的重要性,用于指导剪枝。

Wanda利用激活范数结合幅值进行权重重要性评估。

SparseGPT

一种基于二阶重构的无训练剪枝方法,计算复杂,效果优异但成本较高。

论文中作为Wanda的对比基线。

N:M Structured Sparsity (结构化N:M稀疏)

每M个连续权重中最多N个非零,用于硬件加速,兼顾性能与速度。

Wanda可扩展到结构化稀疏以提升推理速度。

开放问题 这项研究留下的未解疑问

  • 1 如何进一步结合微调策略提升稀疏模型的泛化能力,仍是未来研究的关键。当前方法在极高稀疏率下性能下降,需探索更鲁棒的指标和优化策略。
  • 2 硬件支持和软件框架对结构化稀疏的优化仍有限,未来需结合硬件设计实现更高效的推理加速。
  • 3 不同模型架构(如Transformer变体)对Wanda的适应性和效果还未充分验证,未来需系统性研究其泛用性。

应用场景

近期应用

模型部署优化

在边缘设备或云端部署大模型时,利用Wanda快速剪枝,减少存储和计算需求,提升推理速度,适合实时应用。

模型压缩与加速

在模型训练后快速得到稀疏子网络,无需再训练,节省时间和资源,便于大规模模型的普及。

远期愿景

高效稀疏硬件架构

结合Wanda的稀疏策略,设计专用硬件加速器,实现模型推理的极致速度和能效,推动AI普及到边缘设备。

原文摘要

As their size increases, Large Languages Models (LLMs) are natural candidates for network pruning methods: approaches that drop a subset of network weights while striving to preserve performance. Existing methods, however, require either retraining, which is rarely affordable for billion-scale LLMs, or solving a weight reconstruction problem reliant on second-order information, which may also be computationally expensive. In this paper, we introduce a novel, straightforward yet effective pruning method, termed Wanda (Pruning by Weights and activations), designed to induce sparsity in pretrained LLMs. Motivated by the recent observation of emergent large magnitude features in LLMs, our approach prunes weights with the smallest magnitudes multiplied by the corresponding input activations, on a per-output basis. Notably, Wanda requires no retraining or weight update, and the pruned LLM can be used as is. We conduct a thorough evaluation of our method Wanda on LLaMA and LLaMA-2 across various language benchmarks. Wanda significantly outperforms the established baseline of magnitude pruning and performs competitively against recent method involving intensive weight update. Code is available at https://github.com/locuslab/wanda.

cs.CL cs.AI cs.LG