veteroner commited on
Commit
e48277d
·
1 Parent(s): 4d49692

Local model kullanacak şekilde düzeltildi - ./nova-ai-model

Browse files
Files changed (1) hide show
  1. gradio_app.py +30 -47
gradio_app.py CHANGED
@@ -14,49 +14,43 @@ except ImportError:
14
  return func
15
  spaces = type('spaces', (), {'GPU': spaces_gpu})()
16
 
17
- # ================== Model Seçenekleri ==================
18
- # Kullanıcı arayüzünden seçilebilecek modellerin listesi.
19
- # Anahtar (dict key) arayüzde gösterilen isim, değer yol (path).
20
- MODEL_OPTIONS = {
21
- "Nova AI Hub": "veteroner/NovaAI",
22
- "Büyük Model (nova-ai-model)": "./nova-ai-model"
23
- }
24
-
25
- # Seçili modelin anahtarını tutan değişken
26
- current_model_key = None
27
 
28
  # Global değişkenler
29
  model = None
30
  tokenizer = None
31
 
32
  @spaces.GPU
33
- def load_model(model_path: str):
34
- """Seçilen model yoluna göre Nova AI modelini yükle - ZeroGPU destekli."""
35
  global model, tokenizer
36
 
 
37
  print(f"🚀 Nova AI modeli yükleniyor... ({model_path})")
38
 
39
  try:
40
  # Tokenizer yükle
41
  tokenizer = AutoTokenizer.from_pretrained(
42
  model_path,
43
- trust_remote_code=True
 
44
  )
45
 
46
- # --------- ZeroGPU için yükleme argümanları ---------
47
- load_kwargs = {
48
- "torch_dtype": torch.float16,
49
- "trust_remote_code": True,
50
- "device_map": "auto" # ZeroGPU otomatik GPU tahsisi
51
- }
52
 
53
- # Model yükle (8-bit quantization ZeroGPU'da desteklenmez)
54
  model = AutoModelForCausalLM.from_pretrained(
55
  model_path,
56
- **load_kwargs
 
 
 
57
  )
58
 
59
- success_msg = f"✅ Nova AI modeli yüklendi: {os.path.basename(model_path)} (ZeroGPU)"
60
  print(success_msg)
61
  return success_msg
62
 
@@ -65,14 +59,6 @@ def load_model(model_path: str):
65
  print(error_msg)
66
  return error_msg
67
 
68
- # ================== Model Seçim Yardımcı Fonksiyonu ==================
69
- def select_model(model_key: str):
70
- """UI'daki seçim değiştiğinde çağrılır, modeli yeniden yükler."""
71
- global current_model_key
72
- current_model_key = model_key
73
- model_path = MODEL_OPTIONS[model_key]
74
- return load_model(model_path)
75
-
76
  @spaces.GPU
77
  def chat_response(message, history):
78
  """Teknova Nova AI ile sohbet yanıtı üret - ZeroGPU destekli"""
@@ -98,8 +84,13 @@ def chat_response(message, history):
98
  conversation,
99
  return_tensors="pt",
100
  truncation=True,
101
- max_length=2048
102
- ).to(model.device)
 
 
 
 
 
103
 
104
  # Nova AI yanıt üret - ZeroGPU optimizasyonu
105
  with torch.no_grad():
@@ -109,8 +100,9 @@ def chat_response(message, history):
109
  temperature=0.7,
110
  top_p=0.9,
111
  do_sample=True,
112
- pad_token_id=tokenizer.eos_token_id,
113
- eos_token_id=tokenizer.eos_token_id
 
114
  )
115
 
116
  # Nova AI yanıtını decode et
@@ -124,9 +116,8 @@ def chat_response(message, history):
124
  except Exception as e:
125
  return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
126
 
127
- # Başlangıçta ilk (varsayılan) modeli yükle
128
- first_key = list(MODEL_OPTIONS.keys())[0] # Küçük model varsayılan
129
- initial_status = select_model(first_key)
130
 
131
  # Gradio arayüzü oluştur
