|
|
|
|
|
""" |
|
|
Math Problem Solver Trainer |
|
|
""" |
|
|
from datasets import load_dataset |
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer |
|
|
|
|
|
def train_math_model(): |
|
|
print("🎓 Training Bengali Math Solver...") |
|
|
|
|
|
|
|
|
ds = load_dataset("hamim-87/Ashrafur_bangla_math", split="train[:10000]") |
|
|
|
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium") |
|
|
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium") |
|
|
tokenizer.pad_token = tokenizer.eos_token |
|
|
|
|
|
|
|
|
def prepare_data(examples): |
|
|
texts = [] |
|
|
for problem, solution in zip(examples['problem'], examples['solution']): |
|
|
text = f"প্রশ্ন: {problem}\n\nউত্তর: {solution}\n\n" |
|
|
texts.append(text) |
|
|
return tokenizer(texts, truncation=True, padding=True, max_length=512) |
|
|
|
|
|
tokenized_ds = ds.map(prepare_data, batched=True) |
|
|
|
|
|
|
|
|
training_args = TrainingArguments( |
|
|
output_dir="./bangla_math_model", |
|
|
num_train_epochs=2, |
|
|
per_device_train_batch_size=4, |
|
|
) |
|
|
|
|
|
trainer = Trainer( |
|
|
model=model, |
|
|
args=training_args, |
|
|
train_dataset=tokenized_ds, |
|
|
) |
|
|
|
|
|
trainer.train() |
|
|
trainer.save_model() |
|
|
print("✅ Math model trained!") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
train_math_model() |
|
|
|