ayyuce commited on
Commit
37ada06
·
verified ·
1 Parent(s): ed6eec3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -27
app.py CHANGED
@@ -2,39 +2,49 @@ import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
 
5
- model_name = "ayyuce/SmolGRPO-135M"
6
-
7
 
 
 
8
  tokenizer = AutoTokenizer.from_pretrained(model_name)
9
  model = AutoModelForCausalLM.from_pretrained(model_name)
10
- model.to("cpu")
11
 
12
- def generate_text(prompt):
13
- inputs = tokenizer(prompt, return_tensors="pt")
14
- inputs = {key: value.to("cpu") for key, value in inputs.items()}
15
-
16
- prompt_length = inputs["input_ids"].shape[1]
17
-
18
- outputs = model.generate(
19
- **inputs,
20
- max_length=prompt_length + 50,
21
- min_length=prompt_length + 1,
22
- do_sample=True,
23
- top_p=0.95,
24
- top_k=50
25
- )
26
-
27
- generated_text = tokenizer.decode(outputs[0][prompt_length:], skip_special_tokens=True)
28
- return generated_text
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
- demo = gr.Interface(
32
- fn=generate_text,
33
- inputs="text",
34
- outputs="text",
35
- title="SmolGRPO-135M Generator",
36
- description="Generate text with the SmolGRPO-135M."
37
- )
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
  if __name__ == "__main__":
40
  demo.launch()
 
 
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import torch
4
 
 
 
5
 
6
+ # Load the tokenizer and model
7
+ model_name = "ayyuce/SmolGRPO-135M"
8
  tokenizer = AutoTokenizer.from_pretrained(model_name)
9
  model = AutoModelForCausalLM.from_pretrained(model_name)
 
10
 
11
+ # Initialize the text-generation pipeline
12
+ generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device=-1) # device=-1 ensures CPU usage
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ def generate_text(prompt, max_new_tokens, temperature, top_p, do_sample):
15
+ # Define generation parameters
16
+ generate_kwargs = {
17
+ "max_new_tokens": int(max_new_tokens),
18
+ "temperature": float(temperature),
19
+ "top_p": float(top_p),
20
+ "do_sample": do_sample == "Yes",
21
+ }
22
+ # Generate text
23
+ generated_list = generator(prompt, **generate_kwargs)
24
+ # Extract the generated text from the first item in the list
25
+ generated_text = generated_list[0]["generated_text"]
26
+ return generated_text
27
 
28
+ # Create the Gradio interface
29
+ with gr.Blocks() as demo:
30
+ gr.Markdown("# SmolGRPO-135M Text Generator")
31
+ with gr.Row():
32
+ with gr.Column():
33
+ prompt = gr.Textbox(label="Prompt", lines=5, placeholder="Enter your prompt here...")
34
+ max_new_tokens = gr.Number(label="Max New Tokens", value=256)
35
+ temperature = gr.Slider(label="Temperature", minimum=0.0, maximum=1.0, value=0.5)
36
+ top_p = gr.Slider(label="Top-p (Nucleus Sampling)", minimum=0.0, maximum=1.0, value=0.9)
37
+ do_sample = gr.Dropdown(label="Do Sample", choices=["Yes", "No"], value="Yes")
38
+ generate_button = gr.Button("Generate Text")
39
+ with gr.Column():
40
+ output = gr.Textbox(label="Generated Text", lines=15)
41
+
42
+ generate_button.click(
43
+ fn=generate_text,
44
+ inputs=[prompt, max_new_tokens, temperature, top_p, do_sample],
45
+ outputs=output
46
+ )
47
 
48
  if __name__ == "__main__":
49
  demo.launch()
50
+