import json import torch.nn as nn import torch from model import MiniGPT from dataset import DataLoader,ChatDataset,SimpleTokenizr from tqdm import tqdm with open("./customchatbot-v1/data/merged_data.jsonl", "r", encoding="utf-8") as f: texts = [json.loads(line)["text"] for line in f if line.strip()] tokenizer = SimpleTokenizr() tokenizer.train(texts) model = MiniGPT(vocab_size=100) criterion = nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(),lr=0.001) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) dataset = ChatDataset("./customchatbot-v1/data/merged_data.jsonl", tokenizer) dataloader = DataLoader(dataset, batch_size=100, shuffle=True) def Train(epochs): for epoch in range(epochs): model.train() loop = tqdm(enumerate(dataloader),total=len(dataloader),desc="Training") tloss = 0 for i,l in loop: optimizer.zero_grad() outputs = model(i) loss = criterion(outputs,l) loss.backward() Train(epochs=1)