132
  with gr.Blocks(
@@ -162,16 +153,11 @@ with gr.Blocks(
162
  </div>
163
  """)
164
 
165
- # ================== Model Seçim Bileşenleri ==================
166
  with gr.Row():
167
- model_selector = gr.Radio(
168
- choices=list(MODEL_OPTIONS.keys()),
169
- value=first_key,
170
- label="Model Seçimi"
171
- )
172
  statusbox = gr.Textbox(
173
  value=initial_status,
174
- label="Durum",
175
  interactive=False
176
  )
177
 
@@ -226,9 +212,6 @@ with gr.Blocks(
226
  )
227
  clear.click(lambda: None, None, chatbot, queue=False)
228
 
229
- # Model seçim değişikliğinde modeli yeniden yükle
230
- model_selector.change(select_model, inputs=model_selector, outputs=statusbox)
231
-
232
  if __name__ == "__main__":
233
  demo.launch(
234
  server_name="0.0.0.0",
 
14
  return func
15
  spaces = type('spaces', (), {'GPU': spaces_gpu})()
16
 
17
+ # ================== Nova AI Modeli ==================
18
+ # Sabit model: veteroner/NovaAI Hub'dan yüklenir
 
 
 
 
 
 
 
 
19
 
20
  # Global değişkenler
21
  model = None
22
  tokenizer = None
23
 
24
  @spaces.GPU
25
+ def load_model():
26
+ """Teknova Nova AI modelini yükle - ZeroGPU destekli."""
27
  global model, tokenizer
28
 
29
+ model_path = "./nova-ai-model"
30
  print(f"🚀 Nova AI modeli yükleniyor... ({model_path})")
31
 
32
  try:
33
  # Tokenizer yükle
34
  tokenizer = AutoTokenizer.from_pretrained(
35
  model_path,
36
+ trust_remote_code=True,
37
+ use_fast=True
38
  )
39
 
40
+ # Pad token ayarla
41
+ if tokenizer.pad_token is None:
42
+ tokenizer.pad_token = tokenizer.eos_token
 
 
 
43
 
44
+ # Model yükle - ZeroGPU optimizasyonu
45
  model = AutoModelForCausalLM.from_pretrained(
46
  model_path,
47
+ torch_dtype=torch.float16,
48
+ trust_remote_code=True,
49
+ device_map="auto",
50
+ low_cpu_mem_usage=True
51
  )
52
 
53
+ success_msg = f"✅ Teknova Nova AI yüklendi! (Local + ZeroGPU)"
54
  print(success_msg)
55
  return success_msg
56
 
 
59
  print(error_msg)
60
  return error_msg
61
 
 
 
 
 
 
 
 
 
62
  @spaces.GPU
63
  def chat_response(message, history):
64
  """Teknova Nova AI ile sohbet yanıtı üret - ZeroGPU destekli"""
 
84
  conversation,
85
  return_tensors="pt",
86
  truncation=True,
87
+ max_length=2048,
88
+ padding=True
89
+ )
90
+
91
+ # GPU'ya taşı
92
+ if torch.cuda.is_available():
93
+ inputs = {k: v.to(model.device) for k, v in inputs.items()}
94
 
95
  # Nova AI yanıt üret - ZeroGPU optimizasyonu
96
  with torch.no_grad():
 
100
  temperature=0.7,
101
  top_p=0.9,
102
  do_sample=True,
103
+ pad_token_id=tokenizer.pad_token_id,
104
+ eos_token_id=tokenizer.eos_token_id,
105
+ repetition_penalty=1.1
106
  )
107
 
108
  # Nova AI yanıtını decode et
 
116
  except Exception as e:
117
  return f"❌ Nova AI yanıt üretirken hata: {str(e)}"
118
 
119
+ # Başlangıçta modeli yükle
120
+ initial_status = load_model()
 
121
 
122
  # Gradio arayüzü oluştur
123
  with gr.Blocks(
 
153
  </div>
154
  """)
155
 
156
+ # ================== Model Durumu ==================
157
  with gr.Row():
 
 
 
 
 
158
  statusbox = gr.Textbox(
159
  value=initial_status,
160
+ label="Model Durumu",
161
  interactive=False
162
  )
163
 
 
212
  )
213
  clear.click(lambda: None, None, chatbot, queue=False)
214
 
 
 
 
215
  if __name__ == "__main__":
216
  demo.launch(
217
  server_name="0.0.0.0",