Views
No views yet
1import torch
2from transformers import(
3 AutoModelForQuestionAnswering,
4 AutoTokenizer,
5 pipeline
6)
7model_name = "sjrhuschlee/deberta-v3-large-squad2"
8
9# a) Using pipelines
10nlp = pipeline('question-answering', model=model_name, tokenizer=model_name)
11qa_input = {
12'question': 'Where do I live?',
13'context': 'My name is Sarah and I live in London'
14}
15res = nlp(qa_input)
16# {'score': 0.984, 'start': 30, 'end': 37, 'answer': ' London'}
17
18# b) Load model & tokenizer
19model = AutoModelForQuestionAnswering.from_pretrained(model_name)
20tokenizer = AutoTokenizer.from_pretrained(model_name)
21
22question = 'Where do I live?'
23context = 'My name is Sarah and I live in London'
24encoding = tokenizer(question, context, return_tensors="pt")
25start_scores, end_scores = model(
26 encoding["input_ids"],
27 attention_mask=encoding["attention_mask"],
28 return_dict=False
29)
30
31all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
32answer_tokens = all_tokens[torch.argmax(start_scores):torch.argmax(end_scores) + 1]
33answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
34# 'London'1# Squad v2
2{
3 "eval_HasAns_exact": 84.83468286099865,
4 "eval_HasAns_f1": 90.48374860633226,
5 "eval_HasAns_total": 5928,
6 "eval_NoAns_exact": 91.0681244743482,
7 "eval_NoAns_f1": 91.0681244743482,
8 "eval_NoAns_total": 5945,
9 "eval_best_exact": 87.95586625115808,
10 "eval_best_exact_thresh": 0.0,
11 "eval_best_f1": 90.77635490089573,
12 "eval_best_f1_thresh": 0.0,
13 "eval_exact": 87.95586625115808,
14 "eval_f1": 90.77635490089592,
15 "eval_runtime": 623.1333,
16 "eval_samples": 11951,
17 "eval_samples_per_second": 19.179,
18 "eval_steps_per_second": 0.799,
19 "eval_total": 11873
20}
21
22# Squad
23{
24 "eval_exact_match": 89.29044465468307,
25 "eval_f1": 94.9846365606959,
26 "eval_runtime": 553.7132,
27 "eval_samples": 10618,
28 "eval_samples_per_second": 19.176,
29 "eval_steps_per_second": 0.8
30}1#!pip install peft
2
3from peft import LoraConfig, PeftModelForQuestionAnswering
4from transformers import AutoModelForQuestionAnswering, AutoTokenizer
5model_name = "sjrhuschlee/deberta-v3-large-squad2"{
"base_model_name_or_path": "microsoft/deberta-v3-large",
"bias": "none",
"fan_in_fan_out": false,
"inference_mode": true,
"init_lora_weights": true,
"lora_alpha": 32,
"lora_dropout": 0.1,
"modules_to_save": ["qa_outputs"],
"peft_type": "LORA",
"r": 8,
"target_modules": [
"query_proj",
"key_proj",
"value_proj",
"dense"
],
"task_type": "QUESTION_ANS"
}