一文读懂大模型剪枝:轻量级AI如何领跑未来科技

 5e0f904bce9af6c0a45506ab11ab2845.jpeg

大模型剪枝概述

   

近年来,Transformer和MOE架构的崛起,推动了深度学习模型参数规模的飙升,轻松突破上万亿。面对模型日益庞大的挑战,大模型压缩技术应运而生。该技术旨在降低模型部署成本,提升推理性能。主要压缩方法包括剪枝、量化、知识蒸馏等,为深度学习应用带来更广阔的前景。

  • 模型剪枝(Pruning)
  • 知识蒸馏(Knowledge Distillation)
  • 模型量化(Quantization)
  • 低秩分解(Low-Rank Factorization)

本文将针对当前大模型剪枝相关的一些工作进行讲述。


剪枝简介

模型剪枝是优化神经网络的关键技术,旨在精简模型并提升运算速度。该技术通过精准识别并剔除对性能贡献较小的参数或连接,有效减少模型参数数量和计算量,让神经网络更加高效、轻盈,为深度学习应用注入新活力。

模型剪枝主要涵盖两种类型:结构化剪枝与非结构化剪枝。结构化剪枝更注重整体结构的优化,而非结构化剪枝则关注个体元素的精简。两者相辅相成,共同助力模型的高效压缩与性能提升。

结构化剪枝与非结构化剪枝的核心差异在于剪枝的目标及所得网络结构。结构化剪枝遵循特定规则,删除连接或层结构,保持网络整体架构;而非结构化剪枝则针对各个参数进行剪枝,形成不规则的稀疏结构。两者各有特点,适用于不同场景。

模型剪枝的一般步骤包括:

  1. 训练初始模型:首先,需要训练一个初始的大模型,通常是为了达到足够的性能水平。
  2. 精准评估参数重要性,利用权重的绝对值、梯度信息等先进方法,深入剖析模型各参数作用,为优化决策提供有力支撑。
  3. 剪枝:根据评估结果,剪枝掉不重要的参数或连接,可以是结构化的或非结构化的。
  4. 修正和微调:进行剪枝后,需要进行一定的修正和微调,以确保模型的性能不会显著下降。

模型剪枝益处颇丰,能显著降低存储需求,提升推理速度,减少边缘设备资源消耗。然而,剪枝过程可能引发性能微损,故需在剪枝前后精准评估、精细调整,确保性能与效率双重优化。专业剪枝,让模型更轻量、更高效!

深入探讨LLMs与剪枝技术融合策略,旨在攻克LLMs庞大体积与高昂计算成本难题,实现高效资源利用与性能优化。

非结构化剪枝方法

非结构化剪枝简化LLM,通过删除低于阈值的特定参数实现,专注于单个权重或神经元。然而,它忽视LLM整体结构,造成不规则稀疏模型。这种不规则性需专业压缩技术以有效存储和计算剪枝后模型,因此,虽然剪枝简化了LLM,但其不规则性却增加了后续处理的复杂性。

非结构化修剪通常涉及对 LLM 进行大量重新训练以重新获得准确性,这对于LLMs来说尤其昂贵。

该领域的一种创新方法是 SparseGPT(论文:SparseGPT: Massive Language Models Can be Accurately Pruned in One-Shot)。它引入了一种不需要重新训练的一次性剪枝策略。该方法将剪枝视为广泛的稀疏回归问题,并使用近似稀疏回归求解器对其进行求解。SparseGPT 实现了显著的非结构化稀疏性,在 OPT-175B 和 BLOOM-176B 等大模型上甚至高达 60%,而困惑度的增加很小。

29d45d8d8b50f95954e469e14f15a771.jpeg

Syed等人[Syed et al., 2023]开创性地提出一种迭代剪枝技术,该技术能在剪枝过程中以最小训练步骤微调模型,从而显著提升模型效率,为深度学习领域带来革命性的进步。

ec553df58c76774aa07eb5a93ce90075.jpeg

LoRAPrune是一项前沿优化技术,巧妙融合了参数高效调整(PEFT)与剪枝策略,旨在强化下游任务性能。该技术独辟蹊径,采用一种创新的参数重要性评估标准,结合了低秩自适应(LoRA)的数值与梯度信息。通过精准识别并剪除冗余参数,LoRAPrune不仅提升了模型效率,更在保持甚至增强性能的同时,显著降低了计算与存储成本。这一创新成果,无疑为深度学习领域注入了新的活力,引领着参数优化技术的发展方向。

0424eb1b8162a5c9f9eacc59461d8e2e.jpeg

Wanda在最新论文中提出了针对SparseGPT资源密集型权重更新问题的创新剪枝指标。该指标基于权重大小与对应输入激活范数的乘积,结合小型校准数据集进行精准评估。通过局部比较线性层输出内的权重,Wanda能够精准识别并移除LLMs中的低优先级权重。这一方法不仅简化了剪枝过程,还提高了剪枝效率,为大型语言模型的优化提供了有效的新途径。

ef64c18ef3ea205dd27b750a9c2eaa53.jpeg

通过观察到 LLM 推理性能和内存使用量很大程度上受到下图四种类型的 Skinny MatMul 的限制。因此,Flash-LLM 旨在基于称为“稀疏加载和密集计算”(LSCD) 的关键方法来优化四个 MatMul。Flash-LLM 作为另一个用于非结构化模型剪枝的大语言模型推理加速方法。主要包含基于Tensor-Core加速的非结构化稀疏矩阵乘法计算的高效GPU代码,可以有效加速LLM中常见矩阵计算的性能。使用Flash-LLM,修剪后的LLM模型可以以更少的内存消耗部署到GPU上,并且可以更高效地执行。

