File size: 2,993 Bytes
70bc880 51ebe21 17f1839 70bc880 29a34f4 70bc880 8bf7a3f 70bc880 3022685 70bc880 3022685 70bc880 c079f78 51ebe21 c079f78 51ebe21 219d72f aaf13a1 219d72f c079f78 70bc880 84d87a0 ce05d9f 70bc880 51ebe21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
---
license: apache-2.0
tags:
- generated_from_trainer
- t5
- flan
- small
- peft
- QLoRA
- cnn_dailymail
datasets:
- cnn_dailymail
metrics:
- rouge
base_model: google/flan-t5-small
model-index:
- name: QLoRA-Flan-T5-Small
results: []
---
<!-- This model card has been generated automatically according to the information the Trainer had access to. You
should probably proofread and complete it, then remove this comment. -->
# QLoRA-Flan-T5-Small
This model is a fine-tuned version of [google/flan-t5-small](https://huggingface.co/google/flan-t5-small) on the cnn_dailymail dataset. It achieves the following on the test set:
- ROUGE-1: 0.3484265780526604
- ROUGE-2: 0.14343059577230782
- ROUGE-l: 0.32809541498574013
## Model description
This model was fine-tuned with the purpose of performing the task of abstractive summarization.
## Training and evaluation data
Fine-tuned on cnn_dailymail training set
Evaluated on cnn_dailymail test set
## How to use model
1. Loading the model
```python
import torch
from peft import PeftModel, PeftConfig
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
# Load peft config for pre-trained checkpoint etc.
peft_model_id = "emonty777/QLoRA-Flan-T5-Small"
config = PeftConfig.from_pretrained(peft_model_id)
# load base LLM model and tokenizer / runs on CPU
model = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
# load base LLM model and tokenizer for GPU
model = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path, load_in_8bit=True, device_map={"":0})
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
# Load the Lora model
model = PeftModel.from_pretrained(model, peft_model_id, device_map={"":0})
model.eval()
```
2. Generating summaries
```python
text = "Your text goes here..."
# If you want to use CPU
input_ids = tokenizer(text, return_tensors="pt", truncation=True).input_ids
# If you want to use GPU
input_ids = tokenizer(text, return_tensors="pt", truncation=True).input_ids.cuda()
# Adjust max_new_tokens based on size. This is set up for articles of text
outputs = model.generate(input_ids=input_ids, max_new_tokens=120, do_sample=False)
print(f"input sentence: {sample['article']}\n{'---'* 20}")
print(f"summary:\n{tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0]}")
```
## Training procedure
### Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 3e-05
- train_batch_size: 8
- eval_batch_size: 8
- seed: 42
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- num_epochs: 4
### Training results
Evaluated on full CNN Dailymail test set
- ROUGE-1: 0.3484265780526604
- ROUGE-2: 0.14343059577230782
- ROUGE-l: 0.32809541498574013
### Framework versions
- Transformers 4.27.1
- Pytorch 2.0.1+cu118
- Datasets 2.9.0
- Tokenizers 0.13.3 |