当前位置: 首页 > news >正文

【自然语言处理与大模型】模型压缩技术之剪枝

一、什么是模型剪枝?

        模型剪枝(Model Pruning)是一种神经网络模型压缩技术,其核心思想是通过删除或稀疏化模型中冗余的部分(如不重要的参数或神经元连接),在尽量保持模型性能的前提下,减少模型的参数量和计算量,从而提高运行效率,降低存储和部署成本。

剪枝前后的神经元和参数

【注】为什么能剪?剪了难道就没影响吗?

        模型中许多参数对最终的预测结果贡献较小或是没有显著作用。模型剪枝的核心原理在于识别并移除这些不太重要性的参数或结构,从而简化模型。即便对模型精度造成了影响,也可以对模型再进行微调来提升精度。

左边是剪枝之前的权重很多都是0,不太重要

以深度神经网络为例,模型剪枝可以作用于以下部分:

  • 权重剪枝:移除权重矩阵中的不重要参数(即个别连接)。
  • 神经元剪枝:移除不重要的神经元。
  • 通道剪枝:移除卷积层中的某些通道(Filters)。
  • 层剪枝:移除整个网络中的某些层或模块。

二、有哪些剪枝方式?

        模型剪枝的分类,也就是怎么去剪呢?可以分成两类:

  • 结构化剪枝(Structured Pruning):直接删除神经网络中的某些结构化部分(如神经元、卷积通道或层)。这种剪枝方式更适合硬件加速,因为剪枝后的模型仍然是稠密的,易于部署。
  • 非结构化剪枝(Unstructured Pruning):移除网络中单个、独立的权重(不考虑结构)。剪枝后的模型通常是稀疏的,需要特殊的稀疏矩阵存储和计算优化。

类型优点缺点
非结构化剪枝 剪枝算法简单,模型压缩比高精度不可控,剪枝后权重矩阵稀疏,没有专用硬件难以实现压缩和加速的效果
结构化剪枝 大部分算法在 channel 或者 layer 上进行剪枝,保留原始卷积结构,不需要专用硬件来实现剪枝算法相对复杂

        因为目前非结构化剪枝的精度不可控,这在实际应用的时候是无法接受的。而结构化剪枝算法又太过复杂,所以剪枝目前用的比较少。大部分都是用量化和蒸馏来压缩模型。

(1)模型剪枝流程是怎样的?

对模型进行剪枝三种常见做法:

  1. 训练后剪枝:训练一个模型 -> 对模型进行剪枝 -> 对剪枝后模型进行微调
  2. 训练中剪枝:在模型训练过程中进行剪枝 -> 对剪枝后模型进行微调
  3. 剪枝后重新训练:进行剪枝 -> 从头训练剪枝后模型

        训练过参数化模型,得到最佳网络性能,以此为基础进行剪枝,通过剪枝算法后模型会变得稀疏,减少了模型的参数量和计算量,从而提高运行效率。但可能会导致模型精度下降,所以还需要再对剪枝后的模型进行微调,以此来恢复精度。

 

(2)模型剪枝的一个简单例子

假设有一个全连接层网络,其参数矩阵为:

权重剪枝:如果我们设置剪枝阈值为 0.2,则移除绝对值小于 0.2 的权重,得到稀疏矩阵:

微调:对剪枝后的模型重新训练,以减少精度损失。

三、量化和剪枝的区别是什么?

        量化和剪枝的目的都是为了:减少模型大小、加快推理速度、降低内存占用和能耗。但它们实现这一目标的方式不同。

  • 量化主要关注于数据表示的精度减少,从而达到模型压缩和加速的效果。
  • 剪枝则是通过去除不必要的模型部分来简化模型架构,同样旨在提高效率和减少资源消耗。
    量化和剪枝的区别

    本文参考了剪枝经典论文:Learning both Weights and Connections for Efficient

    http://www.xdnf.cn/news/63253.html

    相关文章:

  1. 可穿戴无线生理信号采集贴片产品市场需求简析
  2. 关于ORM
  3. numpy、pandas内存优化操作整理
  4. 【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识(上)
  5. Web 前端打包工具与构建系统的进阶指南
  6. Kafka 生产者的幂等性与事务特性详解
  7. 归一化对C4.5决策树无效的数学原理与实证分析
  8. 配置 VS Code 使用 ESLint 格式化
  9. 利用课程编辑器创新教学,提升竞争力​
  10. VSCode连接服务器跑深度学习代码相关问题(研0大模型学习第八天)
  11. 【软件工程】软件测试基础知识
  12. 在springboot3.4.4和jdk17环境下集成使用mapstruct
  13. 使用Postman调测“获取IAM用户Token”接口实际操作
  14. 性能比拼: Nginx vs Apache
  15. nn.LayerNorm():对输入张量的最后一个维度(特征维度)进行归一化
  16. 【目标检测】目标检测综述 目标检测技巧
  17. 全球首个人形机器人半程马拉松技术分析:翻车名场面背后的突破与挑战
  18. DeepSeek赋能Nuclei:打造网络安全检测的“超级助手”
  19. 量化研究---小果全球大类低相关性动量趋势增强轮动策略实盘设置
  20. ThinkPHP5 的 SQL 注入漏洞
  21. 【时时三省】(C语言基础)循环的嵌套和几种循环的比较
  22. STM32——新建工程并使用寄存器以及库函数进行点灯
  23. DeepSeek 大模型 + LlamaIndex + MySQL 数据库 + 知识文档 实现简单 RAG 系统
  24. electron从安装到启动再到打包全教程
  25. Python 网络编程:TCP 与 UDP 协议详解及实战代码
  26. uni-app 开发企业级小程序课程
  27. LangChain、LlamaIndex 和 ChatGPT 的详细对比分析及总结表格
  28. 【Flink SQL实战】 UTC 时区格式的 ISO 时间转东八区时间
  29. 2025.04.20【Lollipop】| Lollipop图绘制命令简介
  30. python——函数