Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -10,6 +10,13 @@ import logging
|
|
| 10 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
| 11 |
logger = logging.getLogger(__name__)
|
| 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
# Информация о системе и CUDA
|
| 14 |
logger.info("===== Запуск приложения =====")
|
| 15 |
logger.info(f"PyTorch: {torch.__version__}")
|
|
@@ -82,6 +89,7 @@ def load_model():
|
|
| 82 |
logger.info("Загружаем токенизатор...")
|
| 83 |
tokenizer = AutoTokenizer.from_pretrained(
|
| 84 |
model_name,
|
|
|
|
| 85 |
cache_dir=CACHE_DIR,
|
| 86 |
local_files_only=False
|
| 87 |
)
|
|
@@ -94,7 +102,8 @@ def load_model():
|
|
| 94 |
# Определяем оптимальный режим загрузки
|
| 95 |
model_kwargs = {
|
| 96 |
"cache_dir": CACHE_DIR,
|
| 97 |
-
"trust_remote_code": True
|
|
|
|
| 98 |
}
|
| 99 |
|
| 100 |
# Проверяем доступность CUDA
|
|
@@ -105,7 +114,6 @@ def load_model():
|
|
| 105 |
})
|
| 106 |
else:
|
| 107 |
logger.info("Загружаем модель в режиме CPU...")
|
| 108 |
-
# Удаляем параметры, требующие Accelerate
|
| 109 |
# Без параметров device_map и low_cpu_mem_usage
|
| 110 |
|
| 111 |
# Загружаем модель
|
|
@@ -157,7 +165,10 @@ def respond(
|
|
| 157 |
|
| 158 |
# Проверяем, загружена ли модель
|
| 159 |
if not is_model_loaded or model is None or tokenizer is None:
|
| 160 |
-
|
|
|
|
|
|
|
|
|
|
| 161 |
|
| 162 |
# Замеряем время
|
| 163 |
start_time = time.time()
|
|
@@ -213,6 +224,16 @@ def respond(
|
|
| 213 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 214 |
gr.Markdown("# НереальностьQA - Чат с экспертом по эзотерике")
|
| 215 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 216 |
with gr.Row():
|
| 217 |
with gr.Column(scale=4):
|
| 218 |
chatbot = gr.Chatbot(label="Диалог", type="messages") # Исправление типа чатбота
|
|
@@ -261,6 +282,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 261 |
* **Режим работы**: {"GPU" if torch.cuda.is_available() else "CPU"}
|
| 262 |
* **Директория для кэша**: {CACHE_DIR}
|
| 263 |
* **Статус загрузки**: {"Успешно" if is_model_loaded else "Ошибка"}
|
|
|
|
| 264 |
""")
|
| 265 |
|
| 266 |
# Примеры вопросов
|
|
|
|
| 10 |
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
| 11 |
logger = logging.getLogger(__name__)
|
| 12 |
|
| 13 |
+
# Получаем API токен из переменных окружения
|
| 14 |
+
HF_TOKEN = os.environ.get("HF_TOKEN", None)
|
| 15 |
+
if HF_TOKEN:
|
| 16 |
+
logger.info("API токен найден")
|
| 17 |
+
else:
|
| 18 |
+
logger.warning("API токен не найден! Для доступа к закрытой модели необходимо добавить HF_TOKEN в секреты репозитория")
|
| 19 |
+
|
| 20 |
# Информация о системе и CUDA
|
| 21 |
logger.info("===== Запуск приложения =====")
|
| 22 |
logger.info(f"PyTorch: {torch.__version__}")
|
|
|
|
| 89 |
logger.info("Загружаем токенизатор...")
|
| 90 |
tokenizer = AutoTokenizer.from_pretrained(
|
| 91 |
model_name,
|
| 92 |
+
token=HF_TOKEN, # Добавляем токен для доступа к закрытой модели
|
| 93 |
cache_dir=CACHE_DIR,
|
| 94 |
local_files_only=False
|
| 95 |
)
|
|
|
|
| 102 |
# Определяем оптимальный режим загрузки
|
| 103 |
model_kwargs = {
|
| 104 |
"cache_dir": CACHE_DIR,
|
| 105 |
+
"trust_remote_code": True,
|
| 106 |
+
"token": HF_TOKEN # Добавляем токен для доступа к закрытой модели
|
| 107 |
}
|
| 108 |
|
| 109 |
# Проверяем доступность CUDA
|
|
|
|
| 114 |
})
|
| 115 |
else:
|
| 116 |
logger.info("Загружаем модель в режиме CPU...")
|
|
|
|
| 117 |
# Без параметров device_map и low_cpu_mem_usage
|
| 118 |
|
| 119 |
# Загружаем модель
|
|
|
|
| 165 |
|
| 166 |
# Проверяем, загружена ли модель
|
| 167 |
if not is_model_loaded or model is None or tokenizer is None:
|
| 168 |
+
if not HF_TOKEN:
|
| 169 |
+
return "Модель не загружена. Для доступа к закрытой модели требуется добавить HF_TOKEN в секреты репозитория."
|
| 170 |
+
else:
|
| 171 |
+
return "Модель не загружена или произошла ошибка при загрузке. Проверьте логи для получения дополнительной информации."
|
| 172 |
|
| 173 |
# Замеряем время
|
| 174 |
start_time = time.time()
|
|
|
|
| 224 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 225 |
gr.Markdown("# НереальностьQA - Чат с экспертом по эзотерике")
|
| 226 |
|
| 227 |
+
if not HF_TOKEN:
|
| 228 |
+
gr.Markdown("""
|
| 229 |
+
## ⚠️ Внимание: API токен не найден!
|
| 230 |
+
|
| 231 |
+
Для работы с закрытой моделью необходимо добавить HF_TOKEN в секреты репозитория:
|
| 232 |
+
1. Settings > Repository secrets > New secret
|
| 233 |
+
2. Name: HF_TOKEN
|
| 234 |
+
3. Value: ваш токен доступа с huggingface.co/settings/tokens
|
| 235 |
+
""", elem_id="warning-box")
|
| 236 |
+
|
| 237 |
with gr.Row():
|
| 238 |
with gr.Column(scale=4):
|
| 239 |
chatbot = gr.Chatbot(label="Диалог", type="messages") # Исправление типа чатбота
|
|
|
|
| 282 |
* **Режим работы**: {"GPU" if torch.cuda.is_available() else "CPU"}
|
| 283 |
* **Директория для кэша**: {CACHE_DIR}
|
| 284 |
* **Статус загрузки**: {"Успешно" if is_model_loaded else "Ошибка"}
|
| 285 |
+
* **API токен**: {"Настроен" if HF_TOKEN else "Отсутствует"}
|
| 286 |
""")
|
| 287 |
|
| 288 |
# Примеры вопросов
|