什么是TinyBERT?
TinyBERT是华为诺亚方舟实验室开发的一款紧凑型语言模型。它是流行的BERT模型的蒸馏版本,设计得显著更小、更快,使其适用于资源受限的环境,如移动设备、物联网小工具和边缘服务器。通过一种新颖的两阶段知识蒸馏过程,TinyBERT在标准NLP基准测试中保留了其较大对应模型(BERT-base)超过96%的性能,而其大小仅为后者的7.5分之一,推理速度则快9.4倍。
主要特点
- 两阶段知识蒸馏: TinyBERT在预训练和微调阶段都采用了一种独特的蒸馏方法。这使得较小的“学生”模型(TinyBERT)能够有效地从较大的“教师”模型(BERT)中学习。
- 高性能保持: 尽管体积小,TinyBERT在各种自然语言理解(NLU)任务上仍保持了高水平的准确性。
- 显著的尺寸减小: 该模型的大小约为BERT-base的15%,其4层版本只有1450万参数,而BERT-base有1.1亿参数。
- 推理速度: 它提供了推理时间的显著加速,这对于实时应用至关重要。
- 开源: 该模型及其源代码在Apache 2.0许可下免费提供,鼓励社区采用和开发。
应用场景
- 设备端NLP: 直接在手机或其他智能设备上运行文本分类、情感分析和问答等NLP任务,无需服务器。
- 边缘AI: 在延迟和带宽是主要考虑因素的边缘计算环境中部署语言理解能力。
- 实时应用: 为需要即时响应的聊天机器人、语言翻译服务和其他应用提供动力。
- 教育目的: 作为学习模型压缩和知识蒸馏技术的绝佳案例研究。
入门指南
您可以轻松地使用Hugging Face的transformers库开始使用TinyBERT。首先,请确保您已安装该库:
```bash pip install transformers
然后,您可以使用以下Python代码加载模型和分词器来处理文本:
```python from transformers import AutoTokenizer, AutoModel
从Hugging Face Hub加载分词器和模型
此示例使用4层通用TinyBERT
tokenizer = AutoTokenizer.from_pretrained(“huawei-noah/TinyBERT_General_4L_312D”) model = AutoModel.from_pretrained(“huawei-noah/TinyBERT_General_4L_312D”)
准备您的输入文本
text = “TinyBERT是一个紧凑而快速的模型。”
对输入进行分词
encoded_input = tokenizer(text, return_tensors=’pt’)
获取模型的输出
output = model(**encoded_input)
输出包含模型的隐藏状态
last_hidden_states = output.last_hidden_state
print(“输出张量的形状:”, last_hidden_states.shape)
预期的输出形状: torch.Size([1, 11, 312])
此示例演示了如何加载TinyBERT并获取给定文本的特征表示。这些特征随后可用于各种下游NLP任务。
定价
TinyBERT是一个开源研究项目,根据Apache 2.0许可条款,可免费用于商业和非商业目的。