敬请关注 YOLO Vision 2025!
2025年9月25日
英国夏令时 10:00 - 18:00
混合活动
Yolo Vision 2024

什么是模型优化?快速指南

Abirami Vina

5 分钟阅读

2024 年 11 月 15 日

了解模型优化技术(如超参数调整、模型剪枝和模型量化)如何帮助计算机视觉模型更高效地运行。

模型优化是一个旨在提高机器学习模型的效率和性能的过程。通过改进模型的结构和功能,优化使模型能够以最少的计算资源和减少的训练评估时间,交付更好的结果。

这个过程在计算机视觉等领域尤为重要,在这些领域中,模型通常需要大量资源来分析复杂的图像。在移动设备或边缘系统等资源受限的环境中,优化的模型可以在资源有限的情况下良好工作,同时保持准确性。

通常使用多种技术来实现模型优化,包括超参数调整、模型剪枝、模型量化和混合精度。在本文中,我们将探讨这些技术以及它们为计算机视觉应用带来的好处。让我们开始吧!

理解模型优化

计算机视觉模型通常具有深层和复杂的结构,非常适合识别图像中复杂的模式,但它们在处理能力方面也可能要求很高。当这些模型部署在硬件有限的设备上时,例如手机边缘设备,它们可能会面临某些挑战或限制。 

这些设备上有限的处理能力、内存和能源会导致性能明显下降,因为模型难以跟上。模型优化技术是解决这些问题的关键。它们有助于简化模型,减少其计算需求,并确保即使在资源有限的情况下也能有效工作。模型优化可以通过简化模型架构、降低计算的精度或删除不必要的组件来使模型更轻、更快。

__wf_reserved_inherit
图 1. 优化模型的理由。图片由作者提供。

以下是一些最常见的模型优化技术,我们将在以下章节中更详细地探讨这些技术:

  • 超参数调优:它涉及系统地调整超参数(例如学习率和批量大小)以提高模型性能。
  • 模型剪枝:此技术从神经网络中删除不必要的权重和连接,从而降低其复杂性和计算成本。
  • 模型量化: 量化涉及降低模型权重和激活的精度,通常从 32 位降至 16 位或 8 位,从而显着减少内存占用和计算需求。
  • 精度调整:也称为混合精度训练,它涉及对模型的不同部分使用不同的精度格式,并在不影响准确性的前提下优化资源使用。

详解:机器学习模型中的超参数

您可以通过调整模型的超参数(影响模型从数据中学习方式的设置)来帮助模型学习并更好地执行。超参数调整是一种优化这些设置的技术,可以提高模型的效率和准确性。与模型在训练期间学习的参数不同,超参数是指导训练过程的预设值。

让我们来看一些可以调整的超参数的例子:

  • 学习率:此参数控制模型调整其内部权重的步长。较高的学习率可以加快学习速度,但有错过最佳解决方案的风险,而较低的学习率可能更准确但速度较慢。
  • Batch Size(批大小):它定义了每个训练步骤中处理的数据样本数量。较大的批大小提供更稳定的学习效果,但需要更多的内存。较小的批大小训练速度更快,但可能不太稳定。
  • Epochs(周期):您可以使用此参数确定模型查看完整数据集的次数。更多周期可以提高准确性,但存在过拟合的风险。
  • 卷积核大小:它定义了卷积神经网络 (CNN) 中的滤波器大小。较大的卷积核捕获更广泛的模式,但需要更多的处理;较小的卷积核侧重于更精细的细节。

超参数调整的工作原理

超参数调优通常从定义每个超参数的可能取值范围开始。然后,搜索算法会探索这些范围内的不同组合,以确定产生最佳性能的设置。 

常见的调优方法包括网格搜索、随机搜索和贝叶斯优化。网格搜索测试指定范围内值的每一种可能组合。随机搜索随机选择组合,通常能更快地找到有效的设置。贝叶斯优化使用概率模型根据先前的结果预测有希望的超参数值。这种方法通常减少所需的试验次数。 

最终,对于每个超参数组合,都会评估模型的性能。这个过程会重复进行,直到达到期望的结果。

超参数 vs. 模型参数

在进行超参数调整时,您可能想知道超参数和模型参数之间的区别是什么。 

超参数是在训练之前设置的值,用于控制模型的学习方式,例如学习率或批量大小。这些设置在训练期间是固定的,并直接影响学习过程。另一方面,模型参数是由模型本身在训练期间学习的。这些参数包括权重和偏差,它们随着模型的训练而调整,并最终指导其预测。从本质上讲,超参数塑造了学习过程,而模型参数是该学习过程的结果。

