语言: 英语
数据集:
ONNX转换版Roberta-base问答模型
注意:此为模型第二版。关于版本更新的说明请参阅FARM代码库的GitHub议题。如需使用第一版,在Transformers 3.5加载模型时指定revision="v1.0"
,例如:
model_name = "deepset/roberta-base-squad2"
pipeline(model=model_name, tokenizer=model_name, revision="v1.0", task="question-answering")
概览
语言模型: roberta-base
语言: 英语
下游任务: 抽取式问答
训练数据: SQuAD 2.0
评估数据: SQuAD 2.0
代码: 参见FARM中的示例
基础设施: 4块Tesla v100显卡
超参数
批次大小 = 96
训练轮数 = 2
基础语言模型 = "roberta-base"
最大序列长度 = 386
学习率 = 3e-5
学习率调度 = 线性预热
预热比例 = 0.2
文档滑动步长 = 128
最大问题长度 = 64
使用蒸馏版模型
我们同时发布了该模型的蒸馏版本deepset/tinyroberta-squad2。蒸馏模型在预测质量相当的前提下,运行速度可达基础模型的两倍。
性能表现
使用官方评估脚本在SQuAD 2.0开发集上的评估结果:
"精确匹配": 79.87029394424324,
"F1分数": 82.91251169582613,
"总样本数": 11873,
"有答案_精确匹配": 77.93522267206478,
"有答案_F1": 84.02838248389763,
"有答案样本数": 5928,
"无答案_精确匹配": 81.79983179142137,
"无答案_F1": 81.79983179142137,
"无答案样本数": 5945
使用方式
在Transformers中使用
from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
model_name = "deepset/roberta-base-squad2"
nlp = pipeline('question-answering', model=model_name, tokenizer=model_name)
QA_input = {
'question': '为什么模型转换很重要?',
'context': '支持FARM与transformers之间的模型转换能为用户提供自由选择权,让人们能轻松切换不同框架。'
}
res = nlp(QA_input)
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
在FARM中使用
from farm.modeling.adaptive_model import AdaptiveModel
from farm.modeling.tokenization import Tokenizer
from farm.infer import Inferencer
model_name = "deepset/roberta-base-squad2"
nlp = Inferencer.load(model_name, task_type="question_answering")
QA_input = [{"questions": ["为什么模型转换很重要?"],
"text": "支持FARM与transformers之间的模型转换能为用户提供自由选择权,让人们能轻松切换不同框架。"}]
res = nlp.inference_from_dicts(dicts=QA_input, rest_api_schema=True)
model = AdaptiveModel.convert_from_transformers(model_name, device="cpu", task_type="question_answering")
tokenizer = Tokenizer.load(model_name)
在haystack中使用
如需进行大规模问答(处理多文档而非单段落),可通过haystack加载模型:
reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2")
reader = TransformersReader(model_name_or_path="deepset/roberta-base-squad2",tokenizer="deepset/roberta-base-squad2")
作者
Branden Chan: branden.chan [at] deepset.ai
Timo Möller: timo.moeller [at] deepset.ai
Malte Pietsch: malte.pietsch [at] deepset.ai
Tanay Soni: tanay.soni [at] deepset.ai
关于我们

我们通过开源将NLP技术赋能产业!
专注领域:行业专用语言模型与大规模问答系统。
部分成果:
联系我们:
Twitter | 领英 | Slack | GitHub讨论区 | 官网
附注:我们正在招聘!