ajsbsd commited on
Commit
58a1d31
ยท
verified ยท
1 Parent(s): 7086509

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -0
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
4
+ from threading import Thread
5
+
6
+ model_id = "deepgrove/maple-preview"
7
+
8
+ print("๐Ÿ”„ Loading tokenizer...")
9
+ tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
10
+
11
+ print("๐Ÿ”„ Loading Maple-Preview (this may take a few minutes to download weights and compile kernels)...")
12
+ model = AutoModelForCausalLM.from_pretrained(
13
+ model_id,
14
+ device_map="auto",
15
+ torch_dtype=torch.bfloat16,
16
+ trust_remote_code=True
17
+ )
18
+
19
+ def predict(message, history):
20
+ # Gradio type="messages" format: [{"role": "user", "content": "..."}, ...]
21
+ messages = history + [{"role": "user", "content": message}]
22
+
23
+ # Apply the custom Jinja chat template included in the repo
24
+ prompt = tokenizer.apply_chat_template(
25
+ messages,
26
+ tokenize=False,
27
+ add_generation_prompt=True
28
+ )
29
+
30
+ inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
31
+
32
+ streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
33
+
34
+ generation_kwargs = dict(
35
+ **inputs,
36
+ streamer=streamer,
37
+ max_new_tokens=2048,
38
+ do_sample=True,
39
+ temperature=0.7,
40
+ top_p=0.9,
41
+ )
42
+
43
+ # Generate in a separate thread to allow streaming to the UI
44
+ thread = Thread(target=model.generate, kwargs=generation_kwargs)
45
+ thread.start()
46
+
47
+ generated_text = ""
48
+ for new_text in streamer:
49
+ generated_text += new_text
50
+ yield generated_text
51
+
52
+ demo = gr.ChatInterface(
53
+ fn=predict,
54
+ type="messages",
55
+ title="๐Ÿ Maple-Preview",
56
+ description="A 20B-A1B ternary-weight reasoning LLM by DeepGrove. Powered by ZeroGPU.",
57
+ theme="soft",
58
+ )
59
+
60
+ if __name__ == "__main__":
61
+ demo.queue().launch()