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
12
Safetensors
Model size
184M params
Tensor type
I64
·
F32
·
Inference Examples
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