术语表

修剪

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

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

了解更多

剪枝是人工智能(AI)和机器学习(ML)中的一种模型优化技术,用于减少训练模型的大小和计算复杂度。它包括有选择性地删除参数,如神经网络(NN)中的权重或连接,这些参数被认为对模型的任务不那么重要或多余。其主要目的是创建更小、更快的模型,这些模型所需的计算资源和内存更少,理想情况下性能或准确性不会显著下降。这一过程是高效部署模型的关键部分,尤其是在功能有限的设备上。虽然 "剪枝 "是一个通用术语,但"模型剪枝"特指将此技术应用于 ML 模型。

修剪的意义

随着深度学习(DL)模型越来越大、越来越复杂,以应对复杂的任务,它们对计算能力、存储和能源的需求也大幅增加。剪枝技术通过使模型更轻便、更高效,直接应对了这一挑战。这种优化带来了几个好处:减少存储需求,降低运行过程中的能耗,减少推理延迟,这对于需要实时推理的应用来说至关重要。剪枝对于在资源受限的环境中部署模型尤为重要,如移动设备、嵌入式系统和各种边缘人工智能场景,在这些环境中,效率是首要考虑因素。它还有助于通过简化模型来减轻过度拟合

修剪的应用

剪枝技术广泛应用于众多人工智能领域。下面是两个具体的例子:

  1. 在边缘设备上部署物体检测模型:在边缘设备上部署物体检测模型 Ultralytics YOLO树莓派(Raspberry Pi)或Google 边缘TPU 等低功耗设备上部署为物体检测而训练的模型可能会过于庞大或缓慢。剪枝可以减小模型的大小和计算负荷,使其能够在此类硬件上有效运行,以完成安全系统或本地野生动物监测等任务。有关部署示例,请参阅 "树莓派上的边缘TPU "教程 NVIDIA Jetson 指南
  2. 优化自主系统模型:自动驾驶汽车中,用于图像分割或传感器融合等任务的复杂感知模型必须以最小的延迟运行。剪枝技术有助于优化这些卷积神经网络(CNN),以满足严格的实时处理要求,确保车辆运行的安全性和响应速度。框架,如 NVIDIA TensorRT等框架通常支持剪枝模型,以优化推理。

类型和技术

修剪方法各有不同,但一般可分为以下几大类:

  • 非结构化修剪:这包括根据对输出的贡献大小或贡献程度等标准删除单个权重或神经元。这会产生具有不规则删除连接模式的稀疏模型。虽然有可能实现较高的压缩率,但这些模型可能需要专门的硬件或软件库(如Neural Magic 的 DeepSparse)才能高效执行。请参阅Ultralytics Neural Magic 集成
  • 结构修剪:这种技术可以去除网络的整个结构部分,如滤波器、通道甚至层。这样可以保持规则的结构,使剪枝后的模型与标准硬件加速器和程序库(如NVIDIA)的结构稀疏性支持)更加兼容。

剪枝可在不同阶段实施:训练前(影响架构设计)、训练过程中或对预训练模型进行训练后,通常会进行微调,以挽回失去的准确性。主要的深度学习框架,如 PyTorchTensorFlow等主要深度学习框架都提供了实施各种剪枝策略的工具和教程,如PyTorch 剪枝教程PyTorch Pruning Tutorial)。

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

剪枝是用于模型优化的几种技术之一。将其与相关概念区分开来是很有用的:

  • 模型量化降低模型权重和激活的精度(例如,从 32 位浮点数到 8 位整数),从而缩小模型大小,通常还能加快计算速度,尤其是在专用硬件上。
  • 知识蒸馏包括训练一个较小的 "学生 "模型来模仿一个较大的、预先训练好的 "教师 "模型的行为,在不继承复杂性的情况下传递知识。

这些技术并不相互排斥,经常与剪枝技术结合使用,以达到更高的优化水平。例如,可以先对一个模型进行剪枝,然后进行量化,以达到最高效率。优化后的模型通常可以导出为标准格式,如 ONNX等标准格式,以便在不同推理引擎之间实现广泛的部署兼容性。

总之,剪枝是一种强大的技术,可用于创建适合各种部署需求的高效人工智能模型,在计算机视觉(CV)和其他 ML 任务的实际应用中发挥着重要作用。Ultralytics HUB等平台提供了包括云训练在内的工具和基础设施,可以促进开发和优化类似于 YOLOv8或YOLO11 等模型的开发和优化。

阅读全部