什么是 MobileBERT 和 DistilBERT?
MobileBERT 和 DistilBERT 是强大的 BERT (Bidirectional Encoder Representations from Transformers) 语言模型的紧凑、高效变体。它们是使用一种称为知识蒸馏的技术创建的,其中一个较小的“学生”模型(如 DistilBERT)学习模仿一个较大的“老师”模型(如 BERT)的行为。其结果是一组模型显著更小、更快,使其成为计算资源有限环境的理想选择,例如手机、物联网设备和网络浏览器。它们解决了在边缘直接部署高级 NLP 能力的关键问题,从而减少延迟、提高隐私并削减服务器成本。
主要特点
- 减小尺寸: DistilBERT 比 BERT-base 小约 40%,而 MobileBERT 更为紧凑,专为移动硬件限制而设计。
- 更快的推理速度: DistilBERT 比 BERT 快 60%,支持在消费级硬件上实现实时 NLP 应用。
- 高性能: 尽管尺寸较小,它们保留了其较大师兄模型超过 97% 的语言理解能力,在性能和尺寸之间提供了极佳的权衡。
- 设备端部署: 它们的主要优势是能够直接在边缘设备上运行,无需持续的互联网连接和服务器端处理。
- 开源: 这两个模型都是在 Apache 2.0 许可下开源的,并且可以通过像 Hugging Face Transformers 这样的库轻松获得。
使用案例
- 应用内情感分析: 在移动应用程序内实时分析用户评论或反馈。
- 设备端问答: 构建无需互联网连接即可工作的离线帮助台或信息检索系统。
- 实时文本分类: 在客户端即时对电子邮件、消息或文章进行分类。
- 智能回复: 在用户手机上运行的聊天应用中为智能回复建议提供支持。
- 物联网边缘 AI: 在处理能力有限的智能家居设备或工业传感器上执行自然语言理解。
入门指南
使用 Hugging Face transformers 库上手 DistilBERT 非常简单。以下 Python 代码展示了如何使用 DistilBERT 执行“填空”(fill-mask) 任务,即模型预测句子中缺失的单词。
```python from transformers import pipeline
使用 DistilBERT 初始化 fill-mask pipeline
你也可以使用其他蒸馏模型,如 ‘google/mobilebert-uncased’
unmasker = pipeline(‘fill-mask’, model=’distilbert-base-uncased’)
提供一个带有被遮盖词的句子
result = unmasker(“会议在 [MASK] 举行,讨论新的人工智能模型。”)
打印最高预测结果
print(result)
预期输出可能如下所示:
[{‘score’: 0.085, ‘token_str’: ‘北京’, ‘sequence’: ‘会议在北京举行, 讨论新的人工智能模型.’},
{‘score’: 0.076, ‘token_str’: ‘上海’, ‘sequence’: ‘会议在上海举行, 讨论新的人工智能模型.’},
…]
定价
MobileBERT 和 DistilBERT 是开源研究成果,在 Apache 2.0 许可下完全免费用于商业和非商业目的。成本只会与用于托管使用这些模型的应用程序的基础设施相关。
DistilBERT vs. MobileBERT
虽然两者都是蒸馏模型,但它们的设计目标略有不同。
- DistilBERT 是一个通用的蒸馏模型,旨在实现尺寸、速度和性能的绝佳平衡,使其成为许多应用的热门默认选择。
- MobileBERT 更加积极地针对移动和资源受限的硬件进行了优化。它采用了特定的架构选择,使其在使用 TensorFlow Lite 等框架部署时效率极高,有时会以与 DistilBERT 相比略低的原始性能为代价。当在移动设备上每一毫秒的延迟和每一千字节的内存都至关重要时,请选择 MobileBERT。