🚀 DistilCamemBERT-QA
我們推出了 DistilCamemBERT-QA,這是基於 DistilCamemBERT 針對法語問答任務進行微調的模型。該模型使用了兩個數據集構建,分別是 FQuAD v1.0 和 Piaf,這些數據集包含上下文、問題以及上下文中對應的答案。
這種模型構建方式與基於 CamemBERT 模型的 etalab-ia/camembert-base-squadFR-fquad-piaf 類似。基於 CamemBERT 的模型存在一個問題,例如在生產階段進行擴展時,推理成本可能會成為一個技術難題,特別是在像本任務這樣的交叉編碼場景中。為了應對這一問題,我們提出了這個模型,藉助 DistilCamemBERT,在相同功耗下將推理時間縮短了一半。
📦 安裝指南
文檔未提及安裝步驟,暫不展示。
✨ 主要特性
- 基於 DistilCamemBERT 微調,專為法語問答任務設計。
- 相比基於 CamemBERT 的模型,在相同功耗下推理時間減半。
📚 詳細文檔
數據集
數據集包含 FQuAD v1.0 和 Piaf,訓練集有 24566 個問答對,評估集有 3188 個問答對。
評估結果和基準測試
我們將 DistilCamemBERT-QA 與另外兩個處理法語的模型進行了比較。第一個是 etalab-ia/camembert-base-squadFR-fquad-piaf,它基於著名的法語 RoBERTa 模型 CamemBERT;第二個是 fmikaelian/flaubert-base-uncased-squad,基於另一個基於 BERT 架構的法語模型 FlauBERT。
在基準測試中,我們進行了預測答案與真實答案之間的逐字比較。同時,我們使用了 f1 分數來衡量預測響應與真實答案之間的交集質量。最後,我們使用包含分數來衡量真實答案是否包含在預測答案中。平均推理時間的測量使用了 AMD Ryzen 5 4500U @ 2.3GHz 6 核 處理器。
請不要考慮 FlauBERT 模型的結果。該模型的構建似乎存在問題,因為其結果看起來非常低。
💻 使用示例
基礎用法
from transformers import pipeline
qa_engine = pipeline(
"question-answering",
model="cmarkea/distilcamembert-base-qa",
tokenizer="cmarkea/distilcamembert-base-qa"
)
result = qa_engine(
context="David Fincher, né le 28 août 1962 à Denver (Colorado), "
"est un réalisateur et producteur américain. Il est principalement "
"connu pour avoir réalisé les films Seven, Fight Club, L'Étrange "
"Histoire de Benjamin Button, The Social Network et Gone Girl qui "
"lui ont valu diverses récompenses et nominations aux Oscars du "
"cinéma ou aux Golden Globes. Réputé pour son perfectionnisme, il "
"peut tourner un très grand nombre de prises de ses plans et "
"séquences afin d'obtenir le rendu visuel qu'il désire. Il a "
"également développé et produit les séries télévisées House of "
"Cards (pour laquelle il remporte l'Emmy Award de la meilleure "
"réalisation pour une série dramatique en 2013) et Mindhunter, "
"diffusées sur Netflix.",
question="Quel est le métier de David Fincher ?"
)
result
{'score': 0.7981914281845093,
'start': 61,
'end': 98,
'answer': ' réalisateur et producteur américain.'}
高級用法(Optimum + ONNX)
from optimum.onnxruntime import ORTModelForQuestionAnswering
from transformers import AutoTokenizer, pipeline
HUB_MODEL = "cmarkea/distilcamembert-base-qa"
tokenizer = AutoTokenizer.from_pretrained(HUB_MODEL)
model = ORTModelForQuestionAnswering.from_pretrained(HUB_MODEL)
onnx_qa = pipeline("question-answering", model=model, tokenizer=tokenizer)
quantized_model = ORTModelForQuestionAnswering.from_pretrained(
HUB_MODEL, file_name="model_quantized.onnx"
)
📄 許可證
本項目採用 CC BY-NC-SA 3.0 許可證。
📖 引用
@inproceedings{delestre:hal-03674695,
TITLE = {{DistilCamemBERT : une distillation du mod{\`e}le fran{\c c}ais CamemBERT}},
AUTHOR = {Delestre, Cyrile and Amar, Abibatou},
URL = {https://hal.archives-ouvertes.fr/hal-03674695},
BOOKTITLE = {{CAp (Conf{\'e}rence sur l'Apprentissage automatique)}},
ADDRESS = {Vannes, France},
YEAR = {2022},
MONTH = Jul,
KEYWORDS = {NLP ; Transformers ; CamemBERT ; Distillation},
PDF = {https://hal.archives-ouvertes.fr/hal-03674695/file/cap2022.pdf},
HAL_ID = {hal-03674695},
HAL_VERSION = {v1},
}