了解FLOPs如何衡量AI模型的计算复杂度。探索如何为Ultralytics 计算FLOPs,并优化边缘AI的性能表现。
浮点运算(FLOPs)是衡量机器学习模型计算复杂度的标准指标。它具体统计神经网络处理单个输入(如图像或句子)时必须执行的数学运算次数——主要涉及十进制数的加法和乘法运算。 在深度学习领域,FLOPs作为理论标尺,用于评估模型的"计算负荷"或计算成本。较高的FLOPs值通常表明模型结构更复杂,执行时需要更强的处理能力和能量消耗;而较低的FLOPs值则意味着模型采用轻量级架构,更注重效率优化。
在开发人工智能应用时,工程师常需在准确性和速度之间权衡取舍。浮点运算性能(FLOPs)作为推断延迟的硬件无关替代指标,使开发者无需在所有可能设备上进行基准测试即可比较不同架构。该指标对于选择适合特定部署场景的模型至关重要。 例如,在高性能云计算服务器上进行实验的研究人员可能优先考虑精度而非效率,因此会选用高FLOPs的模型。相反,为边缘AI设备开发应用的工程师则必须优先选择低FLOPs方案,以确保应用在严格的功耗和散热限制内流畅运行。
FLOPs的实际意义在计算资源至关重要的各个行业中显而易见。
区分"FLOPs"(FLOP的复数形式)与"FLOPS"(全大写形式)至关重要。虽然它们 看起来几乎相同,但衡量的是不同概念。FLOPs(小写's')指模型所需的总运算量—— 这是对复杂度的静态衡量。 FLOPS(大写'S')代表每秒浮点运算次数,用于衡量硬件的速度或性能能力,例如 GPU。可将FLOPs类比为汽车所需行驶的距离(待完成的工作量),而FLOPS则对应汽车的最高时速(硬件执行工作的能力)。
您可以轻松地Python Ultralytics 计算成本。这在模型优化阶段尤为有用,可确保神经网络符合硬件预算。以下示例演示了如何加载YOLO26模型并确定其浮点运算次数(FLOPs)。
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")
为提升模型部署能力,研究人员采用多种技术在不显著牺牲精度的前提下降低浮点运算量。模型剪枝通过移除神经网络中次要连接实现结构精简。 另一种技术是量化,通过降低计算中使用的数字精度(例如从32位浮点数降至8位整数)来实现。Ultralytics 提供的工具可简化这些优化流程,使高效模型更易部署至目标平台,例如 TensorRT 或 OpenVINO。通过理解并优化浮点运算性能,开发者能够构建兼具强大性能与可持续性的AI系统。