loocorez commited on
Commit
14ad9ec
·
verified ·
1 Parent(s): 4714f09

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -25
app.py CHANGED
@@ -1,7 +1,6 @@
1
- # app.py
2
  import re, spaces, gradio as gr, torch
3
- from transformers import AutoTokenizer
4
- from peft import AutoPeftModelForCausalLM # ← handles LoRA if present
5
 
6
  MODEL_NAME = "loocorez/reverse-text-warmup"
7
 
@@ -13,20 +12,21 @@ Respond in the following format:
13
  <answer>...</answer>
14
  </response>"""
15
 
16
- # ---------- load once ----------
17
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
18
  tokenizer.pad_token = tokenizer.eos_token
19
 
20
- # pulls base + adapter; merge folds LoRA into the base so inference is fast
21
- model = AutoPeftModelForCausalLM.from_pretrained(
22
- MODEL_NAME, torch_dtype=torch.float16
23
- ).merge_and_unload().eval()
 
24
 
25
- # helper: id of "</response>"
26
  EOS_ID = tokenizer.encode("</response>", add_special_tokens=False)[0]
27
 
28
  @spaces.GPU(duration=60)
29
- def reverse_text(user_text: str, temperature: float = 0.0, max_tokens: int = 256):
 
 
30
  prompt = f"{SYSTEM_PROMPT}\n\n{user_text.strip()}"
31
  inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
32
 
@@ -34,29 +34,24 @@ def reverse_text(user_text: str, temperature: float = 0.0, max_tokens: int = 256
34
  out = model.generate(
35
  **inputs,
36
  max_new_tokens=max_tokens,
37
- do_sample=temperature > 0.0,
38
- temperature=max(temperature, 1e-6), # avoid 0 with sampling
39
  eos_token_id=EOS_ID,
40
  pad_token_id=tokenizer.eos_token_id,
41
- repetition_penalty=1.1, # tames loops
42
  )
43
 
44
- # decode only the newly-generated part
45
- generated = tokenizer.decode(out[0][inputs["input_ids"].size(1):],
46
- skip_special_tokens=True)
47
-
48
- # pull the answer out of the XML
49
- m = re.search(r"<answer>(.*?)</answer>", generated, re.S)
50
- return m.group(1).strip() if m else generated.strip()
51
 
52
  demo = gr.Interface(
53
  fn=reverse_text,
54
  inputs=[
55
- gr.Textbox(label="Input Text", lines=3, placeholder="Enter text…"),
56
- gr.Slider(minimum=0.0, maximum=1.0, step=0.05,
57
- value=0.0, label="Temperature"),
58
- gr.Slider(minimum=32, maximum=512, step=32,
59
- value=256, label="Max new tokens")
60
  ],
61
  outputs=gr.Textbox(label="Reversed Text", lines=3),
62
  title="🔄 Reverse Text Model Demo",
 
 
1
  import re, spaces, gradio as gr, torch
2
+ from transformers import AutoTokenizer, AutoModelForCausalLM # ⟵ swap import
3
+ # from peft import AutoPeftModelForCausalLM (remove)
4
 
5
  MODEL_NAME = "loocorez/reverse-text-warmup"
6
 
 
12
  <answer>...</answer>
13
  </response>"""
14
 
 
15
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
16
  tokenizer.pad_token = tokenizer.eos_token
17
 
18
+ # load the **full model** directly
19
+ model = AutoModelForCausalLM.from_pretrained( # ⟵ use AutoModel
20
+ MODEL_NAME,
21
+ torch_dtype=torch.float16
22
+ ).eval()
23
 
 
24
  EOS_ID = tokenizer.encode("</response>", add_special_tokens=False)[0]
25
 
26
  @spaces.GPU(duration=60)
27
+ def reverse_text(user_text: str,
28
+ temperature: float = 0.0,
29
+ max_tokens: int = 256):
30
  prompt = f"{SYSTEM_PROMPT}\n\n{user_text.strip()}"
31
  inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
32
 
 
34
  out = model.generate(
35
  **inputs,
36
  max_new_tokens=max_tokens,
37
+ do_sample=temperature > 0,
38
+ temperature=max(temperature, 1e-6),
39
  eos_token_id=EOS_ID,
40
  pad_token_id=tokenizer.eos_token_id,
41
+ repetition_penalty=1.1,
42
  )
43
 
44
+ gen = tokenizer.decode(out[0][inputs["input_ids"].size(1):],
45
+ skip_special_tokens=True)
46
+ m = re.search(r"<answer>(.*?)</answer>", gen, re.S)
47
+ return m.group(1).strip() if m else gen.strip()
 
 
 
48
 
49
  demo = gr.Interface(
50
  fn=reverse_text,
51
  inputs=[
52
+ gr.Textbox(label="Input Text", lines=3),
53
+ gr.Slider(0.0, 1.0, step=0.05, value=0.0, label="Temperature"),
54
+ gr.Slider(32, 512, step=32, value=256, label="Max new tokens")
 
 
55
  ],
56
  outputs=gr.Textbox(label="Reversed Text", lines=3),
57
  title="🔄 Reverse Text Model Demo",