flamiry commited on
Commit
821038f
·
verified ·
1 Parent(s): cacf476

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -3
app.py CHANGED
@@ -1,7 +1,67 @@
1
  import gradio as gr
 
 
 
 
2
 
3
- def greet(name):
4
- return "Hello " + name + "!!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
- demo = gr.Interface(fn=greet, inputs="text", outputs="text")
7
  demo.launch()
 
1
  import gradio as gr
2
+ from transformers import GPT2Tokenizer, GPT2LMHeadModel
3
+ import torch
4
+ from datasets import load_dataset
5
+ import spaces
6
 
7
+ # Load model once at startup
8
+ model = GPT2LMHeadModel.from_pretrained("gpt2")
9
+ tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
10
+ tokenizer.pad_token = tokenizer.eos_token
11
+
12
+ @spaces.GPU
13
+ def train_model():
14
+ try:
15
+ # Load Slovak data
16
+ dataset = load_dataset("DGurgurov/slovak_sa", split="train")
17
+ slovak_texts = list(dataset['text'])[:200] # Only 200 texts
18
+
19
+ # Tokenize
20
+ inputs = tokenizer(
21
+ slovak_texts,
22
+ return_tensors="pt",
23
+ padding=True,
24
+ truncation=True,
25
+ max_length=128
26
+ )
27
+
28
+ # Train
29
+ optimizer = torch.optim.Adam(model.parameters(), lr=5e-5)
30
+ for epoch in range(2):
31
+ optimizer.zero_grad()
32
+ outputs = model(**inputs, labels=inputs['input_ids'])
33
+ loss = outputs.loss
34
+ loss.backward()
35
+ optimizer.step()
36
+
37
+ return f"✅ Training complete! Final Loss: {loss.item():.4f}"
38
+ except Exception as e:
39
+ return f"❌ Error: {str(e)}"
40
+
41
+ @spaces.GPU
42
+ def generate_text(prompt):
43
+ try:
44
+ input_ids = tokenizer.encode(prompt, return_tensors="pt")
45
+ output = model.generate(input_ids, max_length=50)
46
+ return tokenizer.decode(output[0], skip_special_tokens=True)
47
+ except Exception as e:
48
+ return f"❌ Error: {str(e)}"
49
+
50
+ # Create interface
51
+ with gr.Blocks() as demo:
52
+ gr.Markdown("# 🇸🇰 Slovak LLM Training")
53
+
54
+ with gr.Tab("Train Model"):
55
+ gr.Markdown("Click to train the model on Slovak data")
56
+ train_btn = gr.Button("Start Training", variant="primary")
57
+ train_output = gr.Textbox(label="Result", interactive=False)
58
+ train_btn.click(train_model, outputs=train_output)
59
+
60
+ with gr.Tab("Generate Text"):
61
+ gr.Markdown("Generate Slovak text")
62
+ prompt_input = gr.Textbox(label="Prompt", placeholder="Mačka je...")
63
+ gen_btn = gr.Button("Generate")
64
+ gen_output = gr.Textbox(label="Generated Text", interactive=False)
65
+ gen_btn.click(generate_text, inputs=prompt_input, outputs=gen_output)
66
 
 
67
  demo.launch()