🚀 動態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},