3v324v23 commited on
Commit
3844df9
·
1 Parent(s): 5b6b930

Full MiniCPM5-1B ChatInterface with ZeroGPU

Browse files
Files changed (1) hide show
  1. app.py +49 -7
app.py CHANGED
@@ -1,14 +1,56 @@
1
- import gradio as gr
2
- import spaces
3
  import torch
 
 
 
4
 
5
- zero = torch.Tensor([0])
6
- print(f"zero on: {zero.device}", flush=True)
 
 
7
 
8
  @spaces.GPU
9
- def greet(n):
10
- return f"Hello {zero + n} Tensor"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
- demo = gr.Interface(fn=greet, inputs=gr.Number(), outputs=gr.Text())
 
 
 
 
 
 
13
 
14
  demo.launch()
 
1
+ import os
 
2
  import torch
3
+ import spaces
4
+ import gradio as gr
5
+ from transformers import AutoModelForCausalLM, AutoTokenizer
6
 
7
+ MODEL_ID = os.getenv("MODEL_ID", "GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking")
8
+
9
+ model = None
10
+ tokenizer = None
11
 
12
  @spaces.GPU
13
+ def chat_fn(message, history):
14
+ global model, tokenizer
15
+ if model is None:
16
+ print("Loading model...", flush=True)
17
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
18
+ model = AutoModelForCausalLM.from_pretrained(
19
+ MODEL_ID,
20
+ torch_dtype=torch.bfloat16,
21
+ device_map="auto",
22
+ trust_remote_code=True
23
+ )
24
+ if tokenizer.pad_token is None:
25
+ tokenizer.pad_token = tokenizer.eos_token
26
+ print("Model loaded", flush=True)
27
+ messages = []
28
+ for h in history:
29
+ messages.append({"role": "user", "content": h[0]})
30
+ messages.append({"role": "assistant", "content": h[1]})
31
+ messages.append({"role": "user", "content": message})
32
+
33
+ prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
34
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
35
+
36
+ with torch.no_grad():
37
+ outputs = model.generate(
38
+ **inputs,
39
+ max_new_tokens=512,
40
+ temperature=0.7,
41
+ top_p=0.9,
42
+ do_sample=True,
43
+ pad_token_id=tokenizer.pad_token_id
44
+ )
45
+
46
+ return tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True).strip()
47
 
48
+ with gr.Blocks(title="MiniCPM5-1B Chat") as demo:
49
+ gr.Markdown(f"# MiniCPM5-1B Chat\n**Model:** `{MODEL_ID}`\n\nPowered by ZeroGPU (free GPU)")
50
+ gr.ChatInterface(
51
+ fn=chat_fn,
52
+ title=None,
53
+ description="First request loads the model (~30s), subsequent calls are faster."
54
+ )
55
 
56
  demo.launch()