File size: 1,096 Bytes
b127d35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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)