mou3az/IT-General_Question-Generation
06
Model Card
Base Model: facebook/bart-base
Fine-tuned : using PEFT-LoRa
Datasets : squadv2, drop, mou3az/ITQA-QG
Task: Generating questions from context and answers
Language: English
Loading the model
from peft import PeftModel, PeftConfig
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
HUGGING_FACE_USER_NAME = "mou3az"
model_name = "IT-General_Question-Generation "
peft_model_id = f"{HUGGING_FACE_USER_NAME}/{model_name}"
config = PeftConfig.from_pretrained(peft_model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_8bit=False, device_map='auto')
QG_tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
QG_model = PeftModel.from_pretrained(model, peft_model_id)At inference time
def get_question(context, answer):
device = next(QG_model.parameters()).device
input_text = f"Given the context '{context}' and the answer '{answer}', what question can be asked?"
encoding = QG_tokenizer.encode_plus(input_text, padding=True, return_tensors="pt").to(device)
output_tokens = QG_model.generate(**encoding, early_stopping=True, num_beams=5, num_return_sequences=1, no_repeat_ngram_size=2, max_length=100)
out = QG_tokenizer.decode(output_tokens[0], skip_special_tokens=True).replace("question:", "").strip()
return outTraining parameters and hyperparameters
The following were used during training:
For Lora:
r=18
alpha=8
For training arguments:
gradientaccumulationsteps=24
perdevicetrainbatchsize=8
perdeviceevalbatchsize=8
max_steps=1000
warmup_steps=50
weight_decay=0.05
learning_rate=3e-3
lrschedulertype="linear"
Training Results
Performance Metrics on Evaluation Set:
Training Loss: 1.1.1958
Evaluation Loss: 1.109059
Bertscore: 0.8123
Rouge: 0.532144
Fuzzywizzy similarity: 0.74209
