🚀 BERT-base无大小写区分模型在SQuAD v1上微调
本模型解决了在问答任务中提升模型推理速度同时尽量保持准确率的问题。通过对BERT-base无大小写区分模型进行微调与剪枝,在SQuAD v1数据集上实现了推理速度的提升,为问答系统的实际应用提供了更高效的解决方案。
🚀 快速开始
要使用此模型,首先需要安装nn_pruning
库,它包含优化脚本,可通过移除空行/列将线性层打包成更小的形式。
pip install nn_pruning
然后,你可以像往常一样使用transformers
库,只需在管道加载时调用optimize_model
即可。
from transformers import pipeline
from nn_pruning.inference_model_patcher import optimize_model
qa_pipeline = pipeline(
"question-answering",
model="madlag/bert-base-uncased-squadv1-x2.32-f86.6-d15-hybrid-v1",
tokenizer="madlag/bert-base-uncased-squadv1-x2.32-f86.6-d15-hybrid-v1"
)
print("bert-base-uncased参数数量: 165.0M")
print(f"参数数量(仅包括注意力头剪枝,不包括前馈层剪枝)={int(qa_pipeline.model.num_parameters() / 1E6)}M")
qa_pipeline.model = optimize_model(qa_pipeline.model, "dense")
print(f"完全优化后的参数数量={int(qa_pipeline.model.num_parameters() / 1E6)}M")
predictions = qa_pipeline({
'context': "Frédéric François Chopin, born Fryderyk Franciszek Chopin (1 March 1810 – 17 October 1849), was a Polish composer and virtuoso pianist of the Romantic era who wrote primarily for solo piano.",
'question': "Who is Frederic Chopin?",
})
print("预测结果", predictions)
✨ 主要特性
- 剪枝优化:线性层仅包含原权重的15.0%,整体模型包含原权重的34.0%,通过剪枝方法得到结构化矩阵,使模型在评估时运行速度比
bert-base-uncased
快2.32倍。
- 准确率表现:在准确率方面,其F1值为86.64,相比
bert-base-uncased
的88.5,F1值下降了1.86。
- 大小写不敏感:该模型不区分大小写,例如不区分
english
和English
。
📚 详细文档
精细剪枝细节
本模型是基于HuggingFace的bert-base-uncased检查点在SQuAD1.1上进行微调,并从bert-large-uncased-whole-word-masking-finetuned-squad模型进行知识蒸馏得到的。块剪枝的一个副作用是部分注意力头被完全移除,在总共144个注意力头中移除了63个(43.8%)。
SQuAD1.1数据集详情
数据集 |
划分 |
样本数量 |
SQuAD1.1 |
训练集 |
90.6K |
SQuAD1.1 |
评估集 |
11.1k |
微调信息
CPU: Intel(R) Core(TM) i7-6700K CPU
内存: 64 GiB
GPU: 1 GeForce GTX 3090,显存24GiB
GPU驱动: 455.23.05,CUDA: 11.1
结果
Pytorch模型文件大小:368MB
(原始BERT:420MB
)
指标 |
值 |
原始值(表2) |
变化 |
精确匹配率(EM) |
78.77 |
80.8 |
-2.03 |
F1值 |
86.64 |
88.5 |
-1.86 |
📄 许可证
本模型采用MIT许可证。