🚀 BERT-base無大小寫區分模型在SQuAD v1上微調
本項目是一個基於BERT-base無大小寫區分模型在SQuAD v1數據集上進行微調的問答系統。通過使用特定的剪枝技術,在保證模型性能的同時,顯著提升了模型的推理速度。
✨ 主要特性
- 高效推理:通過剪枝技術,模型在評估時的運行速度比密集模型快1.84倍。
- 性能提升:與密集版本相比,F1分數提高了0.22,達到了88.72。
- 參數減少:線性層僅保留了原權重的36.0%,整體模型保留了原權重的50.0%。
📦 安裝指南
安裝nn_pruning
庫,其中包含優化腳本,可通過移除空行/列將線性層打包成更小的矩陣。
pip install nn_pruning
💻 使用示例
基礎用法
from transformers import pipeline
from nn_pruning.inference_model_patcher import optimize_model
qa_pipeline = pipeline(
"question-answering",
model="madlag/bert-base-uncased-squadv1-x1.84-f88.7-d36-hybrid-filled-v1",
tokenizer="madlag/bert-base-uncased-squadv1-x1.84-f88.7-d36-hybrid-filled-v1"
)
print("/home/lagunas/devel/hf/nn_pruning/nn_pruning/analysis/tmp_finetune parameters: 218.0M")
print(f"Parameters count (includes only head pruning, not feed forward pruning)={int(qa_pipeline.model.num_parameters() / 1E6)}M")
qa_pipeline.model = optimize_model(qa_pipeline.model, "dense")
print(f"Parameters count after complete optimization={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", predictions)
📚 詳細文檔
模型信息
屬性 |
詳情 |
模型類型 |
BERT-base無大小寫區分模型在SQuAD v1上微調 |
訓練數據 |
SQuAD1.1 |
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模型文件大小:379MB
(原始BERT:420MB
)
指標 |
值 |
原始值 (表2) |
變化 |
EM |
81.69 |
80.8 |
+0.89 |
F1 |
88.72 |
88.5 |
+0.22 |
🔧 技術細節
精細剪枝詳情
本模型是從HuggingFace的模型檢查點在SQuAD1.1上進行微調,並從模型csarron/bert-base-uncased-squad-v1進行蒸餾得到的。該模型不區分大小寫,即對英文的大小寫不做區分。
塊剪枝的一個副作用是部分注意力頭被完全移除:在總共144個注意力頭中,有48個(33.3%)被移除。以下是剪枝後剩餘注意力頭在網絡中的分佈詳情。
在評估時,通過對線性矩陣進行簡單的調整,模型的運行速度比密集模型快1.84倍。這是因為剪枝方法產生了結構化矩陣,你可以將鼠標懸停在下面的圖表上,查看每個矩陣的非零/零部分。
📄 許可證
本項目採用MIT許可證。