Text Generation
PEFT
Safetensors
English
t5
encoder-decoder
question-answering
extractive-qa
squad
lora
parameter-efficient
text2text-generation
Eval Results (legacy)
Instructions to use medelharchaoui/t5-large-lora-r8-squad with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use medelharchaoui/t5-large-lora-r8-squad with PEFT:
from peft import PeftModel from transformers import AutoModelForSeq2SeqLM base_model = AutoModelForSeq2SeqLM.from_pretrained("google-t5/t5-large") model = PeftModel.from_pretrained(base_model, "medelharchaoui/t5-large-lora-r8-squad") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| base_model: | |
| - google-t5/t5-large | |
| library_name: peft | |
| pipeline_tag: text2text-generation | |
| datasets: | |
| - rajpurkar/squad | |
| tags: | |
| - t5 | |
| - encoder-decoder | |
| - question-answering | |
| - extractive-qa | |
| - squad | |
| - lora | |
| - peft | |
| - parameter-efficient | |
| metrics: | |
| - exact_match | |
| - f1 | |
| model-index: | |
| - name: t5-large-lora-r8-squad | |
| results: | |
| - task: | |
| type: question-answering | |
| name: Extractive Question Answering | |
| dataset: | |
| name: SQuAD (validation, 256-example eval subset) | |
| type: rajpurkar/squad | |
| split: validation | |
| metrics: | |
| - type: exact_match | |
| value: 0.6445 | |
| name: Exact Match | |
| - type: f1 | |
| value: 0.8152 | |
| name: Token F1 | |
| # T5-large — LoRA r=8 adapter on SQuAD | |
| A **LoRA adapter** (PEFT) for `google-t5/t5-large`, trained for extractive QA on SQuAD. | |
| Rank 8 on the `q` and `v` projections only → **~2.4M trainable params (0.32% of the model)**. | |
| **TL;DR:** this 9.5 MB adapter reaches **F1 0.8152 / EM 0.6445** — statistically tied with | |
| full fine-tuning (F1 0.8162) and with the cross-attention-only variant (F1 0.8128), and it | |
| **beats parameter-matched GPT-2-large full fine-tune (F1 0.5041) by +0.31 F1** while training | |
| 0.32% of the weights versus its 100%. Architecture alignment, not the number of tuned | |
| parameters, drives the result. | |
| > This repo contains the **PEFT adapter only** (`adapter_model.safetensors`, ~9.5 MB). | |
| > The base weights are pulled from `google-t5/t5-large` at load time. | |
| ## Results (SQuAD validation) | |
| | Model | Architecture | Trainable / Total | EM | Token F1 | | |
| | --- | --- | ---: | ---: | ---: | | |
| | GPT-2-large | decoder-only | 774M / 774M | 0.3516 | 0.5041 | | |
| | T5-large XA-only | enc-dec | 100.7M / 737M | 0.6406 | 0.8128 | | |
| | **T5-large LoRA r=8 (this adapter)** | enc-dec | **2.4M / 740M** | **0.6445** | **0.8152** | | |
| | T5-large full fine-tune | enc-dec | 737M / 737M | 0.6602 | 0.8162 | | |
| Validation loss 0.3061, perplexity 1.36. | |
| > Eval note: T5 numbers use a 256-example SQuAD-validation generation subset (4-beam search); | |
| > GPT-2-large uses 512. Magnitudes are comparable and reproduce the paper's ordering. | |
| ## How to use | |
| Trained with the input prefix `answer question: ` prepended to a | |
| `question: ... context: ...` source string — match it exactly at inference: | |
| ```python | |
| from transformers import T5ForConditionalGeneration, AutoTokenizer | |
| from peft import PeftModel | |
| base = "google-t5/t5-large" | |
| adapter = "medelharchaoui/t5-large-lora-r8-squad" | |
| tok = AutoTokenizer.from_pretrained(adapter) | |
| model = T5ForConditionalGeneration.from_pretrained(base) | |
| model = PeftModel.from_pretrained(model, adapter) | |
| model = model.merge_and_unload() # optional: fold LoRA into base for faster inference | |
| question = "What culture do 'bairn' and 'hyem' originate from?" | |
| context = ("'bairn' and 'hyem' are geordie words with origins in scandinavia; barn and hjem " | |
| "are the corresponding modern norwegian and danish words.") | |
| text = f"answer question: question: {question} context: {context}" | |
| ids = tok(text, return_tensors="pt", truncation=True, max_length=384).input_ids | |
| print(tok.decode(model.generate(ids, num_beams=4, max_new_tokens=16)[0], skip_special_tokens=True)) | |
| ``` | |
| ## Training | |
| | Setting | Value | | |
| | --- | --- | | |
| | Base model | `google-t5/t5-large` (737M) | | |
| | LoRA | r=8, alpha=32, dropout=0.05, target modules `["q", "v"]` | | |
| | Trainable params | ~2.4M (0.32%) | | |
| | Dataset | `rajpurkar/squad`, 30,000 train examples | | |
| | Precision | bf16 | | |
| | Optimizer steps | 3,000 (batch 4 × grad-accum 8 = eff. batch 32) | | |
| | LR / warmup | 3e-4, 300 warmup, weight decay 0.01 | | |
| | Source / target max len | 384 / 32 | | |
| | PEFT version | 0.19.1 | | |
| | Seed | 37 | | |
| | Hardware | 1× NVIDIA RTX 3060 (12 GB), local | | |
| ## Limitations | |
| - English SQuAD-style extractive QA only; short answer spans grounded in the given context. | |
| - Adapter requires `google-t5/t5-large` as the base model at load time. | |
| - Evaluated on a held-out validation subset, not the official SQuAD test server. | |
| ## Citation | |
| Part of an encoder–decoder vs decoder-only paradigm study (OptimiAI, 2026). | |