MobileBERT:一个在资源有限设备上使用的BERT模型

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Viktor Karlsson

编译:ronghuaiyang

导读

在蒸馏之后对学生模型再进行微调,进一步提升能力。

随着NLP模型的大小增加到数千亿个参数,创建这些模型的更紧凑表示的重要性也随之增加。知识蒸馏成功地实现了这一点,在一个例子中,教师模型的性能的96%保留在了一个小7倍的模型中。然而,在设计教师模型时,知识的提炼仍然被认为是事后考虑的事情,这可能会降低效率,把潜在的性能改进留给学生。

此外,在最初的提炼后对小型学生模型进行微调,而不降低他们的表现是困难的,这要求我们对教师模型进行预训练和微调,让他们完成我们希望学生能够完成的任务。因此,与只训练教师模型相比,通过知识蒸馏训练学生模型将需要更多的训练,这在推理的时候限制了学生模型的优点。

如果在设计和训练教师模型的过程中,将知识的提炼放在首要位置和中心位置,会有什么可能呢?我们能否设计并成功地训练一个“假定”要被蒸馏的模型,蒸馏后的版本能否成功地在任何下游任务上进行微调?这是我们在本文中总结的MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices中提出的一些问题。

MobileBERT 结构

Transformer结构可视化 (a) BERT, (b) MobileBERT 教师,(c) MobileBERT 学生。用“Linear”标记的绿色梯形称为bottlenecks。

线性层

知识的蒸馏要求我们比较老师和学生的表示,以便将它们之间的差异最小化。当两个矩阵或向量维数相同时,这是很直接的。因此,MobileBERT在transformer块中引入了一个bottleneck 层。这让学生和老师的输入在大小上是相等的,而他们的内部表示可以不同。这些bottleneck在上图中用“Linear”标记为绿色梯形。在本例中,共享维度是512,而教师和学生的内部表示大小分别是1024和128。这使得我们可以使用BERT-large(340M参数)等效模型来训练一个25M参数的学生。

此外,由于两个模型的每个transformer块的输入和输出尺寸是相同的,因此可以通过简单的复制将嵌入参数和分类器参数从教师传递给学生!

多头注意力

细心的读者会注意到,多头注意块(MHA)的输入不是先前线性投影的输出。相反,使用初始输入。这篇论文的设计选择没有任何动机,只能让我们去推测。我相信其原因是它所允许的自由度增加了。基本上,我们将迫使模型处理信息的方式分离为两个单独的流,一个流入MHA块,另一个作为跳跃连接。(使用线性投影的输出并不会因为初始的线性变换而改变MHA块的行为,这也是很容易说服自己的。)

堆叠FFN

为了在这个小的学生模型中实现足够大的容量,作者引入了他们所谓的stacked FFN,如图中学生模型概述中的虚线框所示。Stacked FFN只是简单的将Feed Forward + Add & Norm blocks块重复了4次,选择这一方式来得到MHA和FFN block之间的良好的参数比例。本工作中的消融研究表明,当该比值在0.4-0.6范围内时,性能最佳。

操作优化

由于其目标之一是在资源有限的设备上实现快速推理,因此作者确定了他们的架构可以进一步改进的两个方面。

  1. 把smooth GeLU的激活函数更换为ReLU

  2. 将normalization操作转换为element-wise的线性变换

建议知识蒸馏目标

为了实现教师和学生之间的知识转移,作者在模型的三个阶段进行了知识蒸馏:

  1. 特征图迁移 —— 允许学生模仿老师在每个transformer层的输出。在上面的架构图中,它表示为模型输出之间的虚线箭头。

  2. 注意力图迁移 —— 这让老师在不同层次上关注学生,这也是我们希望学生学习的另一个重要属性。这是通过最小化每一层和头部的注意力分布(KL散度)之间的差异而实现的。

  3. 预训练蒸馏 —— 也可以在预训练中使用蒸馏,通过组合Masked语言建模和下一个句子预测任务的线性组合。

有了这些目标,我们就有了不止一种方法来进行知识的提炼。作者提出了三种备选方案:

  1. 辅助知识迁移。分层的知识迁移目标与主要目标(Masked语言建模和下一句预测)一起最小化。这可以被认为是最简单的方法。

  2. 联合知识迁移。不要试图一次完成所有的目标,可以将知识提炼和预训练分为两个阶段。首先对所有分层知识蒸馏损失进行训练直到收敛,然后根据预训练的目标进行进一步训练。

  3. 进一步的知识转移。两步法还可以更进一步。如果所有层同时进行训练,早期层没有很好的最小化的错误将会传播并影响以后层的训练。因此,最好是一次训练一层,同时冻结或降低前一层的学习速度。

知识迁移技术。(a) 辅助知识迁移,(b) 联合知识迁移, (c) 进一步知识迁移

实验结果

作者在三种配置中评估了他们提出的MobileBERT:有25M参数的主模型(MobileBERT),没有操作优化的同一个模型(MobileBERT w/o OPT),以及只有15M参数的模型(MobileBERT-tiny)。这些模型都与基线算法进行了比较,如ELMo,GPT和BERT-base以及相关蒸馏工作:BERT-PKD, DistilBERT。

