KoDer123 commited on
Commit
66b58b6
·
verified ·
1 Parent(s): a388086

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -17
app.py CHANGED
@@ -38,12 +38,10 @@ logger.info(f"Используем директорию для хранения:
38
  # Настраиваем пути для сохранения моделей
39
  CACHE_DIR = os.path.join(DISK_DIR, "models_cache")
40
  TORCH_HOME = os.path.join(DISK_DIR, "torch_home")
41
- OFFLOAD_DIR = os.path.join(DISK_DIR, "offload")
42
 
43
  # Создаем директории
44
  os.makedirs(CACHE_DIR, exist_ok=True)
45
  os.makedirs(TORCH_HOME, exist_ok=True)
46
- os.makedirs(OFFLOAD_DIR, exist_ok=True)
47
 
48
  # Устанавливаем переменные окружения для управления кэшированием
49
  os.environ["TRANSFORMERS_CACHE"] = CACHE_DIR
@@ -65,7 +63,7 @@ logger.info("Информация о дисках перед загрузкой:
65
  check_disk_space("/")
66
  check_disk_space(DISK_DIR)
67
 
68
- # Загрузка модели и токенизатора (исправлен лишний пробел в имени)
69
  model_name = "KoDer123/Nerealnost_8M"
70
 
71
  # Глобальные переменные для модели
@@ -96,7 +94,6 @@ def load_model():
96
  # Определяем оптимальный режим загрузки
97
  model_kwargs = {
98
  "cache_dir": CACHE_DIR,
99
- "local_files_only": False,
100
  "trust_remote_code": True
101
  }
102
 
@@ -104,17 +101,12 @@ def load_model():
104
  if torch.cuda.is_available():
105
  logger.info("Загружаем модель в режиме GPU...")
106
  model_kwargs.update({
107
- "device_map": "auto",
108
  "torch_dtype": torch.float16,
109
  })
110
  else:
111
  logger.info("Загружаем модель в режиме CPU...")
112
- model_kwargs.update({
113
- "device_map": "cpu",
114
- "torch_dtype": torch.float32,
115
- "low_cpu_mem_usage": True,
116
- "offload_folder": OFFLOAD_DIR
117
- })
118
 
119
  # Загружаем модель
120
  model = AutoModelForCausalLM.from_pretrained(
@@ -122,9 +114,11 @@ def load_model():
122
  **model_kwargs
123
  )
124
 
125
- # Проверяем, на каком устройстве размещена модель
126
- device_info = next(model.parameters()).device
127
- logger.info(f"Модель успешно загружена на устройство: {device_info}")
 
 
128
 
129
  is_model_loaded = True
130
  return "Модель успешно загружена"
@@ -163,7 +157,7 @@ def respond(
163
 
164
  # Проверяем, загружена ли модель
165
  if not is_model_loaded or model is None or tokenizer is None:
166
- return "Модель не загружена или произошла ошибка при загрузке. Проверьте имя модели 'KoDer123/Nerealnost_8M'."
167
 
168
  # Замеряем время
169
  start_time = time.time()
@@ -187,7 +181,7 @@ def respond(
187
 
188
  # Генерация ответа
189
  outputs = model.generate(
190
- **inputs,
191
  max_new_tokens=max_tokens,
192
  temperature=temperature,
193
  top_p=top_p,
@@ -221,7 +215,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
221
 
222
  with gr.Row():
223
  with gr.Column(scale=4):
224
- chatbot = gr.Chatbot(label="Диалог")
225
  user_input = gr.Textbox(
226
  placeholder="Введите ваш вопрос здесь...",
227
  label="Ваш вопрос",
 
38
  # Настраиваем пути для сохранения моделей
39
  CACHE_DIR = os.path.join(DISK_DIR, "models_cache")
40
  TORCH_HOME = os.path.join(DISK_DIR, "torch_home")
 
41
 
42
  # Создаем директории
43
  os.makedirs(CACHE_DIR, exist_ok=True)
44
  os.makedirs(TORCH_HOME, exist_ok=True)
 
45
 
46
  # Устанавливаем переменные окружения для управления кэшированием
47
  os.environ["TRANSFORMERS_CACHE"] = CACHE_DIR
 
63
  check_disk_space("/")
64
  check_disk_space(DISK_DIR)
65
 
66
+ # Загрузка модели и токенизатора
67
  model_name = "KoDer123/Nerealnost_8M"
68
 
69
  # Глобальные переменные для модели
 
94
  # Определяем оптимальный режим загрузки
95
  model_kwargs = {
96
  "cache_dir": CACHE_DIR,
 
97
  "trust_remote_code": True
98
  }
99
 
 
101
  if torch.cuda.is_available():
102
  logger.info("Загружаем модель в режиме GPU...")
103
  model_kwargs.update({
 
104
  "torch_dtype": torch.float16,
105
  })
106
  else:
107
  logger.info("Загружаем модель в режиме CPU...")
108
+ # Удаляем параметры, требующие Accelerate
109
+ # Без параметров device_map и low_cpu_mem_usage
 
 
 
 
110
 
111
  # Загружаем модель
112
  model = AutoModelForCausalLM.from_pretrained(
 
114
  **model_kwargs
115
  )
116
 
117
+ # Переносим модель на доступное устройство
118
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
119
+ model = model.to(device)
120
+
121
+ logger.info(f"Модель успешно загружена на устройство: {device}")
122
 
123
  is_model_loaded = True
124
  return "Модель успешно загружена"
 
157
 
158
  # Проверяем, загружена ли модель
159
  if not is_model_loaded or model is None or tokenizer is None:
160
+ return "Модель не загружена или произошла ошибка при загрузке. Проверьте логи для получения дополнительной информации."
161
 
162
  # Замеряем время
163
  start_time = time.time()
 
181
 
182
  # Генерация ответа
183
  outputs = model.generate(
184
+ inputs.input_ids, # Передаем только input_ids, не весь словарь
185
  max_new_tokens=max_tokens,
186
  temperature=temperature,
187
  top_p=top_p,
 
215
 
216
  with gr.Row():
217
  with gr.Column(scale=4):
218
+ chatbot = gr.Chatbot(label="Диалог", type="messages") # Исправление типа чатбота
219
  user_input = gr.Textbox(
220
  placeholder="Введите ваш вопрос здесь...",
221
  label="Ваш вопрос",