模型:
cmarkea/distilcamembert-base-qa
我们介绍DistilCamemBERT-QA,该模型是针对法语问答任务进行微调的。该模型使用了两个数据集,FQuAD v1.0和Piaf,包含了上下文、问题和其在上下文中的答案。
这种模型化与基于 CamemBERT 的模型相似。基于CamemBERT的模型化存在一个问题,在生产阶段,尤其是在跨编码任务中,推理成本可能成为技术问题。为了抵消这种影响,我们提出了这种模型化方法,通过DistilCamemBERT将推理时间缩短了一半,消耗同样的计算资源。
数据集包括FQuAD v1.0和Piaf,其中训练集有24,566个问题和答案,评估集有3,188个问题和答案。
我们将 DistilCamemBERT-QA 与另外两个针对法语的模型进行了比较。第一个模型 etalab-ia/camembert-base-squadFR-fquad-piaf 基于 CamemBERT ,即法语RoBERTa模型;第二个模型 fmikaelian/flaubert-base-uncased-squad 则基于 FlauBERT ,另一个基于BERT架构的法语模型。
对于我们的基准测试,我们对预测的答案和真实答案进行逐字比较。我们还使用f1-score来衡量预测答案与真实答案之间的交集质量。最后,我们使用包含度分数来衡量预测答案中是否包含真实答案。平均推理时间使用了一台AMD Ryzen 5 4500U @ 2.3GHz,拥有6个核心。
| model | time (ms) | exact match (%) | f1-score (%) | inclusion-score (%) |
|---|---|---|---|---|
| 12311321 | 216.96 | 25.66 | 62.65 | 59.82 |
| 12312321 | 432.17 | 59.76 | 79.57 | 69.23 |
| 12313321 | 875.84 | 0.22 | 5.21 | 3.68 |
请不要考虑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.'}
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 onnx model
quantized_model = ORTModelForQuestionAnswering.from_pretrained(
HUB_MODEL, file_name="model_quantized.onnx"
)
@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},
}