研究发现,通过渐进式知识转移,训练这些不同的MobileBERT是最有效的,其效果始终显著优于其他两个。

在GLUE benchmark上的结果

我们发现,MobileBERT w/o OPT比大得多的BERT-base的平均GLUE得分高出0.2,而比它小4倍。另一方面,MobileBERT仅落后于BERT-base 0.6分,但推理时间快得多 —— 在Pixel 4的手机上对128个tokens序列进行推理只需要62毫秒!然而,它的性能仍然具有竞争力,因为它的性能远远超过GTP和ELMo。

因此,可以肯定地说,我们可以创建一个蒸馏模型,它可以在资源有限的设备上达到既高性能又快速

与TinyBERT相比,MobileBERT-tiny的性能略好一些。然而,当你考虑到TinyBERT是如何为GLUE任务进行微调时,这一点就更令人印象深刻了。记住,在此工作之前,不可能去微调学生模型,因为他们的容量太小了。因此,在把它的知识提炼成TinyBERT之前,必须对它的老师BERT-base进行微调!但对MobileBERT来说,情况并非如此。

MobileBERT已经在GLUE上被自己进行了微调,这证明了它可以通过建议的蒸馏过程创建一个任务不可知的模型。

总结

MobileBERT在transformer模块中引入了bottlenecks,这使得我们可以更容易地将知识从大尺寸的教师模型中提取到小尺寸的学生模型中。这种技术允许我们减少学生的宽度,而不是深度,这是已知的,以产生一个更有能力的模型。这个模型强调了这样一个事实,它可以创建一个学生模型,它本身可以在最初的蒸馏过程后进行微调

此外,结果还表明,这在实际应用中也是正确的,因为在Pixel 4的手机上,MobileBERT在GLUE上的参数减少了4倍,推理速度加快了5.5倍,却能达到BERT-base性能的99.2%。

—END—

英文原文:https://medium.com/dair-ai/mobilebert-a-task-agnostic-bert-for-resource-limited-devices-️-c4fe3ee3815d

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧

### Task-agnostic 视频语言模型 (VLM) 的预训练及其在视频理解中的应用 #### 定义与背景 Task-agnostic 视频语言模型(VLM)是一种能够处理多任务场景的通用型模型,旨在通过联合建模视频和文本数据来捕捉跨模态的信息交互。这种类型的模型通常通过对大规模未标注或多标签的数据集进行自监督学习完成预训练阶段[^2]。相比传统的任务特定模型,Task-agnostic VLM 更加灵活,在多个下游任务中表现出色。 #### 预训练方法概述 预训练的核心目标是从大量无标记或弱标记的多媒体数据中提取有用的特征表示。对于视频语言模型而言,常见的做法是将视频序列分解为离散的时间步,并将其映射到高维向量空间中。具体来说,给定一段视频片段 \( v \),以及对应的自然语言描述 \( t \),可以通过以下方式实现: 1. **Token化**: 将视频帧转换为一系列 token 嵌入,这一步骤可能涉及使用冻结的视觉编码器(如 ResNet 或 Swin Transformer)提取每帧的空间特征。 2. **时间建模**: 利用可训练的 MLP 层或其他结构进一步捕获帧间关系,从而得到最终的视频 token 表示。 3. **对比学习框架**: 在许多情况下,采用基于对比损失的目标函数优化模型参数,使得正样本对之间的相似度最大化而负样本最小化[^3]。 #### 应用于视频理解的具体案例分析 以 Meta AI 和 CMU 提出的任务无关视频语言模型为例,该架构展示了如何有效地结合来自不同源域的知识来进行广泛的视频理解和生成任务。此外,还有其他研究尝试比较不同类型 VLM 架构的效果差异,例如 BLIPBASE 和 XVLMCLIP 这两类分别代表了编解码器网络混合模式和平行流模式的设计理念。 当涉及到实际应用场景时,像 SeeDo 系统那样利用预先训练好的大型多模态语言模型去解析真实世界的演示录像成为一种新兴趋势[^1]。它不仅继承了传统模仿学习技术的优点——即把复杂的操作拆分成更易于管理的小单元;同时还引入了先进的 NLP 技术支持更加多样化的动作执行形式。 ```python import torch from transformers import VideoMAEModel, AutoTokenizer def extract_video_features(video_frames): video_encoder = VideoMAEModel.from_pretrained('videomae-base') tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') with torch.no_grad(): frame_embeddings = video_encoder(video_frames).last_hidden_state text_input_ids = tokenizer("A man is playing basketball", return_tensors="pt")['input_ids'] # Hypothetical fusion mechanism between visual and textual embeddings. fused_representation = combine_visual_textual(frame_embeddings, text_input_ids) return fused_representation def combine_visual_textual(vis_emb, txt_id): pass # Placeholder for actual implementation details. video_data = ... # Preprocessed input data structure containing frames. result = extract_video_features(video_data) print(result.shape) ``` 上述代码片段展示了一个简单的例子说明怎样加载现成工具包里的组件并组合起来形成初步解决方案雏形。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值