deberta-v3-base for Extractive QA
This is the deberta-v3-base model, fine-tuned using the SQuAD2.0 dataset. It's been trained on question-answer pairs, including unanswerable questions, for the task of Extractive Question Answering.
Overview
Language model: deberta-v3-base
Language: English
Downstream-task: Extractive QA
Training data: SQuAD 2.0
Eval data: SQuAD 2.0
Infrastructure: 1x NVIDIA 3070
Model Usage
import torch
from transformers import(
AutoModelForQuestionAnswering,
AutoTokenizer,
pipeline
)
model_name = "sjrhuschlee/deberta-v3-base-squad2"
# a) Using pipelines
nlp = pipeline('question-answering', model=model_name, tokenizer=model_name)
qa_input = {
'question': 'Where do I live?',
'context': 'My name is Sarah and I live in London'
}
res = nlp(qa_input)
# {'score': 0.984, 'start': 30, 'end': 37, 'answer': ' London'}
# b) Load model & tokenizer
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
question = 'Where do I live?'
context = 'My name is Sarah and I live in London'
encoding = tokenizer(question, context, return_tensors="pt")
start_scores, end_scores = model(
encoding["input_ids"],
attention_mask=encoding["attention_mask"],
return_dict=False
)
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = all_tokens[torch.argmax(start_scores):torch.argmax(end_scores) + 1]
answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
# 'London'
Metrics
# Squad v2
{
"eval_HasAns_exact": 82.72604588394061,
"eval_HasAns_f1": 88.89430905100325,
"eval_HasAns_total": 5928,
"eval_NoAns_exact": 88.56181665264928,
"eval_NoAns_f1": 88.56181665264928,
"eval_NoAns_total": 5945,
"eval_best_exact": 85.64810915522614,
"eval_best_exact_thresh": 0.0,
"eval_best_f1": 88.72782481717712,
"eval_best_f1_thresh": 0.0,
"eval_exact": 85.64810915522614,
"eval_f1": 88.72782481717726,
"eval_runtime": 219.6226,
"eval_samples": 11951,
"eval_samples_per_second": 54.416,
"eval_steps_per_second": 2.268,
"eval_total": 11873
}
# Squad
{
"eval_exact_match": 87.86187322611164,
"eval_f1": 93.92373735474943,
"eval_runtime": 195.2115,
"eval_samples": 10618,
"eval_samples_per_second": 54.392,
"eval_steps_per_second": 2.269
}
Training procedure
Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 5e-06
- train_batch_size: 8
- eval_batch_size: 8
- seed: 42
- gradient_accumulation_steps: 8
- total_train_batch_size: 64
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- lr_scheduler_warmup_ratio: 0.1
- num_epochs: 4.0
Framework versions
- Transformers 4.30.0.dev0
- Pytorch 2.0.1+cu117
- Datasets 2.12.0
- Tokenizers 0.13.3
- Downloads last month
- 23
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social
visibility and check back later, or deploy to Inference Endpoints (dedicated)
instead.
Datasets used to train sjrhuschlee/deberta-v3-base-squad2
Evaluation results
- Exact Match on squad_v2validation set self-reported85.648
- F1 on squad_v2validation set self-reported88.728
- Exact Match on squadvalidation set self-reported87.862
- F1 on squadvalidation set self-reported93.905
- Exact Match on adversarial_qavalidation set self-reported34.367
- F1 on adversarial_qavalidation set self-reported47.743
- Exact Match on squad_adversarialvalidation set self-reported82.597
- F1 on squad_adversarialvalidation set self-reported88.175
- Exact Match on squadshifts amazontest set self-reported73.080
- F1 on squadshifts amazontest set self-reported86.389