英文

DistilCamemBERT-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模型的结果。模型化似乎存在问题,因为结果似乎非常低。

如何使用DistilCamemBERT-QA

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 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},
}