术语表

FLOPs

了解机器学习中的 FLOPs!了解它如何衡量模型复杂性、影响效率并帮助选择硬件。

FLOPs,即浮点运算,是机器学习(ML)中用来衡量模型计算复杂度的基本指标。浮点运算是任何涉及带小数点的数字的数学计算,如加法、减法、乘法或除法,是神经网络的标准运算。虽然该术语在技术上可以指每秒的运算次数,但在深度学习中,FLOPs 通常量化模型单次前向传递所需的这些运算的总数。这一指标提供了一种与硬件无关的方法,用于估算模型在推理过程中的计算密集程度。这些数字通常非常大,以至于可以用 GigaFLOPs (GFLOPs) 或 TeraFLOPs (TFLOPs) 来表示,前者是数十亿次运算,后者是数万亿次运算。

为什么 FLOP 在机器学习中很重要?

FLOP 是衡量一个模型效率的重要指标。FLOP 数越低,通常表明模型运行速度越快,所需的计算能力越低。这对于资源有限的应用尤其重要,例如边缘人工智能和移动设备。通过分析 FLOP,开发人员可以

  • 比较模型架构:在选择不同模型(如模型比较页面中的模型)时,FLOPs 提供了一种评估计算效率和准确性的标准化方法。
  • 优化部署:在Raspberry PiNVIDIA Jetson 等硬件上部署模型时,选择具有适当 FLOP 数的模型对于达到所需的性能水平至关重要。
  • 指导模型设计:开发新架构(如Ultralytics YOLO系列中的架构)的研究人员通常会将 FLOPs 最小化作为关键设计约束。在EfficientNet等模型中探索的技术侧重于在不牺牲性能的前提下降低计算成本。

实际应用

FLOPs 是开发和部署人工智能解决方案时日常使用的实用指标。

  1. 移动视觉应用:为智能手机应用创建实时物体检测功能的开发人员必须选择一个既能快速运行又不会耗尽电池的模型。通过比较轻量级模型(如小型Ultralytics YOLO11变体)和其他模型的 FLOPs,开发人员可以选择一个在速度和精度之间取得良好平衡的模型,以满足设备CPUGPU 的需要。

  2. 自动驾驶汽车:在自动驾驶中,感知模型必须以极低的延迟处理摄像头信号。设计这些系统的工程师会分析各种模型的 FLOPs,以确保所选架构能在车辆的专用硬件上运行。如果像YOLO11这样的模型的 FLOPs 较低,能够满足安全运行的严格时序要求,就可能会被选中,而不是更复杂的模型。

FLOP 与相关指标的对比

重要的是要将 FLOP 与其他常用指标区分开来:

  • 参数与 FLOP模型权重(参数)的数量表示模型在内存存储方面的大小。另一方面,FLOP 衡量的是计算工作量。如果一个模型的参数在计算密集型操作中被多次重复使用,那么该模型的参数数可能很少,但 FLOP 数却很高。
  • MAC 与 FLOP:MAC 或乘加运算是神经网络中的一种常见运算。一个 MAC 通常被认为相当于两个 FLOP(一个乘法运算和一个加法运算)。一些研究论文和框架可能会报告以 MAC 为单位的计算成本,这大约是 FLOP 数值的一半。你可以在带代码的论文等资源中看到这种区别。
  • 延迟与 FLOPs推理延迟是指模型做出预测所需的实际壁钟时间。虽然 FLOPs 提供了很好的理论估算,但实际延迟会受到 FLOPs 无法捕捉的因素的影响,例如内存带宽、硬件并行性以及PyTorch 等软件库的效率。

局限性

FLOP 虽然有用,但也有局限性:

  • 它们没有考虑内存访问成本,而内存访问成本可能是一个重要瓶颈。
  • 它们无法反映操作中可能存在的并行程度。
  • 实际性能在很大程度上取决于特定硬件的优化和底层软件库(cuDNN英特尔 MKL)的效率。
  • 某些操作(如ReLU 等激活函数)的 FLOP 数较低,但仍会影响延迟。

因此,FLOPs 应与其他性能指标、参数和实际基准一起考虑,以全面了解模型的效率。Ultralytics HUB等工具可以帮助管理模型,并在开发和部署过程中跟踪各种性能方面。

加入 Ultralytics 社区

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

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