Instructions to use mou3az/QuestionGeneration with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use mou3az/QuestionGeneration with PEFT:
from peft import PeftModel from transformers import AutoModelForSeq2SeqLM base_model = AutoModelForSeq2SeqLM.from_pretrained("facebook/bart-base") model = PeftModel.from_pretrained(base_model, "mou3az/QuestionGeneration") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| base_model: facebook/bart-base | |
| datasets: | |
| - squad_v2 | |
| - drop | |
| language: | |
| - en | |
| library_name: peft | |
| tags: | |
| - General purpose | |
| - Text2text Generation | |
| metrics: | |
| - bertscore | |
| - accuracy | |
| - rouge | |
| # Model Card | |
| Base Model: facebook/bart-base | |
| Fine-tuned : using PEFT-LoRa | |
| Datasets : squad_v2, drop | |
| Task: Generating questions from context and answers | |
| Language: English | |
| # Loading the model | |
| ```python | |
| from peft import PeftModel, PeftConfig | |
| from transformers import AutoModelForSeq2SeqLM, AutoTokenizer | |
| HUGGING_FACE_USER_NAME = "mou3az" | |
| model_name = "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 | |
| ```python | |
| 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 out | |
| ``` | |
| # Training parameters and hyperparameters | |
| The following were used during training: | |
| For Lora: | |
| r=18 | |
| alpha=8 | |
| For training arguments: | |
| gradient_accumulation_steps=16 | |
| per_device_train_batch_size=8 | |
| per_device_eval_batch_size=8 | |
| max_steps=3000 | |
| warmup_steps=75 | |
| weight_decay=0.05 | |
| learning_rate=1e-3 | |
| lr_scheduler_type="linear" | |
| # Performance Metrics on Evaluation Set: | |
| for 3000 optimization steps: | |
| Training Loss: 1.292400 | |
| Evaluation Loss: 1.244928 | |
| Bertscore: 0.8123 | |
| Rouge: 0.532144 | |
| Fuzzywizzy similarity: 0.74209 |