DibaAi commited on
Commit
20213c1
·
verified ·
1 Parent(s): 821547a

ZeroGPU fast chat for Diba v0.1

Browse files
Files changed (3) hide show
  1. README.md +10 -6
  2. app.py +76 -0
  3. requirements.txt +5 -0
README.md CHANGED
@@ -1,13 +1,17 @@
1
  ---
2
- title: Diba Chat Gpu
3
- emoji: 💻
4
  colorFrom: indigo
5
- colorTo: indigo
6
  sdk: gradio
7
- sdk_version: 6.27.0
8
- python_version: '3.12'
9
  app_file: app.py
10
  pinned: false
 
 
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: Diba Chat GPU
3
+ emoji:
4
  colorFrom: indigo
5
+ colorTo: pink
6
  sdk: gradio
7
+ sdk_version: "5.49.1"
8
+ python_version: "3.10"
9
  app_file: app.py
10
  pinned: false
11
+ license: apache-2.0
12
+ short_description: دیبا، تست سریع روی GPU
13
  ---
14
 
15
+ # دیبا · تست سریع
16
+
17
+ نسخه‌ی آزمایشی دیبا روی ZeroGPU، ساخته‌ی [دیباچین](https://dibachain.ir).
app.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Diba fast chat (ZeroGPU). Loads the merged v0.1 weights from the private staging repo with transformers
3
+ and streams replies on a ZeroGPU slice. Thinking is always off.
4
+ """
5
+ import os
6
+ from threading import Thread
7
+
8
+ import gradio as gr
9
+ import spaces
10
+ import torch
11
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
12
+
13
+ MODEL_ID = os.environ.get("DIBA_MODEL", "DibaAi/Diba-Base-staging-private")
14
+ TOKEN = os.environ.get("HF_TOKEN")
15
+
16
+ tok = AutoTokenizer.from_pretrained(MODEL_ID, token=TOKEN)
17
+ model = AutoModelForCausalLM.from_pretrained(MODEL_ID, token=TOKEN, dtype=torch.bfloat16)
18
+ model.to("cuda") # ZeroGPU attaches the GPU only inside @spaces.GPU calls
19
+ model.eval()
20
+
21
+
22
+ def build_messages(message, history, system):
23
+ msgs = [{"role": "system", "content": system}] if system.strip() else []
24
+ for turn in history:
25
+ if isinstance(turn, dict):
26
+ msgs.append({"role": turn["role"], "content": turn["content"]})
27
+ else:
28
+ user, bot = turn
29
+ msgs += [{"role": "user", "content": user}, {"role": "assistant", "content": bot}]
30
+ msgs.append({"role": "user", "content": message})
31
+ return msgs
32
+
33
+
34
+ @spaces.GPU(duration=90)
35
+ def chat(message, history, system, temperature, max_new_tokens):
36
+ msgs = build_messages(message, history, system)
37
+ inputs = tok.apply_chat_template(msgs, add_generation_prompt=True, enable_thinking=False,
38
+ return_tensors="pt", return_dict=True).to("cuda")
39
+ streamer = TextIteratorStreamer(tok, skip_prompt=True, skip_special_tokens=True)
40
+ kwargs = dict(**inputs, streamer=streamer, max_new_tokens=int(max_new_tokens),
41
+ do_sample=temperature > 0, temperature=max(float(temperature), 1e-5), top_p=0.9,
42
+ repetition_penalty=1.05)
43
+ Thread(target=model.generate, kwargs=kwargs).start()
44
+ out = ""
45
+ for piece in streamer:
46
+ out += piece
47
+ yield out
48
+
49
+
50
+ CSS = """
51
+ .gradio-container {direction: rtl; font-family: Vazirmatn, Tahoma, sans-serif;}
52
+ .message, .prose {text-align: right;}
53
+ pre, code {direction: ltr; text-align: left;}
54
+ """
55
+
56
+ demo = gr.ChatInterface(
57
+ chat,
58
+ type="messages",
59
+ title="دیبا · تست سریع",
60
+ description="نسخه‌ی آزمایشی ۰.۱ روی GPU. تاریخ ایران بپرس یا درخواست کد بده.",
61
+ additional_inputs=[
62
+ gr.Textbox(value="", label="پیام سیستم (اختیاری)"),
63
+ gr.Slider(0.0, 1.2, value=0.4, step=0.1, label="دما"),
64
+ gr.Slider(64, 2048, value=768, step=32, label="حداکثر طول پاسخ"),
65
+ ],
66
+ examples=[
67
+ ["سلام، خودت رو معرفی کن.", "", 0.4, 256],
68
+ ["کوروش بزرگ کی بود و چه کارهایی کرد؟", "", 0.4, 512],
69
+ ["یه تابع جاوااسکریپت به اسم toPersianDigits بنویس که اعداد انگلیسی رشته رو فارسی کنه.", "", 0.2, 512],
70
+ ["یه صفحه‌ی ورود راست‌چین با HTML و CSS بساز.", "", 0.4, 1536],
71
+ ],
72
+ css=CSS,
73
+ )
74
+
75
+ if __name__ == "__main__":
76
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ transformers>=5.0
2
+ accelerate>=1.0
3
+ huggingface_hub>=1.0
4
+ flash-linear-attention
5
+ spaces