术语表

模型修剪

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

模型剪枝是一种模型优化技术,可使神经网络更小、计算效率更高。其核心思想是从训练好的模型中识别并删除多余或不重要的参数(权重、神经元或通道)。这一过程缩小了模型的大小,并能显著加快推理速度,因此非常适合部署在内存和处理能力有限的边缘设备上。这一概念基于这样一种观察,即许多大型模型参数过多,这意味着它们包含的组件对最终预测的贡献很小。优化脑损伤等开创性论文很早就指出,并非所有参数都是相同的。

模型修剪类型

模型剪枝技术通常按照从网络中删除内容的粒度进行分类:

  • 权重剪枝(非结构化):这是最精细的方法,在这种方法中,单个模型权重的值如果低于某个阈值,就会被设为零。这可以创建一个 "稀疏 "模型,并对其进行高度压缩。不过,这通常需要专门的硬件或软件库,如英伟达公司的稀疏模型工具,才能在推理过程中实现显著提速。
  • 神经元修剪:在这种方法中,如果整个神经元及其所有输入和输出连接被认为不重要,就会被删除。与删除单个权重相比,这种修剪方式更有条理。
  • 滤波器/通道剪枝(结构化):这种方法尤其适用于卷积神经网络(CNN),可去除整个滤波器或通道。由于它保留了网络层的密集、规则结构,因此这种方法通常能在标准硬件上直接提高性能,而无需专门的库。Neural Magic 的 DeepSparse等工具就是为了在 CPU 上加速这些稀疏模型而设计的。

剪枝后,模型通常会进行微调,包括重新训练较小的网络几个历时,以恢复参数去除过程中损失的准确性。著名的 "彩票假说"(Lottery Ticket Hypothesis)表明,在一个大型网络中,存在一个较小的子网络,从头开始训练时也能达到类似的性能。PyTorch等框架提供了用于实现的内置工具,如官方PyTorch 修剪教程所示。

实际应用

模型剪枝对于在各种场景中部署高效的人工智能模型至关重要:

  1. 优化边缘设备上的物体检测:可以对Ultralytics YOLO等模型进行剪枝处理,以便在Raspberry PiNVIDIA Jetson 等资源受限的硬件上高效运行物体检测任务。这样就能实现交通管理、智能监控等实时应用,并将计算机视觉集成到机器人技术中
  2. 本地部署大型语言模型 (LLM):剪枝技术用于缩小基于Transformer架构的大型模型,使其能够在智能手机等设备上运行,以完成自然语言处理(NLP)任务。这种方法有时会与量化等其他技术相结合,可实现功能强大的设备上人工智能助手和翻译应用程序,同时提高数据私密性并减少延迟。Hugging Face 等组织的研究和工具对 LLM 修剪进行了探索

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

模型剪枝是几种互补的模型优化技术之一:

  • 模型量化:这种技术降低了模型权重和激活的数值精度(例如,从 32 位浮点数降为 8 位整数)。与删除参数的剪枝不同,量化会缩小现有参数的大小。量化通常在剪枝之后使用,以实现最大程度的优化,尤其是在使用像TensorRT 这样具有专门支持的硬件时。
  • 知识蒸馏:这种方法包括训练一个较小的 "学生 "模型,以模仿一个较大的、预先训练好的 "教师 "模型的输出。其目的是将教师学到的知识转移到一个更紧凑的架构中。这与剪枝法不同,剪枝法是对已经训练好的模型进行瘦身,而不是训练一个新的模型。

最终,这些技术可以结合使用,创建出高效的模型。模型经过优化后,可以使用 Ultralytics 的导出选项导出ONNX等标准格式,以便在不同的推理引擎中广泛部署。Ultralytics HUB等平台提供了管理计算机视觉模型从训练到优化部署的整个生命周期的工具。

加入 Ultralytics 社区

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

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