什么是MobileBERT?
MobileBERT是BERT-large的一个精简版本,专门为像手机这样资源受限的设备而适配。它由Google AI的研究人员开发,在Google Pixel 4手机的CPU上运行时,其性能与标准的BERT-Base模型相当,但体积小4.3倍,速度快5.5倍。它旨在将强大的自然语言处理(NLP)能力,如问答和文本分类,直接带到边缘设备,而无需服务器连接。
主要特点
- 在移动设备上的高性能: 在GLUE和SQuAD等标准NLP基准测试中,其准确性接近BERT-Base水平。
- 低延迟: 针对移动CPU上的快速推理进行了优化,在Pixel 4设备上实现了约40毫秒的延迟。
- 紧凑的体积: 该模型比BERT-Base小得多,使其适合包含在移动应用程序包中。
- 架构优化: 利用倒置瓶颈结构以及自注意力和前馈网络之间的精心平衡设计,在减少参数的同时保持性能。
- 迁移学习: 知识从一个经过特殊训练的、更大的“教师”模型(一个改进的BERT-large)转移到紧凑的MobileBERT“学生”模型。
使用案例
- 设备上问答: 将强大的问答系统集成到可离线工作的应用程序中。
- 移动文本分类: 直接在用户设备上执行情感分析、主题分类或垃圾邮件检测等任务。
- 智能回复: 在消息应用中为智能、上下文感知的回复建议提供支持。
- 移动助手的自然语言理解: 使语音助手能够在没有互联网连接的情况下理解命令和查询,从而提高隐私和速度。
入门指南
开始使用MobileBERT最简单的方法是使用Hugging Face的transformers库。这里有一个简单的Python示例,演示如何加载模型和分词器来执行掩码填充任务。
首先,确保你已经安装了该库: ```bash pip install transformers torch
然后,你可以使用以下Python代码: ```python from transformers import MobileBertTokenizer, MobileBertForMaskedLM import torch
加载预训练模型和分词器
tokenizer = MobileBertTokenizer.from_pretrained(‘google/mobilebert-uncased’) model = MobileBertForMaskedLM.from_pretrained(‘google/mobilebert-uncased’)
准备带有掩码标记的输入文本
text = f”The capital of France is {tokenizer.mask_token}.”
对输入进行分词
inputs = tokenizer(text, return_tensors=”pt”)
获取模型的预测
with torch.no_grad(): outputs = model(**inputs) predictions = outputs.logits
找到掩码位置预测得分最高的词元
masked_index = torch.where(inputs[“input_ids”] == tokenizer.mask_token_id)[1] predicted_token_id = predictions[0, masked_index, :].argmax(axis=-1) predicted_token = tokenizer.decode(predicted_token_id)
print(f”Original Text: {text}”) print(f”Predicted Token: {predicted_token}”)
预期输出: Paris
定价
MobileBERT是Google Research根据Apache 2.0许可证发布的开源项目。它完全免费,可用于商业和非商业目的。