__wf_reserved_inherit
图 2. 参数与超参数对比。 

为什么模型剪枝在深度学习中很重要

模型剪枝是一种尺寸缩减技术,它从模型中移除不必要的权重和参数,使其更高效。在计算机视觉中,特别是对于深度神经网络,大量的参数(如权重和激活值(有助于计算最终输出的中间输出))会增加复杂性和计算需求。剪枝通过识别和移除对性能贡献最小的参数来帮助简化模型,从而产生一个更轻量级、更高效的模型。

__wf_reserved_inherit
图 3. 模型剪枝前后。

在模型训练完成后,可以使用诸如基于幅度的剪枝或敏感度分析等技术来评估每个参数的重要性。然后,使用三种主要技术之一:权重剪枝、神经元剪枝或结构化剪枝来剪除低重要性的参数。 

权重剪枝会移除对输出影响最小的单个连接。神经元剪枝会移除整个神经元,这些神经元的输出对模型的功能贡献很小。结构化剪枝会消除更大的部分,如卷积滤波器或全连接层中的神经元,从而优化模型的效率。剪枝完成后,将重新训练模型以微调剩余的参数,确保它以缩减的形式保持高精度。

通过量化减少 AI 模型中的延迟

模型量化减少了用于表示模型权重和激活值的比特数。它通常将高精度 32 位浮点值转换为较低精度,例如 16 位或 8 位整数。通过降低比特精度,量化显著降低了模型的大小、内存占用和计算成本。

计算机视觉中,32 位浮点数是标准配置,但转换为 16 位或 8 位可以提高效率。量化主要有两种类型:权重​​量化和激活量化。权重​​量化降低了模型权重的精度,从而平衡了尺寸缩小和准确性。激活量化降低了激活的精度,从而进一步降低了内存和计算需求。

__wf_reserved_inherit
图 4. 从 32 位浮点到 8 位整数的量化示例。

混合精度如何加速 AI 推理?

混合精度是一种对神经网络的不同部分使用不同数值精度的方法。通过将较高精度值(如 32 位浮点数)与较低精度值(如 16 位或 8 位浮点数)相结合,混合精度使计算机视觉模型能够加速训练并减少内存使用,而不会牺牲准确性。

在训练期间,混合精度是通过在特定层中使用较低的精度,同时在整个网络中保持所需的较高精度来实现的。这是通过类型转换和损失缩放来完成的。类型转换根据模型的要求在不同精度之间转换数据类型。损失缩放调整降低的精度以防止数值下溢,从而确保稳定的训练。混合精度对于大型模型和大型批量大小特别有用。

__wf_reserved_inherit
图 5. 混合精度训练同时使用 16 位 (FP16) 和 32 位 (FP32) 浮点类型。

平衡模型准确性和效率

现在我们已经介绍了多种模型优化技术,让我们讨论一下如何根据您的具体需求来决定使用哪一种。选择取决于可用的硬件部署环境的计算和内存约束以及所需的精度水平等因素。 

例如,更小、更快的模型更适合资源有限的移动设备,而更大、更精确的模型可用于高性能系统。以下是每种技术如何与不同目标相一致:

  • 剪枝: 它是减少模型大小的理想选择,且不会显着影响准确性,非常适合移动电话或物联网 (IoT) 设备等资源受限的设备。
  • 量化: 是缩小模型尺寸和加速推理的绝佳选择,尤其是在内存和处理能力有限的移动设备和嵌入式系统上。它非常适合对精度降低要求不高的应用。
  • 混合精度:此技术专为大规模模型设计,可减少内存使用并加速在支持混合精度操作的 GPU 和 TPU 等硬件上的训练。它通常用于注重效率的高性能任务中。
  • 超参数调优:虽然计算量很大,但对于需要高精度的应用(如 医学成像自动驾驶)至关重要。

主要要点

模型优化是机器学习的重要组成部分,尤其是在实际应用中部署AI时。超参数调整、模型剪枝、量化和混合精度等技术有助于提高计算机视觉模型的性能、效率和资源利用率。这些优化使模型更快,资源密集度更低,这非常适合内存和处理能力有限的设备。优化后的模型也更易于跨不同平台进行扩展和部署,从而实现既有效又适应各种用途的AI解决方案。

请访问 Ultralytics 的 GitHub 仓库,并加入我们的社区,以了解更多关于人工智能在制造业农业中的应用。

让我们一起构建人工智能的未来!

开启您的机器学习未来之旅

免费开始
链接已复制到剪贴板