🚀 BART-LARGE在SQuADv2上微调
这是一个在SQuADv2数据集上针对问答任务进行微调的bart-large模型。该模型可有效处理问答相关问题,为自然语言处理领域的问答场景提供了有力支持。
🚀 快速开始
你可以通过以下代码示例快速使用该模型进行问答任务:
from transformers import BartTokenizer, BartForQuestionAnswering
import torch
tokenizer = BartTokenizer.from_pretrained('a-ware/bart-squadv2')
model = BartForQuestionAnswering.from_pretrained('a-ware/bart-squadv2')
question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
encoding = tokenizer(question, text, return_tensors='pt')
input_ids = encoding['input_ids']
attention_mask = encoding['attention_mask']
start_scores, end_scores = model(input_ids, attention_mask=attention_mask, output_attentions=False)[:2]
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0])
answer = ' '.join(all_tokens[torch.argmax(start_scores) : torch.argmax(end_scores)+1])
answer = tokenizer.convert_tokens_to_ids(answer.split())
answer = tokenizer.decode(answer)
#answer => 'a nice puppet'
✨ 主要特性
- 多任务适用性:BART是一个seq2seq模型,适用于自然语言生成(NLG)和自然语言理解(NLU)任务。
- 长序列处理能力:能够处理长达1024个标记的序列。
- 性能表现:在SQuAD数据集上,bart-large取得了与ROBERTa相当的成绩。
📚 详细文档
模型详情
BART在论文 BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension 中被提出。为了将BART用于问答任务,我们将完整的文档输入到编码器和解码器中,并使用解码器的顶层隐藏状态作为每个单词的表示,该表示用于对标记进行分类。
属性 |
详情 |
编码器层数 |
12 |
解码器层数 |
12 |
隐藏层大小 |
4096 |
注意力头数量 |
16 |
磁盘占用大小 |
1.63GB |
模型训练
该模型使用simpletransformers包装器并通过以下参数进行训练:
train_args = {
'learning_rate': 1e-5,
'max_seq_length': 512,
'doc_stride': 512,
'overwrite_output_dir': True,
'reprocess_input_data': False,
'train_batch_size': 8,
'num_train_epochs': 2,
'gradient_accumulation_steps': 2,
'no_cache': True,
'use_cached_eval_features': False,
'save_model_every_epoch': False,
'output_dir': "bart-squadv2",
'eval_batch_size': 32,
'fp16_opt_level': 'O2',
}
你甚至可以使用这个Colab笔记本训练自己的模型
模型效果
{"correct": 6832, "similar": 4409, "incorrect": 632, "eval_loss": -14.950117511952177}
由A-ware UG ❤️创建 