AugustLight commited on
Commit
32f05f8
·
verified ·
1 Parent(s): f747916

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -79
app.py CHANGED
@@ -3,7 +3,7 @@ from huggingface_hub import hf_hub_download
3
  from llama_cpp import Llama
4
  import os
5
 
6
- # Global model instance
7
  model = None
8
 
9
  def load_model():
@@ -21,11 +21,9 @@ def load_model():
21
 
22
  model = Llama(
23
  model_path=model_path,
24
- n_ctx=512,
25
- n_threads=os.cpu_count(),
26
- n_batch=128,
27
- n_gpu_layers=0,
28
- embedding_cache_size=1024
29
  )
30
 
31
  print("Модель успешно инициализирована!")
@@ -39,58 +37,34 @@ def respond(message, history, system_message, max_new_tokens, temperature, top_p
39
  try:
40
  global model
41
  if model is None:
42
- print("Загружаем модель...")
43
  model = load_model()
44
- print("Модель загружена")
45
-
46
- # Отладочная печать входных параметров
47
- print(f"""
48
- Входные параметры:
49
- - message: {message}
50
- - history length: {len(history)}
51
- - system_message: {system_message}
52
- - max_new_tokens: {max_new_tokens}
53
- - temperature: {temperature}
54
- - top_p: {top_p}
55
- """)
56
-
57
- # Ограничиваем историю последними 3 сообщениями
58
- recent_history = history[-3:] if len(history) > 3 else history
59
-
60
  context = f"{system_message}\n\n"
61
- for user_msg, assistant_msg in recent_history:
62
  context += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
63
  context += f"User: {message}\nAssistant: "
64
-
65
  print(f"Генерируем ответ для контекста длиной {len(context)} символов")
66
 
67
- try:
68
- response = model(
69
- prompt=context,
70
- max_tokens=max_new_tokens,
71
- temperature=temperature,
72
- top_p=top_p,
73
- stop=["User:", "\n\n", "<|endoftext|>"],
74
- echo=False
75
- )
76
-
77
- generated_text = response['choices'][0]['text']
78
- print(f"Ответ сгенерирован успешно, длина: {len(generated_text)}")
79
- return generated_text.strip()
80
- except Exception as inner_e:
81
- print(f"Ошибка при генерации: {str(inner_e)}")
82
- print(f"Тип ошибки: {type(inner_e).__name__}")
83
- return f"Ошибка при генерации: {str(inner_e)}"
84
-
85
- except KeyboardInterrupt:
86
- return "Генерация прервана пользователем"
87
  except Exception as e:
88
- print(f"Основная ошибка: {str(e)}")
89
- print(f"Тип ошибки: {type(e).__name__}")
90
- traceback.print_exc() # Добавим полный стек ошибки
91
- return f"Произошла ошибка: {str(e)}\nТип ошибки: {type(e).__name__}"
92
 
93
- # Создаем интерфейс с оптимизированными параметрами
94
  demo = gr.ChatInterface(
95
  respond,
96
  additional_inputs=[
@@ -100,8 +74,8 @@ demo = gr.ChatInterface(
100
  ),
101
  gr.Slider(
102
  minimum=1,
103
- maximum=512,
104
- value=128,
105
  step=1,
106
  label="Max new tokens"
107
  ),
@@ -120,41 +94,23 @@ demo = gr.ChatInterface(
120
  label="Top-p (nucleus sampling)"
121
  ),
122
  ],
123
- title="LLight Chat Model (Optimized)",
124
- description="Оптимизированный чат с LLight-3.2-3B",
125
- examples = [
126
- ["Привет! Как дела?",
127
- "Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.", # system_message
128
- 128, # max_new_tokens
129
- 0.3, # temperature
130
- 0.95 # top_p
131
- ],
132
- ["Расскажи мне о себе",
133
- "Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.",
134
- 128,
135
- 0.3,
136
- 0.95
137
- ],
138
- ["Что ты умеешь делать?",
139
- "Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.",
140
- 128,
141
- 0.3,
142
- 0.95
143
- ]
144
  ],
145
- cache_examples=True
146
  )
147
 
148
  # Запускаем приложение
149
  if __name__ == "__main__":
150
  try:
151
  print("Инициализация приложения...")
152
- model = load_model() # Предзагружаем модель
153
  print("Модель загружена успешно при старте")
154
  except Exception as e:
155
  print(f"Ошибка при инициализации: {str(e)}")
156
 
157
- demo.launch(
158
- show_error=True, # Показывать подробности ошибок
159
- debug=True # Включить отладочный режим
160
- )
 
3
  from llama_cpp import Llama
4
  import os
5
 
6
+ # Так надо
7
  model = None
8
 
9
  def load_model():
 
21
 
22
  model = Llama(
23
  model_path=model_path,
24
+ n_ctx=2048, # Размер контекста
25
+ n_threads=4, # Количество потоков
26
+ n_batch=512 # Размер батча
 
 
27
  )
28
 
29
  print("Модель успешно инициализирована!")
 
37
  try:
38
  global model
39
  if model is None:
 
40
  model = load_model()
41
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  context = f"{system_message}\n\n"
43
+ for user_msg, assistant_msg in history:
44
  context += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
45
  context += f"User: {message}\nAssistant: "
46
+
47
  print(f"Генерируем ответ для контекста длиной {len(context)} символов")
48
 
49
+ response = model(
50
+ prompt=context,
51
+ max_tokens=max_new_tokens,
52
+ temperature=temperature,
53
+ top_p=top_p,
54
+ stop=["User:", "\n\n", "<|endoftext|>"],
55
+ echo=False # Не возвращать промпт в ответе
56
+ )
57
+
58
+ generated_text = response['choices'][0]['text']
59
+ print(f"Ответ сгенерирован успешно, длина: {len(generated_text)}")
60
+ return generated_text.strip()
61
+
 
 
 
 
 
 
 
62
  except Exception as e:
63
+ error_msg = f"Произошла ошибка: {str(e)}"
64
+ print(error_msg)
65
+ return error_msg
66
+
67
 
 
68
  demo = gr.ChatInterface(
69
  respond,
70
  additional_inputs=[
 
74
  ),
75
  gr.Slider(
76
  minimum=1,
77
+ maximum=2048,
78
+ value=512,
79
  step=1,
80
  label="Max new tokens"
81
  ),
 
94
  label="Top-p (nucleus sampling)"
95
  ),
96
  ],
97
+ title="GGUF Chat Model",
98
+ description="Чат с GGUF моделью (LLight-3.2-3B-Instruct)",
99
+ examples=[
100
+ ["Привет! Как дела?"],
101
+ ["Расскажи мне о себе"],
102
+ ["Что ты умеешь делать?"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  ],
104
+ cache_examples=False
105
  )
106
 
107
  # Запускаем приложение
108
  if __name__ == "__main__":
109
  try:
110
  print("Инициализация приложения...")
111
+ model = load_model()
112
  print("Модель загружена успешно при старте")
113
  except Exception as e:
114
  print(f"Ошибка при инициализации: {str(e)}")
115
 
116
+ demo.launch()