🚀 MobileBERT在SQuAD v2上微调
本项目基于MobileBERT在SQuAD v2数据集上进行微调,用于问答任务。MobileBERT是BERT_LARGE的精简版本,配备了瓶颈结构,并在自注意力机制和前馈网络之间进行了精心设计的平衡。
🚀 快速开始
示例代码
from transformers import pipeline
qa_pipeline = pipeline(
"question-answering",
model="csarron/mobilebert-uncased-squad-v2",
tokenizer="csarron/mobilebert-uncased-squad-v2"
)
predictions = qa_pipeline({
'context': "The game was played on February 7, 2016 at Levi's Stadium in the San Francisco Bay Area at Santa Clara, California.",
'question': "What day was the game played on?"
})
print(predictions)
✨ 主要特性
- 模型精简:MobileBERT是BERT_LARGE的精简版本,在保持性能的同时减少了模型大小。
- 微调优化:在SQuAD v2数据集上进行微调,适用于问答任务。
📦 安装指南
环境要求
- Python:
3.7.5
- 机器配置:
- CPU: Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz
- 内存: 32 GiB
- GPU: 2 GeForce GTX 1070,每块显存8GiB
- GPU驱动: 418.87.01,CUDA: 10.1
安装步骤
# 安装https://github.com/huggingface/transformers
cd examples/question-answering
mkdir -p data
wget -O data/train-v2.0.json https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v2.0.json
wget -O data/dev-v2.0.json https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v2.0.json
export SQUAD_DIR=`pwd`/data
python run_squad.py \
--model_type mobilebert \
--model_name_or_path google/mobilebert-uncased \
--do_train \
--do_eval \
--do_lower_case \
--version_2_with_negative \
--train_file $SQUAD_DIR/train-v2.0.json \
--predict_file $SQUAD_DIR/dev-v2.0.json \
--per_gpu_train_batch_size 16 \
--per_gpu_eval_batch_size 16 \
--learning_rate 4e-5 \
--num_train_epochs 5.0 \
--max_seq_length 320 \
--doc_stride 128 \
--warmup_steps 1400 \
--save_steps 2000 \
--output_dir $SQUAD_DIR/mobilebert-uncased-warmup-squad_v2 2>&1 | tee train-mobilebert-warmup-squad_v2.log
微调大约需要3.5小时完成。
📚 详细文档
数据集详情
数据集 |
划分 |
样本数量 |
SQuAD2.0 |
训练集 |
130k |
SQuAD2.0 |
评估集 |
12.3k |
微调结果
指标 |
数值 |
原始值(表5) |
EM |
75.2 |
76.2 |
F1 |
78.8 |
79.2 |
请注意,上述结果未进行任何超参数搜索。
📄 许可证
本项目采用MIT许可证。
由 Qingqing Cao 创建 | GitHub | Twitter
于纽约用心打造。