Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
113 |
-
|
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 |
-
|
127 |
-
|
|
|
|
|
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 "Модель не загружена или произошла ошибка при загрузке. Проверьте
|
167 |
|
168 |
# Замеряем время
|
169 |
start_time = time.time()
|
@@ -187,7 +181,7 @@ def respond(
|
|
187 |
|
188 |
# Генерация ответа
|
189 |
outputs = model.generate(
|
190 |
-
|
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="Ваш вопрос",
|