模型压缩常用方法

本文深入讲解常见的模型压缩方法,包括模型蒸馏、量化、剪枝和参数共享等,重点介绍了teacher-student模型如何通过迁移学习使小模型具备大模型的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见的模型压缩方法有以下几种:

  • 模型蒸馏 Distillation,使用大模型的学到的知识训练小模型,从而让小模型具有大模型的泛化能力
  • 量化 Quantization,降低大模型的精度,减小模型
  • 剪枝 Pruning,去掉模型中作用比较小的连接
  • 参数共享,共享网络中部分参数,降低模型参数数量

1. teacher-student模型

teacher-student模型是迁移学习的一种,迁移学习也就是将一个模型的性能迁移到另一个模型上,对于教师网络往往是一个更加复杂的网络,具有非常好的性能和泛化能力,可以用这个网络来作为一个soft target来指导另外一个更加简单的学生网络来学习,使得更加简单、参数运算量更少的学生模型也能够具有和教师网络相近的性能

学生网络的训练有两个目标:一个是hard target,即原始的目标函数:小模型的类别概率输出与label真值的交叉熵;另一个为soft target:小模型的类别概率输出与大模型的类别概率输出的交叉熵。将hard和soft的target通过加权平均来作为学生网络的目标函数,soft target所占的权重更大一些。

深度学习方法(十五):知识蒸馏(Distilling the Knowledge in a Neural Network),在线蒸馏
请参考 DistilBERT

### 大模型训练中常用模型压缩技术 在大模型训练过程中,为了降低存储需求、减少推理时间和能耗,常采用多种模型压缩技术。以下是几种常见的方法: #### 1. 结构化剪枝 结构化剪枝是一种通过移除神经网络中的冗余部分来减小模型规模的技术。例如,在Transformer架构中,可以对自注意力机制(self-attention mechanism)的头部(heads)进行剪枝[^2]。研究发现,即使去掉一些注意力头,也不会显著影响模型的表现,甚至在某些情况下还能提升结果。这种方法不仅减少了参数数量,还优化了计算资源的利用效率。 #### 2. 非结构化剪枝 与结构化剪枝不同,非结构化剪枝关注于逐个删除权重较小或贡献较少的连接。这通常涉及设定阈值,低于该阈值的权值会被置零。尽管这种方法能够实现更高的稀疏性,但它可能会破坏原始张量布局,增加部署难度。 #### 3. 模型量化 模型量化是指用低精度数据类型替代高精度浮点数表示模型参数的过程。例如,将32位浮点数转换成8位整数或其他更低维度的形式。这样做的好处是可以大幅削减内存占用并加速运算速度,因为许多硬件平台都特别针对定点操作进行了优化[^2]。不过,这也可能导致一定程度的信息损失,因此需要仔细调整以保持预测准确性。 #### 4. 知识蒸馏 知识蒸馏旨在构建一个小巧的学生模型去模仿大型教师模型的行为模式。具体而言,学生模型学习来自教师模型软标签的概率分布而非仅依赖硬标签分类结果。这种方式有助于捕获复杂的特征映射关系,同时简化最终产物以便实际应用场合使用。 ```python import torch.nn as nn from torchvision import models # 示例:加载预训练ResNet50模型并执行全连接层裁剪作为简单的模型压缩演示 model = models.resnet50(pretrained=True) for param in model.parameters(): param.requires_grad_(False) # 修改最后一层FC层尺寸至更少类别数目 num_ftrs = model.fc.in_features model.fc = nn.Linear(num_ftrs, new_output_size) # 替换为新的输出大小new_output_size ``` 以上代码展示了如何基于PyTorch框架修改经典卷积神经网络的最后一层全连接层节点数,以此作为一种基础形式的模型压缩手段。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值