Pruning
学习剪枝 (Pruning) 如何通过移除冗余参数来优化 Ultralytics YOLO26 等神经网络。探索适用于边缘 AI 的结构化和非结构化剪枝方法。
Pruning 是一种策略性的 model optimization 技术,用于通过移除不必要的参数来减少 neural networks 的大小和计算复杂度。就像园丁修剪枯死或过度生长的树枝以帮助树木茁壮成长一样,pruning 算法会识别并消除对模型的预测能力贡献甚微的冗余 weights and biases。首要目标是创建一个压缩的、“稀疏的”模型,在消耗显著较少内存和能量的同时保持高 accuracy。这种缩减对于改善 inference latency 至关重要,可让高级架构在手机和嵌入式设备等资源受限的硬件上高效运行。
机制与方法论#
现代 deep learning 模型通常存在过度参数化的情况,这意味着它们包含的连接远多于解决特定任务所需的连接。Pruning 利用这一点,移除了那些值接近零的连接,前提是假设它们对输出的影响微乎其微。在移除参数后,模型通常会经历一个 fine-tuning 过程,在此期间对其进行简短的再训练,以调整剩余的权重并恢复任何丢失的性能。这个概念与 Lottery Ticket Hypothesis 密切相关,该假设表明大型网络包含能够达到相似准确率的更小、高效性极高的子网络。
剪枝策略主要分为两大类:
- Unstructured Pruning:此方法根据权重的大小移除单个权重,而不管其位置如何。虽然它有效地减少了总参数量,但它创建了不规则的 sparse matrices,没有专门的软件,标准的 CPUs 和 GPUs 可能很难对其进行高效处理。
- Structured Pruning:这种方法移除整个几何结构,例如 convolutional neural network (CNN) 中的神经元、通道或层。通过保留矩阵结构,structured pruning 与标准硬件加速器高度兼容,通常可以为 real-time inference 带来立竿见影的速度提升。
实际应用#
在硬件资源有限的各种行业中,Pruning 对于实现 Edge AI 不可或缺:
-
Autonomous Drones:用于搜救的无人驾驶飞行器依靠 computer vision 来导航复杂的环境。Pruned object detection 模型允许这些设备在本地实时处理视频流,从而避免与云端通信相关的延迟问题。
-
Mobile Healthcare:用于 ultrasound analysis 的手持医疗设备利用 pruned 模型直接在设备上检测异常。这可确保患者 data privacy,并能够在没有互联网接入的偏远地区进行复杂的诊断。
实现示例#
尽管像 YOLO26 这样最先进的模型是为高效而设计的,但开发者可以使用像 PyTorch 这样的库应用 pruning 来进一步优化层。以下示例演示了如何将 unstructured pruning 应用于卷积层。
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")剪枝与相关优化技术的比较#
为了有效地优化模型以进行 deployment,区分 pruning 与其他策略会有所帮助:
- Model Quantization:与移除连接的 pruning 不同,quantization 会降低权重的精度(例如,将 32 位浮点数转换为 8 位整数)。这两种技术可以结合使用,以最大化 embedded systems 上的效率。
- Knowledge Distillation:这涉及训练一个较小的“学生”模型来模仿较大的“教师”模型行为。Pruning 直接修改原始模型,而 distillation 则训练一个新的紧凑架构。
对于全面的生命周期管理(包括训练、标注和部署优化模型),用户可以利用 Ultralytics Platform。这简化了从数据集管理到以 ONNX 或 TensorRT 等硬件友好格式导出模型的工作流。






