itriedcoding commited on
Commit
e3d95ba
·
verified ·
1 Parent(s): fdb2770

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +160 -0
app.py ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ PlainEnglish-1B Gradio Demo App
3
+ Interactive text generation interface for HuggingFace Spaces and ModelScope Studio.
4
+ """
5
+
6
+ import torch
7
+ import gradio as gr
8
+ from transformers import AutoModelForCausalLM, AutoTokenizer
9
+
10
+ MODEL_ID = "PlainEnglish-1B"
11
+
12
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
13
+ model = AutoModelForCausalLM.from_pretrained(
14
+ MODEL_ID,
15
+ torch_dtype=torch.float32,
16
+ trust_remote_code=True,
17
+ )
18
+ model.eval()
19
+
20
+
21
+ def generate_text(
22
+ prompt,
23
+ max_new_tokens=200,
24
+ temperature=0.7,
25
+ top_p=0.9,
26
+ top_k=50,
27
+ repetition_penalty=1.1,
28
+ ):
29
+ if not prompt.strip():
30
+ return "Please enter a prompt."
31
+
32
+ inputs = tokenizer(prompt, return_tensors="pt")
33
+
34
+ with torch.no_grad():
35
+ outputs = model.generate(
36
+ **inputs,
37
+ max_new_tokens=int(max_new_tokens),
38
+ temperature=float(temperature),
39
+ top_p=float(top_p),
40
+ top_k=int(top_k),
41
+ repetition_penalty=float(repetition_penalty),
42
+ do_sample=True,
43
+ pad_token_id=tokenizer.eos_token_id,
44
+ )
45
+
46
+ generated = tokenizer.decode(outputs[0], skip_special_tokens=True)
47
+ return generated
48
+
49
+
50
+ def count_parameters():
51
+ total = sum(p.numel() for p in model.parameters())
52
+ return f"{total:,} ({total/1e6:.1f}M)"
53
+
54
+
55
+ css = """
56
+ footer { display: none !important; }
57
+ .gradio-container { max-width: 800px; margin: auto; }
58
+ """
59
+
60
+ with gr.Blocks(css=css, title="PlainEnglish-1B") as demo:
61
+ gr.Markdown(
62
+ """
63
+ # PlainEnglish-1B
64
+ A 1B parameter text generation model fine-tuned for clear, plain English.
65
+ Enter a prompt and adjust parameters to generate text.
66
+ """
67
+ )
68
+
69
+ with gr.Row():
70
+ with gr.Column(scale=3):
71
+ prompt_input = gr.Textbox(
72
+ label="Prompt",
73
+ placeholder="Enter your text prompt here...",
74
+ lines=4,
75
+ )
76
+ with gr.Column(scale=1):
77
+ max_tokens = gr.Slider(
78
+ minimum=10,
79
+ maximum=500,
80
+ value=200,
81
+ step=10,
82
+ label="Max New Tokens",
83
+ )
84
+ temperature = gr.Slider(
85
+ minimum=0.1,
86
+ maximum=2.0,
87
+ value=0.7,
88
+ step=0.1,
89
+ label="Temperature",
90
+ )
91
+ top_p = gr.Slider(
92
+ minimum=0.1,
93
+ maximum=1.0,
94
+ value=0.9,
95
+ step=0.05,
96
+ label="Top-p",
97
+ )
98
+ top_k = gr.Slider(
99
+ minimum=1,
100
+ maximum=100,
101
+ value=50,
102
+ step=5,
103
+ label="Top-k",
104
+ )
105
+ rep_penalty = gr.Slider(
106
+ minimum=1.0,
107
+ maximum=2.0,
108
+ value=1.1,
109
+ step=0.05,
110
+ label="Repetition Penalty",
111
+ )
112
+
113
+ generate_btn = gr.Button("Generate Text", variant="primary")
114
+
115
+ output_text = gr.Textbox(
116
+ label="Generated Text",
117
+ lines=8,
118
+ )
119
+
120
+ gr.Markdown(f"**Model Parameters**: {count_parameters()}")
121
+
122
+ generate_btn.click(
123
+ fn=generate_text,
124
+ inputs=[
125
+ prompt_input,
126
+ max_tokens,
127
+ temperature,
128
+ top_p,
129
+ top_k,
130
+ rep_penalty,
131
+ ],
132
+ outputs=output_text,
133
+ )
134
+
135
+ prompt_input.submit(
136
+ fn=generate_text,
137
+ inputs=[
138
+ prompt_input,
139
+ max_tokens,
140
+ temperature,
141
+ top_p,
142
+ top_k,
143
+ rep_penalty,
144
+ ],
145
+ outputs=output_text,
146
+ )
147
+
148
+ gr.Examples(
149
+ examples=[
150
+ ["The meaning of life is"],
151
+ ["In the year 2025, artificial intelligence"],
152
+ ["The best way to learn programming"],
153
+ ["Scientists recently discovered that"],
154
+ ["Once upon a time, in a small village"],
155
+ ],
156
+ inputs=prompt_input,
157
+ )
158
+
159
+ if __name__ == "__main__":
160
+ demo.launch()