P2THE28's picture
Upload folder using huggingface_hub
50a8ea3 verified
Raw History Blame Contribute Delete
1.98 kB
from transformers import (
AutoTokenizer,
AutoModelForSeq2SeqLM,
Seq2SeqTrainer,
Seq2SeqTrainingArguments,
DataCollatorForSeq2Seq
)
from datasets import load_dataset
import os
def main():
model_id = "google/flan-t5-base"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
dataset = load_dataset("json", data_files={
"train": "data/train_pairs.json",
"validation": "data/val_pairs.json"
})
prefix = "simplify bureaucratic text into simple language: "
def preprocess(examples):
inputs = [prefix + doc for doc in examples["complex_text"]]
model_inputs = tokenizer(inputs, max_length=512, truncation=True)
labels = tokenizer(text_target=examples["simple_text"], max_length=128, truncation=True)
model_inputs["labels"] = labels["input_ids"]
return model_inputs
tokenized_data = dataset.map(preprocess, batched=True)
os.makedirs("./models/saved_simplifier", exist_ok=True)
training_args = Seq2SeqTrainingArguments(
output_dir="./models/checkpoints",
eval_strategy="epoch",
learning_rate=5e-5,
per_device_train_batch_size=2,
per_device_eval_batch_size=2,
num_train_epochs=3,
weight_decay=0.01,
save_strategy="epoch",
logging_steps=5
)
trainer = Seq2SeqTrainer(
model=model,
args=training_args,
train_dataset=tokenized_data["train"],
eval_dataset=tokenized_data["validation"],
processing_class=tokenizer,
data_collator=DataCollatorForSeq2Seq(tokenizer, model=model)
)
trainer.train()
model.save_pretrained("./models/saved_simplifier")
tokenizer.save_pretrained("./models/saved_simplifier")
print("\n[SUCCESS] Model weights saved to ./models/saved_simplifier")
if __name__ == "__main__":
main()