| from transformers import T5Tokenizer, T5ForConditionalGeneration, Trainer, TrainingArguments, DataCollatorForSeq2Seq |
| from datasets import load_dataset |
| import torch |
|
|
| |
| dataset = load_dataset("json", data_files="data/hrms_dataset.jsonl")["train"] |
|
|
| |
| model_name = "t5-small" |
| |
| tokenizer = T5Tokenizer.from_pretrained(model_name) |
| model = T5ForConditionalGeneration.from_pretrained(model_name) |
|
|
| |
| def preprocess(example): |
| input_enc = tokenizer(example["question"], padding="max_length", truncation=True, max_length=64) |
| target_enc = tokenizer(example["sql"], padding="max_length", truncation=True, max_length=64) |
|
|
| return { |
| "input_ids": input_enc["input_ids"], |
| "attention_mask": input_enc["attention_mask"], |
| "labels": target_enc["input_ids"] |
| } |
|
|
| encoded_dataset = dataset.map(preprocess, remove_columns=dataset.column_names) |
|
|
| |
| training_args = TrainingArguments( |
| output_dir="models/t5_model", |
| num_train_epochs=10, |
| per_device_train_batch_size=4, |
| save_strategy="epoch", |
| save_total_limit=2, |
| logging_steps=50, |
| remove_unused_columns=False, |
| report_to="none", |
| fp16=False |
| ) |
|
|
| |
| trainer = Trainer( |
| model=model, |
| args=training_args, |
| train_dataset=encoded_dataset, |
| tokenizer=tokenizer, |
| data_collator=DataCollatorForSeq2Seq(tokenizer, model) |
| ) |
|
|
| |
| trainer.train() |
| |
| |
|
|
| trainer.model.save_pretrained("models/t5_model") |
| tokenizer.save_pretrained("models/t5_model") |
|
|
| print("β
Model trained and saved in models/t5_model_v2/") |
|
|