Rethinking Depth Pruning for Vision Transformers: A Heterogeneity-Aware Perspective
本文介绍了 HetDPT,这是一种感知异构性的深度剪枝方法,它通过解决层间异构性问题,克服了现有方法在精度恢复方面的挑战,从而在多个基准测试中实现了在极小精度损失下的显著加速,适用于视觉 Transformer。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,将视觉 Transformer (ViT) 视为一座高度复杂的、多层结构的工厂,旨在识别图像。每一层楼都代表一个“层”(layer),用于处理图像。有些楼层专门负责注意力(Attention)(扫描整幅图像以观察不同部分之间的关系),而另一些楼层则负责激活(Activation)(应用特定的过滤器或“非线性”以锐化细节)。
多年来,试图让这些工厂在小型设备上运行得更快的工程师们,主要专注于宽度剪枝(Width Pruning)。这就像是在每一层楼雇佣更少的工人。你得到了一个更小的工厂,但它仍然拥有相同数量的楼层,因此产品仍然必须经过每一个层级。
该论文认为,一种更好的加速方法是深度剪枝(Depth Pruning):简单地移除整个楼层。如果你移除了 50% 的楼层,产品到达终点的时间会缩短一半。然而,以往的尝试都惨遭失败。工厂会崩溃,输出质量(图像识别能力)会大幅下降。
作者们通过 HetDPT 发现了为什么工厂会崩溃,并建立了一种新的方法来修复它。以下是简单的拆解:
问题所在:“不匹配”与“不同的个性”
论文指出了导致简单删除楼层行不通的两个主要原因:
维度不匹配(断裂的传送带):
想象一下,工厂有一个传送带系统。“注意力”楼层和“激活”楼层以特定的方式连接。如果你只是随机拆除一个“激活”楼层,前一个楼层的传送带会到达一个不存在的机器,或者现有的机器期望的尺寸不同。论文称之为“维度不匹配”。这就像试图把方头塞进圆孔,因为你拆掉了中间的适配器。- 解决方法: 作者意识到他们可以完全移除“激活”楼层,并简单地合并位于其两侧的两个“线性”(Linear)楼层(即机器)。这创造了一个全新的、无缝衔接的机器,能够完美契合传送带,即使在楼层减少的情况下也能保持工厂平稳运行。
异质性(不同的个性):
这是论文最重要的洞察。作者意识到,“注意力”楼层和“激活”楼层并不相同;它们拥有不同的“个性”。- 注意力楼层就像是高级经理。如果你解雇了一些经理,工厂起初运行会慢一些,但要重新训练到全速状态需要很长时间。他们很难被快速替代。
- 激活楼层就像是初级实习生。如果你解雇他们,工厂会立即崩溃(准确率降至接近于零)。但是,如果你给他们进行一次 10 分钟的快速培训(微调),他们几乎能瞬间恢复到全盛水平。
- 旧方法的错误: 以前的方法对所有楼层一视同其观。它们查看“梯度”(衡量一个楼层贡献程度的指标),并解雇那些数值最低的楼层。因为“高级经理”(注意力)与“实习生”(激活)的“电压”自然不同,旧方法会不断解雇错误的人,导致工厂崩溃。
解决方案:HetDPT(聪明的工厂经理)
作者创建了一个名为 HetDPT(异质性感知深度剪枝)的两步走过程来管理这座工厂:
第一步:预算分配(策略)
在解雇任何人之前,经理使用一个“模型准确率预测器”(智能计算器)。它不是问“哪个具体的楼层最差?”,而是问:“如果我们解雇 3 名高级经理和 5 名实习生,工厂还能正常运转吗?”
- 它测试解雇“经理”与解雇“实习生”的不同组合。
- 它寻找完美的平衡点(例如:“我们可以解雇 10 个楼层,但我们必须解雇 6 名实习生和仅 4 名经理,才能保持高质量”)。
- 这避免了直接比较“经理”和“实习生”的错误,因为这就像是在拿苹果和橘子做比较。
第二步:执行(清理)
一旦设定了预算(例如:“解雇 6 名实习生”),该方法会分别进入每个组进行操作。
- 它查看所有的“实习生”,并解雇其中需求量最小的那些。
- 它查看所有的“经理”,并解雇其中需求量最小的那些。
- 至关重要的一点是: 它会合并被解雇“实习生”周围的线性机器,使传送带完美契合(解决不匹配问题)。
- 最后,它会对剩余的员工进行一次快速的“复习课程”(微调),让他们恢复到 100% 的性能。
结果:在不损失质量的前提下实现提速
论文在多个标准图像数据集(如 ImageNet,类似于一个包含 100 万张图片的巨型相册)上进行了测试。
- 速度: 对于标准模型(DeiT-B),他们在保持准确率与原模型完全一致的同时,实现了 1.58 倍的加速。
- 极端压缩: 当他们将此方法与其他技术(宽度剪枝)结合时,他们创造了一个超轻量级的模型,其速度比原始模型快了 5.19 倍,且几乎没有准确率损失。
- 通用性: 它不仅适用于标准模型,还适用于更复杂的模型(Swin Transformers),甚至是拥有数十亿参数的庞大模型(DINO-V2-Giant)。
总结类比
想象一条制造汽车的长流水线。
- 旧方法: 你试图通过让流水线上的工人工作得更快来加速(宽度剪枝),或者随机解雇不同站点的工人,导致汽车底盘从流水线上掉下来,因为下一个站点还没准备好(失败的深度剪枝)。
- HetDPT 方法: 你意识到某些站点(实习生)可以被完全移除,只要你将两侧的机器焊接在一起即可。你也意识到解雇站点经理(注意力)会对流水线造成长期的影响,而解雇实习生虽然会带来短暂的影响,但他们恢复得很快。因此,你仔细计算出要解雇多少种类的员工,将机器焊接在一起,然后给剩下的团队一个简短的动员。结果是,汽车的产出速度快了一倍,而且依然是一辆完美的汽车。
论文得出结论,通过尊重不同“个性”的层并修复机械上的不匹配,我们可以让这些强大的 AI 模型在日常设备上运行得显著更快,同时不会损失其智能。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。