VisionTransformer(ViT)两年前进入大众视野,成为计算机视觉研究的核心组成部分。它成功地将自然语言处理领域的一个Transformer模型迁移到了计算机视觉领域。从那时起,计算机视觉领域的进步加速了。VanillaViT虽然在成本和性能上有所超越,但还是有很多优势的。它们由简单的矩阵乘法组成,这使得它们比原始操作所建议的更快。此外,它们还支持强大的自我监督预训练技术,例如MAE(MaskedAutoencoder),可以在快速训练的同时产生最先进的结果。并且因为它们不对数据做出任何假设,所以它们可以应用于图像、音频、文本和许多其他模式而几乎没有变化。当然,理想很丰满,现实却很骨感。ViT模型规模大,延迟大。在资源受限的设备上运行这个复杂的模型可能会出现很多问题。令牌修剪:更好,但不是完全更好。对于计算速度慢的问题,研究人员给出了多种解决方案。加速视觉Transformer模型的一种常见方法是执行令牌剪枝。令牌在运行时被修剪,通过修剪不太重要的令牌产生高效的变形金刚。例如,DynamicViT分层修剪冗余标记以实现分类任务中的FLOPs减少。然而,令牌剪枝有几个问题,其中最重要的是剪枝令牌会导致信息丢失。因此,ViT模型令牌的令牌修剪数量是有限的。为了减少信息丢失,只对不重要的token进行剪枝。此外,为了使修剪后的标记有效,需要再次训练模型。这会导致额外的资源消耗。更重要的是,token剪枝是一个动态的过程,需要根据不同的图像或句子来确定不同的token剪枝量。虽然这对准确性有好处,但不够实用,因为在这种情况下,数据无法再进行批处理。为了解决这个问题,需要在剪枝过程中加入掩码,这会进一步影响效率的提升。简而言之,令牌剪枝确实让ViT运行得更快,但这是以信息丢失为代价实现的。TokenMerging:另一种思路是,ViT如何在速度上与剪枝相似,同时保持比剪枝更高的准确率?MetaAI研究团队给出了一个新的解题思路:TokenMerging(ToMe)。论文链接:https://arxiv.org/pdf/2210.09461.pdfTokenMerging选择合并token而不是剪枝。由于其自定义匹配算法,它与剪枝一样快,同时更准确。此外,它无需任何额外训练即可工作,因此您可以在大型模型上使用它来加速它们,而不会牺牲很多准确性。Meta的目标是在现有的ViT中插入一个TokenMerging模块,通过合并多余的token来提高训练和推理的吞吐量,而无需额外的训练。基本思想是:在Transformer模型中,通过合并,每一层减少r个token。假设一个Transformer模型有L层,通过合并可以减少rL个tokens。变量r的大小决定了速度和准确性之间的关系,因为较少的标记意味着较低的准确性但较高的吞吐量。值得注意的是,在TokenMerging中,无论图像的内容如何,??rLtokens都会减少。完美解决了token剪枝无法进行批处理的问题。在ToMe中,类似的令牌批次被合并到每个Transformer块中:例如,狗毛被合并到一个令牌中。TokenMerging被插入到每个注意力块和每个Transformer块中。这也与令牌修剪的工作流程形成对比。后者倾向于将剪枝步骤放在每个Transformer块的开头。通过TokenMerging,可以传播需要合并的token信息,ViT也可以利用attentionblock中的特征来决定哪些token需要合并。合并的第一步是识别相似的令牌。在已经提取出Transformer中的QKV(query,key,value)的情况下,研究团队通过消融实验发现,使用key最能衡量token之间的相似度(下图中紫色部分)。因为key已经概括了每个token所包含的信息,所以可以在Attention中的dot-product中使用它来衡量token之间的相似度。除了研究哪个指标更能衡量token相似度外,还需要知道用什么距离衡量相似度。研究团队通过实验发现,使用余弦距离来衡量token之间的相似度,可以获得准确率和速度之间的最佳关系。在确定了token的相似度之后,需要一种快速的方法来确定需要匹配哪些token以减少总的r。Meta团队没有使用kmeans聚类算法或者图分割算法,而是匹配算法,因为后者不仅可以准确匹配每层的token个数,还可以快速进行上千次匹配。这些都是迭代聚类算法无法完成的事情。因此,Meta团队想出了一个更高效的解决方案。设计目标如下。1.)避免任何无法并行化的迭代,2.)希望合并的更改是渐进的,因为聚类对可以合并到一个组中的标记数量没有限制(这会对网络产生不利影响),同时匹配不合并大多数标签。将所有标记分成大小相同的两组A和B。从集合A中的每个token到它在集合B中最相似的token画一条边。只留下最相似的r条边,其余删除。合并仍然连接的边(特征被平均)。将这两个集合放在一起,得到最终的合并结果。通过这种独特的技术,可以提高ViT模型的吞吐量和实际训练速度。使用TokenMerging可以使训练速度提高一倍。它可用于图像、视频和音频任务,并且仍能达到最先进的精度。
