dd253B commited on
Commit
d44adcf
·
verified ·
1 Parent(s): 6093b7f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +165 -0
app.py ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import torch
3
+
4
+ from transformers import (
5
+ AutoTokenizer,
6
+ AutoModelForCausalLM
7
+ )
8
+
9
+ from peft import PeftModel
10
+
11
+
12
+ # ==========================================
13
+ # MODEL CONFIG
14
+ # ==========================================
15
+
16
+ BASE_MODEL = "Qwen/Qwen2.5-0.5B-Instruct"
17
+
18
+ ADAPTER_MODEL = "YOUR_USERNAME/DhanushAI-0.5B"
19
+
20
+
21
+ # ==========================================
22
+ # DEVICE
23
+ # ==========================================
24
+
25
+ if torch.cuda.is_available():
26
+ DEVICE = "cuda"
27
+ DTYPE = torch.float16
28
+ else:
29
+ DEVICE = "cpu"
30
+ DTYPE = torch.float32
31
+
32
+
33
+ print("Device:", DEVICE)
34
+
35
+
36
+ # ==========================================
37
+ # TOKENIZER
38
+ # ==========================================
39
+
40
+ print("Loading tokenizer...")
41
+
42
+ tokenizer = AutoTokenizer.from_pretrained(
43
+ BASE_MODEL
44
+ )
45
+
46
+ if tokenizer.pad_token is None:
47
+ tokenizer.pad_token = tokenizer.eos_token
48
+
49
+
50
+ # ==========================================
51
+ # BASE MODEL
52
+ # ==========================================
53
+
54
+ print("Loading base model...")
55
+
56
+ base_model = AutoModelForCausalLM.from_pretrained(
57
+ BASE_MODEL,
58
+ torch_dtype=DTYPE
59
+ )
60
+
61
+ base_model.to(DEVICE)
62
+
63
+
64
+ # ==========================================
65
+ # YOUR LORA MODEL
66
+ # ==========================================
67
+
68
+ print("Loading DhanushAI...")
69
+
70
+ model = PeftModel.from_pretrained(
71
+ base_model,
72
+ ADAPTER_MODEL
73
+ )
74
+
75
+ model.to(DEVICE)
76
+
77
+ model.eval()
78
+
79
+ print("DhanushAI loaded!")
80
+
81
+
82
+ # ==========================================
83
+ # CHAT FUNCTION
84
+ # ==========================================
85
+
86
+ def chat(message):
87
+
88
+ if not message or not message.strip():
89
+ return "Please enter a message."
90
+
91
+ prompt = f"""You are DhanushAI, a helpful AI assistant.
92
+
93
+ User: {message}
94
+
95
+ Assistant:"""
96
+
97
+ inputs = tokenizer(
98
+ prompt,
99
+ return_tensors="pt"
100
+ )
101
+
102
+ inputs = {
103
+ key: value.to(DEVICE)
104
+ for key, value in inputs.items()
105
+ }
106
+
107
+ with torch.no_grad():
108
+
109
+ outputs = model.generate(
110
+ **inputs,
111
+
112
+ max_new_tokens=200,
113
+
114
+ temperature=0.7,
115
+
116
+ top_p=0.9,
117
+
118
+ do_sample=True,
119
+
120
+ repetition_penalty=1.1
121
+ )
122
+
123
+ generated = tokenizer.decode(
124
+ outputs[0],
125
+ skip_special_tokens=True
126
+ )
127
+
128
+ if "Assistant:" in generated:
129
+
130
+ answer = generated.split(
131
+ "Assistant:",
132
+ 1
133
+ )[1].strip()
134
+
135
+ else:
136
+
137
+ answer = generated.strip()
138
+
139
+ return answer
140
+
141
+
142
+ # ==========================================
143
+ # GRADIO API
144
+ # ==========================================
145
+
146
+ demo = gr.Interface(
147
+
148
+ fn=chat,
149
+
150
+ inputs=gr.Textbox(
151
+ label="Message",
152
+ placeholder="Ask DhanushAI something..."
153
+ ),
154
+
155
+ outputs=gr.Textbox(
156
+ label="DhanushAI"
157
+ ),
158
+
159
+ title="DhanushAI",
160
+
161
+ description="My custom AI model"
162
+ )
163
+
164
+
165
+ demo.launch()