深圳Yolo 视觉
深圳
立即加入
词汇表

模型剪枝

了解模型剪枝如何为边缘人工智能减少神经网络的规模和复杂性。探索优化Ultralytics 策略,以实现移动端更快的推理速度。

模型剪枝是机器学习中的一种技术,通过系统性地移除冗余参数来缩减神经网络的规模并降低其计算复杂度。 正如园丁修剪枯枝与过密枝条以促进树木生长,开发者通过修剪人工神经网络使其运行更快、体积更小且更节能。这一过程对于在智能手机、嵌入式传感器和边缘计算硬件等资源受限的设备上部署现代深度学习架构至关重要。

模型修剪的工作原理

修剪的核心思想在于,深度神经网络往往存在“过度参数化”现象,这意味着它们包含了远超实际需要的 weights and biases 。在训练过程中,模型会学习大量连接关系,但并非所有连接都对最终输出贡献相同价值。修剪算法通过分析训练后的模型,识别出冗余或无信息价值的连接——通常是权重接近零的连接——并予以移除。

修剪模型的生命周期通常遵循以下步骤:

  1. 训练:通过训练大型模型直至收敛,以捕捉复杂特征。
  2. 修剪:将低重要性参数设置为零或从网络结构中物理移除。
  3. 微调:模型将进行第二轮微调, 使剩余参数得以调整, 并恢复在修剪阶段 损失的准确率

该方法论常与彩票假说相关联,该假说认为密集网络中存在较小且孤立的子网络(中奖彩票),若单独训练这些子网络,其准确度可与原始模型相当。

修剪策略的类型

修剪方法通常根据被移除部分的结构进行分类。

  • 非结构化剪枝:该方法基于阈值(如权重大小)移除模型中任意位置的单个权重。虽然能有效减少参数数量,但会产生稀疏矩阵,标准硬件难以高效处理。若无专用软件或硬件加速器,非结构化剪枝可能无法显著提升运行速度。
  • 结构化剪枝:该方法通过移除卷积神经网络(CNN)中的完整几何结构(如通道、滤波器或层)实现。通过保留密集矩阵结构,剪枝后的模型仍与标准 GPUCPU ,从而 直接提升推理延迟和 吞吐量。

实际应用

修剪是边缘人工智能的关键使能器,使复杂模型能够在云连接不可用或过慢的环境中运行。

  • 移动物体检测:移动设备上的应用程序(如实时语言翻译或增强现实)采用剪枝模型以延长电池寿命并减少内存占用。优化架构如YOLO26因其固有效率,常被选作此类任务的首选基础模型。
  • 汽车安全:自动驾驶汽车和 自动驾驶车辆需要瞬间决策。 修剪模型使车载计算机能够处理高分辨率摄像头数据流进行行人检测, 无需因向服务器传输数据而产生延迟。
  • 工业物联网:在制造业中,装配线上的视觉检测系统采用轻量化模型来detect 。通过模型剪枝技术,这些系统能够在经济高效的微控制器上运行,而非依赖昂贵的服务器机架。

剪枝与相关优化技术

虽然模型剪枝是一种强大的工具,但人们常将其与其他模型优化技术混淆或并用。

  • 剪枝与量化:剪枝通过减少模型中的参数(连接)数量来优化模型。而模型量化则通过降低参数精度实现优化,例如将32位浮点数转换为8位整数。这两种方法常被结合使用,以最大化模型部署的效率。
  • 剪枝与知识蒸馏:剪枝通过剔除部分内容来修改原始模型 知识蒸馏则涉及训练一个全新的、更小的"学生"模型,使其模仿更大"教师"模型的行为。

实施实例

以下Python 如何使用 PyTorch 对卷积层应用非结构化修剪: PyTorch。这是将模型导出为 优化格式(如 ONNX之前常用的步骤。

import torch
import torch.nn as nn
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)

# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)

# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")

对于希望管理数据集和模型完整生命周期(包括训练、评估和部署)的用户Ultralytics 提供了一个简化的界面。它简化了创建高度优化的模型(如YOLO26)并将其导出为硬件友好格式的流程,例如 TensorRTCoreML。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入