GPT-2 fine-tuned for emergency messages (Excusify)
Part of Excusify. Given a short prompt, the model writes a short, first-person urgent message for a scenario and optional details.
Prompt format
car trouble | flat tyre on the highway :
The model writes the completion after the colon and stops with an end-of-text token.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "Sohamb2005/gpt2-finetuned-emergency"
tokenizer = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo)
inputs = tokenizer("car trouble | flat tyre on the highway :", return_tensors="pt")
out = model.generate(**inputs, do_sample=True, top_p=0.92, temperature=0.8, max_new_tokens=60,
pad_token_id=tokenizer.eos_token_id)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
Training
| Base model | gpt2 (124M parameters) |
| Data | data/emergency_messages.csv: Scenario (8 types), Details (optional), Message |
| Split | 203 train / 23 held-out examples |
| Objective | causal LM loss on the completion and its end-of-text token (prompt masked) |
| Settings | learning rate 5e-05, 5 epochs, batch 8, cosine schedule; chosen from a sweep (best situation match, then lowest loss) |
Evaluation
| Value | |
|---|---|
| Held-out loss (GPT-2 before → this model) | 3.294 → 1.99 |
| Held-out perplexity (GPT-2 before → this model) | 27.0 → 7.3 |
| Situation match, held-out prompts | 83% (hand-written answers: 94%) |
| Situation match, situations not in the data | 100% |
Situation match is the share of sampled answers that mention at least one content word of the situation in the prompt.
Limitations
Made for entertainment and practice messages. The training set is small and hand-written, so the model can repeat phrasings from it, and situations far from the training data may get generic answers.