AugustLight commited on
Commit
cb249bf
·
verified ·
1 Parent(s): 9f5efd5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -30
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
- # Так надо
7
  model = None
8
 
9
  def load_model():
@@ -21,9 +21,11 @@ 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("Модель успешно инициализирована!")
@@ -38,33 +40,41 @@ def respond(message, history, system_message, max_new_tokens, temperature, top_p
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,8 +84,8 @@ demo = gr.ChatInterface(
74
  ),
75
  gr.Slider(
76
  minimum=1,
77
- maximum=2048,
78
- value=512,
79
  step=1,
80
  label="Max new tokens"
81
  ),
@@ -94,21 +104,21 @@ demo = gr.ChatInterface(
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)}")
 
3
  from llama_cpp import Llama
4
  import os
5
 
6
+ # Global model instance
7
  model = None
8
 
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("Модель успешно инициализирована!")
 
40
  global model
41
  if model is None:
42
  model = load_model()
 
 
 
 
 
 
 
43
 
44
+ with gr.Progress() as progress:
45
+ progress(0, desc="Подготовка контекста...")
46
+
47
+ # Ограничиваем историю последними 3 сообщениями
48
+ recent_history = history[-3:] if len(history) > 3 else history
49
+
50
+ context = f"{system_message}\n\n"
51
+ for user_msg, assistant_msg in recent_history:
52
+ context += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
53
+ context += f"User: {message}\nAssistant: "
54
+
55
+ print(f"Генерируем ответ для контекста длиной {len(context)} символов")
56
+
57
+ progress(0.3, desc="Генерация ответа...")
58
+ response = model(
59
+ prompt=context,
60
+ max_tokens=max_new_tokens,
61
+ temperature=temperature,
62
+ top_p=top_p,
63
+ stop=["User:", "\n\n", "<|endoftext|>"],
64
+ echo=False
65
+ )
66
+
67
+ progress(1, desc="Готово!")
68
+ generated_text = response['choices'][0]['text']
69
+ print(f"Ответ сгенерирован успешно, длина: {len(generated_text)}")
70
+ return generated_text.strip()
71
 
72
  except Exception as e:
73
  error_msg = f"Произошла ошибка: {str(e)}"
74
  print(error_msg)
75
  return error_msg
76
 
77
+ # Создаем интерфейс с оптимизированными параметрами
78
  demo = gr.ChatInterface(
79
  respond,
80
  additional_inputs=[
 
84
  ),
85
  gr.Slider(
86
  minimum=1,
87
+ maximum=512,
88
+ value=128,
89
  step=1,
90
  label="Max new tokens"
91
  ),
 
104
  label="Top-p (nucleus sampling)"
105
  ),
106
  ],
107
+ title="LLight Chat Model (Optimized)",
108
+ description="Оптимизированный чат с LLight-3.2-3B",
109
  examples=[
110
  ["Привет! Как дела?"],
111
  ["Расскажи мне о себе"],
112
  ["Что ты умеешь делать?"]
113
  ],
114
+ cache_examples=True # Включаем кэширование примеров
115
  )
116
 
117
  # Запускаем приложение
118
  if __name__ == "__main__":
119
  try:
120
  print("Инициализация приложения...")
121
+ model = load_model() # Предзагружаем модель
122
  print("Модель загружена успешно при старте")
123
  except Exception as e:
124
  print(f"Ошибка при инициализации: {str(e)}")