import gradio as gr from datasets import load_dataset from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, Trainer, TrainingArguments # Load your dataset dataset = load_dataset("vidu8/ch01") # Load tokenizer and model model_name = "t5-small" # lightweight and fast tokenizer = AutoTokenizer.from_pretrained(model_name) # Prepare dataset def preprocess(example): inputs = "chat: " + example["input_text"] targets = example["target_text"] model_inputs = tokenizer(inputs, max_length=128, truncation=True) labels = tokenizer(targets, max_length=128, truncation=True) model_inputs["labels"] = labels["input_ids"] return model_inputs train_dataset = dataset["train"].map(preprocess, batched=False) # Load model model = AutoModelForSeq2SeqLM.from_pretrained(model_name) # Set training arguments training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, logging_steps=10, save_steps=100, save_total_limit=1, evaluation_strategy="no", ) # Define Trainer trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, ) # Train trainer.train() # Gradio interface def chat(input_text): inputs = tokenizer("chat: " + input_text, return_tensors="pt") outputs = model.generate(**inputs, max_length=50) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response iface = gr.Interface(fn=chat, inputs="text", outputs="text", title="Simple Chatbot") iface.launch()