🚀 动态TinyBERT:通过动态序列长度提升TinyBERT的推理效率
动态TinyBERT针对问答这一自然语言处理任务进行了微调,在SQuAD 1.1数据集上进行训练。Guskin等人 (2021) 指出:
动态TinyBERT是一个TinyBERT模型,它利用序列长度缩减和超参数优化,在任何计算预算下提高推理效率。动态TinyBERT只需训练一次,性能与BERT相当,并且在准确率 - 速度权衡方面优于其他任何高效方法(最高可达3.3倍加速,损失下降小于1%)。
✨ 主要特性
- 针对问答任务进行微调,在SQuAD 1.1数据集上训练。
- 利用序列长度缩减和超参数优化提升推理效率。
- 只需训练一次,性能与BERT相当,且在准确率 - 速度权衡方面表现出色。
📦 安装指南
文档未提及安装步骤,暂不提供。
💻 使用示例
基础用法
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("Intel/dynamic_tinybert")
model = AutoModelForQuestionAnswering.from_pretrained("Intel/dynamic_tinybert")
context = "remember the number 123456, I'll ask you later."
question = "What is the number I told you?"
tokens = tokenizer.encode_plus(question, context, return_tensors="pt", truncation=True)
input_ids = tokens["input_ids"]
attention_mask = tokens["attention_mask"]
outputs = model(input_ids, attention_mask=attention_mask)
start_scores = outputs.start_logits
end_scores = outputs.end_logits
answer_start = torch.argmax(start_scores)
answer_end = torch.argmax(end_scores) + 1
answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(input_ids[0][answer_start:answer_end]))
print("Answer:", answer)
📚 详细文档
模型详情
属性 |
详情 |
模型作者 - 公司 |
Intel |
模型卡片作者 |
Intel与Hugging Face合作 |
日期 |
2021年11月22日 |
版本 |
1 |
模型类型 |
自然语言处理 - 问答 |
架构 |
"对于我们的动态TinyBERT模型,我们使用TinyBERT6L的架构:一个6层的小型BERT模型,隐藏层大小为768,前馈层大小为3072,有12个注意力头。" Guskin等人 (2021) |
论文或其他资源 |
论文;海报;GitHub仓库 |
许可证 |
Apache 2.0 |
问题或评论 |
社区板块 和 Intel开发者Discord |
预期用途
预期用途 |
详情 |
主要预期用途 |
你可以将该模型用于自然语言处理的问答任务:给定一段文本语料,你可以向它提出关于该文本的问题,它将在文本中找到答案。 |
主要预期用户 |
任何进行问答任务的人 |
超出范围的用途 |
该模型不应被用于故意为人们创造敌对或排斥的环境。 |
影响因素
因素 |
详情 |
分组 |
训练数据包含许多带有问答标签的维基百科文章 |
仪器 |
- |
环境 |
训练在Titan GPU上完成。 |
卡片提示 |
在其他硬件和软件上部署模型会改变模型性能 |
指标
指标 |
详情 |
模型性能指标 |
F1 |
决策阈值 |
- |
不确定性和可变性处理方法 |
- |
训练和评估数据
数据 |
详情 |
数据集 |
SQuAD1.1:"斯坦福问答数据集(SQuAD)是一个阅读理解数据集,由众包工作者在一组维基百科文章上提出的问题组成,每个问题的答案是相应阅读段落中的一段文本,或者问题可能无法回答。" (https://huggingface.co/datasets/squad) |
动机 |
为问答任务构建一个高效且准确的模型。 |
预处理 |
"我们从一个预训练的通用TinyBERT学生模型开始,该模型使用TinyBERT提出的通用蒸馏方法学习BERT的通用知识。我们从一个微调后的BERT教师模型向学生模型进行Transformer蒸馏,遵循原始TinyBERT中使用的相同训练步骤:(1)中间层蒸馏(ID)——学习隐藏状态和注意力矩阵中的知识,(2)预测层蒸馏(PD)——拟合教师模型的预测。" (Guskin等人, 2021) |
模型性能分析
模型 |
最大F1值(全模型) |
在BERT 1%损失内的最佳加速比 |
动态TinyBERT |
88.71 |
3.3倍 |
伦理考量
考量 |
详情 |
数据 |
训练数据来自维基百科文章 |
人类生活 |
该模型并非旨在为对人类生活或繁荣至关重要的决策提供信息。它是一组聚合的带标签的维基百科文章。 |
缓解措施 |
在模型开发过程中未考虑额外的风险缓解策略。 |
风险和危害 |
大量研究已经探讨了语言模型的偏差和公平性问题(例如,Sheng等人, 2021,以及 Bender等人, 2021)。该模型生成的预测可能包括针对受保护类别、身份特征以及敏感、社会和职业群体的令人不安和有害的刻板印象。除此之外,使用该模型所涉及的风险程度仍然未知。 |
使用案例 |
- |
注意事项和建议
用户(直接用户和下游用户)应了解该模型的风险、偏差和局限性。该模型没有额外的注意事项或建议。
🔧 技术细节
文档未提供足够详细的技术实现细节,暂不提供。
📄 许可证
本模型使用Apache 2.0许可证。
BibTeX引用
@misc{https://doi.org/10.48550/arxiv.2111.09645,
doi = {10.48550/ARXIV.2111.09645},
url = {https://arxiv.org/abs/2111.09645},
author = {Guskin, Shira and Wasserblat, Moshe and Ding, Ke and Kim, Gyuwan},
keywords = {Computation and Language (cs.CL), Machine Learning (cs.LG), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {Dynamic-TinyBERT: Boost TinyBERT's Inference Efficiency by Dynamic Sequence Length},
publisher = {arXiv},
year = {2021},