medelharchaoui's picture
Upload README.md with huggingface_hub
f4e32a7 verified
|
Raw
History Blame Contribute Delete
4.06 kB
---
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).