深圳尤洛视觉
深圳
立即加入
词汇表

剪枝

通过剪枝优化 AI 模型——降低复杂性,提高效率,并在不牺牲性能的情况下更快地在边缘设备上部署。

剪枝是一种模型优化技术,用于减小训练好的神经网络 (NN)的大小和计算复杂度。该过程包括识别和删除模型中冗余或不太重要的参数(权重)或结构(神经元、通道或层)。其目标是创建一个更小、更快、更节能的模型,使其准确性与原始模型保持在同一水平。这对于在资源受限的环境(如边缘设备)上部署复杂的AI 模型尤为重要。

剪枝如何工作

剪枝过程通常在深度学习模型经过充分训练后开始。它基于许多大型模型过度参数化的原理运行,这意味着它们包含许多对最终预测贡献很小的权重和神经元。识别这些不重要组件的常用方法是通过分析它们的大小;值接近于零的参数被认为不太重要。一旦被识别,这些参数将被删除或设置为零。在剪枝过程之后,现在较小的网络通常会经历微调,这涉及重新训练模型几个epoch。此步骤有助于其余参数适应架构更改并恢复在剪枝期间可能损失的任何性能。如“深度压缩”等基础研究论文中所述,可以重复进行这种迭代的剪枝和微调过程,以在模型大小和性能之间实现所需的平衡。

剪枝的类型

剪枝技术可以根据从网络中删除的内容大致分类:

  • 非结构化剪枝(权重剪枝): 这种方法根据特定标准(例如幅度)从网络中删除单个权重。这会导致模型变得稀疏,其中许多连接被置零。虽然这可以显著减少参数数量,但在没有专用软件库(例如 NVIDIA 的稀疏模型工具)的情况下,它可能并不总是能加快标准硬件(如 CPUGPU)上的推理速度。
  • 结构化剪枝:这种方法会删除网络的整个结构组件,例如神经元、通道,甚至 卷积神经网络 (CNN) 中的整个层。因为它删除了网络的规则块,所以它以标准硬件可以轻松利用的方式直接减少了模型的大小和计算需求,通常会导致更可预测的加速。诸如 Neural Magic 的 DeepSparse 之类的工具旨在加速此类结构化稀疏模型在 CPU 上的推理。

主要的机器学习框架(如PyTorchTensorFlow)提供了内置的实用程序和用于实现剪枝的教程

实际应用

剪枝对于在计算资源有限的实际场景中部署强大的 AI 模型至关重要。

  1. 优化边缘设备上的目标检测: 像 Ultralytics YOLO 这样的模型被用于实时目标检测。通过对像 YOLOv8 这样的模型进行剪枝,可以将其部署在低功耗边缘设备上,如 Raspberry PiNVIDIA Jetson。这支持了诸如设备端智能监控、优化交通管理将计算机视觉集成到机器人技术中等应用。
  2. 在本地运行大型语言模型 (LLM): 剪枝可以大幅减少基于Transformer等架构的大型语言模型 (LLM)的内存占用。经过剪枝的LLM可以直接在智能手机或笔记本电脑上运行,以执行诸如文本摘要或本地虚拟助手之类的自然语言处理 (NLP)任务。这提高了响应速度,并通过将用户数据保留在设备上来增强数据隐私,这是电子前沿基金会 (EFF)等组织的关键原则。

剪枝与其他优化技术对比

剪枝是模型优化的几种技术之一,通常与其他技术一起使用。重要的是要将其与相关概念区分开来:

  • 模型量化: 此技术降低模型权重和激活的数值精度(例如,从 32 位浮点数到 8 位整数)。这会缩小模型大小,并可以加快计算速度,尤其是在具有专用支持的硬件上。与删除参数的剪枝不同,量化会压缩参数。
  • 知识蒸馏: 在这种方法中,训练一个较小的“学生”模型来复制一个较大的预训练“教师”模型的输出。目标是将学习到的知识转移到更紧凑的架构,而剪枝则修改现有架构。

这些技术并非互斥。一个常见的工作流程是首先剪枝模型以删除冗余参数,然后对剪枝后的模型应用量化以实现最大效率。然后,可以使用 Ultralytics export 函数将优化后的模型导出为标准格式(如 ONNX),以便在各种 推理引擎上进行广泛部署。诸如 Ultralytics HUB 等平台可以帮助管理从训练到优化模型部署的整个生命周期。

加入 Ultralytics 社区

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

立即加入
链接已复制到剪贴板