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