21588335b2bd052aef61a6a3c0eba3b9.jpeg


结构化剪枝方法

结构化剪枝,通过精准剔除神经元、通道或层等结构组件,有效简化LLM。此法针对整组权重,不仅大幅降低模型复杂性与内存消耗,更巧妙维持LLM整体结构的完整性。优化而不失精髓,为LLM发展注入新活力。

这个领域的一个例子是 LLM-Pruner(论文:LLM-Pruner: On the Structural Pruning of Large Language Models),它采用通用方法来压缩 LLMs,同时保护其多任务解决能力和语言生成能力。此外,LLM-Pruner 还解决了 LLMs 使用大量训练数据带来的挑战,这可能导致大量的数据传输。

为了克服这些挑战,LLM-Pruner 结合了依赖性检测算法来查明模型中相互依赖的结构。它还实现了一种有效的重要性估计方法,该方法考虑一阶信息和近似的 Hessian 信息。该策略有助于选择最佳的组用于剪枝,从而改进压缩过程。

6772498afbaf0ec01e62f4e295e9b12c.jpeg

能否利用现有预训练LLMs,创造更小、通用且竞争力强的LLM,同时减少从头训练所需的计算量?LLM-Shearing提出了一种新颖的结构化剪枝方法,包含两种技术,旨在实现这一目标。此方法不仅优化了模型大小,还提升了其通用性和竞争力,为AI领域带来革命性的突破。

  • 动态批量加载技术,灵活应对修剪引发的跨域信息变动。本方法旨在优化缓慢域的加载速度,通过动态调整加载比例,实现更高效的数据加载。

54c6d87bb7b00859148f36a5b7bbb73c.jpeg

经过对推理、阅读理解、语言建模及知识密集型任务等多维度下游任务的全面评估,我们研发的Sheared-LLaMA模型展现出卓越性能,显著超越现有大语言模型,为自然语言处理领域带来新突破。

d3ac25bf0bd26f92bafe92e42bcee32c.jpeg

结语

本文概述了大模型剪枝的研究进展,随着大模型参数量剧增,剪枝技术对于降低模型大小和复杂度至关重要。该领域研究正日益受到关注,为模型优化提供了有力工具。

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625679.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-VBA函数之旅-eval函数

目录 一、eval函数的常见应用场景: 二、eval函数安全使用注意事项: 三、eval函数与exec函数对比分析: 1、eval函数: 1-1、Python: 1-2、VBA: 2、相关文章: 个人主页:ht…

00_Qt概述以及如何创建一个QT新项目

Qt概述 1.Qt概述1.1 什么是Qt1.2 Qt的发展史1.3 支持的平台1.4 Qt版本1.5 Qt的下载与安装1.6 Qt的优点 2.QT新项目创建3.pro文件4.主函数5.代码命名规范和快捷键 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面…

Langchain入门到实战-第三弹

Langchain入门到实战 Langchain中RAG入门官网地址Langchain概述代码演示调用RAG功能更新计划 Langchain中RAG入门 Retrieval Augmented Generation 翻译成中文是“检索增强生成” 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息…

实验六 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 请完成创建图片库应用&#xff0c;显示一系列预设的图片。 提供按钮来切换显示不同类别的图片。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; 1.WXML <view> <button bindtap"showAll">所有图片</but…

javase__进阶 day14 IO(异常File综合案例)

1. 异常 1.1 异常概念 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最…

学浪视频怎么保存到本地

学浪怎么保存到本地?快来看看这个小浪助手 我写了将近2000多行代码&#xff0c;使用易语言编写的 这里给大家我打包好的工具&#xff0c;有需要的自己取一下 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj…

error: failed to push some refs to ‘https://gitee.com/zhao-zhimin12/gk.git‘

git push origin master发现以下报错: 解决办法: 一、强制推送 git push origin master -f &#xff08;加上 -f 就是强制&#xff09; 二、 先拉取最新代码&#xff0c;再推送 1.git pull origin master 2.git push origin master

【Web】2022DASCTF Apr X FATE 防疫挑战赛 题解(全)

目录 warmup-php soeasy_php warmup-java warmup-php spl_autoload_register函数实现了当程序遇到调用没有定义过的函数时&#xff0c;会去找./class/函数名.php路径下的php文件&#xff0c;并把它包含在程序中。 拿到附件拖进Seay里自动审计一下 显然利用终点为evaluateExp…

vue:如何通过两个点的经纬度进行距离的计算(很简单)

首先假设从api获取到了自己的纬经度和别人的纬经度 首先有一个概念需要说一下 地球半径 由于地球不是一个完美的球体&#xff0c;所以并不能用一个特别准确的值来表示地球的实际半径&#xff0c;不过由于地球的形状很接近球体&#xff0c;用[6357km] 到 [6378km]的范围值可以…

基于小程序实现的餐饮外卖系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

2024年管理科学、电子商务与应用国际会议(ICMSECA2024)

2024年管理科学、电子商务与应用国际会议(ICMSECA2024) 会议简介 2024年管理科学、电子商务和应用国际会议&#xff08;ICMSCA2024&#xff09;旨在为来自世界各地的研究专家建立一个国际论坛&#xff0c;展示他们在知识管理系统领域的想法和经验&#xff0c;同时为世界各地的…

在Visual Studio配置C++的netCDF库的方法

本文介绍在Windows电脑的Visual Studio软件中&#xff0c;配置C 语言最新版netCDF库的方法。 netCDF&#xff08;Network Common Data Form&#xff09;是一种用于存储、访问和共享科学数据的文件格式和库&#xff0c;其提供了一种灵活的方式来组织、描述和存储多维数据&#…