术语表

模型修剪

通过模型剪枝优化机器学习模型。针对资源有限的部署,实现更快的推理、更少的内存使用和更高的能效。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

模型剪枝是机器学习中的一种技术,用于通过减少模型的大小和复杂性来优化训练有素的模型。实现这一目标的方法是识别并删除对模型整体性能贡献最小的不太重要的参数,如神经网络(NN)中的权重或连接。这样做的目的是创建更小、更快的模型,这些模型所需的计算能力和内存更少,从而在不显著降低准确性的情况下提高效率。这一过程是直接应用于机器学习模型的一种特定剪枝类型。

为什么使用模型修剪?

模型剪枝的主要动机是效率。现代深度学习模型虽然功能强大,但可能非常庞大,对计算要求很高。这给模型部署带来了挑战,尤其是在智能手机或边缘计算系统等资源有限的设备上。模型剪枝可以通过以下方式解决这些问题

  • 缩小模型尺寸:更小的模型所需的存储空间更小,因此更容易部署到运行Ultralytics HUB 应用程序的设备上。
  • 提高推理速度:由于参数较少,剪枝模型的计算速度更快,从而减少了推理延迟。这对实时推理应用至关重要。
  • 降低能耗:更少的计算意味着更低的能耗,这对于电池供电的设备和促进可持续人工智能实践非常重要。
  • 最小化过度拟合:去除冗余参数有时能帮助模型更好地概括新数据,从而减少过度拟合

模型修剪类型

模型修剪技术各不相同,但一般可根据删除的内容进行分类:

  • 权重剪枝(非结构化):将网络中量级或重要性较低的单个权重或连接设置为零。这通常会产生稀疏模型,但可能需要专门的硬件或软件才能达到最佳加速效果。
  • 神经元/滤波器剪枝(结构化):删除整个神经元、过滤器(卷积神经网络 (CNN) 中的过滤器)或其他结构组件。这通常会产生更规则、更小的密集模型,更容易在标准硬件上使用以下工具进行加速 NVIDIA TensorRT.

剪枝可以在训练后进行,也可以整合到训练过程中。通常情况下,剪枝后的模型需要一些微调(额外的训练)才能恢复失去的准确性。您可以在PyTorch 修剪教程等资源中探索各种修剪策略。

实际应用

模型剪枝在许多领域都很有价值:

  1. 移动计算机视觉Ultralytics YOLO在移动设备上用于物体检测的模型可以进行剪枝,以便高效运行,从而可以直接在设备上进行实时分析,而不需要持续的云连接。这对于部署在Raspberry Pi等平台上或使用Google EdgeTPU 等加速器的应用至关重要。
  2. 自主系统:在自动驾驶汽车或无人机中,模型需要即时处理传感器数据。剪枝复杂的感知模型有助于实现安全导航和决策所需的低延迟,通常部署在NVIDIA Jetson 等硬件上。

模型剪枝与其他优化技术的比较

模型剪枝是优化模型的几种技术之一。重要的是要将它与以下技术区分开来:

  • 模型量化降低模型权重和激活的精度(例如,从 32 位浮点数到 8 位整数)。这也能减小模型大小并加快计算速度,但其作用是改变数据类型,而不是删除参数。有关示例,请参阅TensorFlow Lite 优化
  • 知识蒸馏包括训练一个较小的 "学生 "模型来模仿一个较大的、预先训练好的 "教师 "模型的输出。其目的是转移知识,在不直接修改教师模型的情况下创建一个紧凑的模型。详情请阅读知识蒸馏论文原文。

这些技术并不相互排斥,通常会与剪枝技术相结合,以获得最大的优化效益。例如,可以先对一个模型进行剪枝,然后在最终部署前进行量化。你可以在Ultralytics 文档中找到有关优化的指导。

阅读全部