Spaces:
Sleeping
Sleeping
File size: 6,149 Bytes
68300d0 8cbfc7e 1275349 fe67270 cb249bf fe67270 68300d0 464f8f9 fe67270 78ac0ef 4c2e13f 78ac0ef 4c2e13f 78ac0ef 1275349 cb249bf 78ac0ef 1275349 4c2e13f 78ac0ef 464f8f9 fe67270 464f8f9 78ac0ef fe67270 8cc000e 78ac0ef 8cc000e 78ac0ef cb249bf 8cc000e cb249bf 8cc000e fe67270 8cc000e 464f8f9 8cc000e 464f8f9 cb249bf fe67270 9f5efd5 fe67270 cb249bf fe67270 78ac0ef 437bce8 fe67270 1275349 fe67270 cb249bf eff9ab5 af9ae78 8cc000e 68300d0 464f8f9 68300d0 78ac0ef cb249bf 78ac0ef 8cc000e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
import gradio as gr
from huggingface_hub import hf_hub_download
from llama_cpp import Llama
import os
# Global model instance
model = None
def load_model():
global model
try:
print("Начинаем загрузку модели из Hub...")
model_path = hf_hub_download(
repo_id="AugustLight/LLight-3.2-3B-Instruct",
filename="Llight.Q8_0.gguf",
repo_type="model"
)
print(f"Модель загружена в: {model_path}")
model = Llama(
model_path=model_path,
n_ctx=512,
n_threads=os.cpu_count(),
n_batch=128,
n_gpu_layers=0,
embedding_cache_size=1024
)
print("Модель успешно инициализирована!")
return model
except Exception as e:
print(f"Подробная ошибка при загрузке модели: {str(e)}")
raise e
def respond(message, history, system_message, max_new_tokens, temperature, top_p):
try:
global model
if model is None:
print("Загружаем модель...")
model = load_model()
print("Модель загружена")
with gr.Progress() as progress:
progress(0, desc="Подготовка контекста...")
# Отладочная печать входных параметров
print(f"""
Входные параметры:
- message: {message}
- history length: {len(history)}
- system_message: {system_message}
- max_new_tokens: {max_new_tokens}
- temperature: {temperature}
- top_p: {top_p}
""")
# Ограничиваем историю последними 3 сообщениями
recent_history = history[-3:] if len(history) > 3 else history
context = f"{system_message}\n\n"
for user_msg, assistant_msg in recent_history:
context += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
context += f"User: {message}\nAssistant: "
print(f"Генерируем ответ для контекста длиной {len(context)} символов")
try:
progress(0.3, desc="Генерация ответа...")
response = model(
prompt=context,
max_tokens=max_new_tokens,
temperature=temperature,
top_p=top_p,
stop=["User:", "\n\n", "<|endoftext|>"],
echo=False
)
progress(1, desc="Готово!")
generated_text = response['choices'][0]['text']
print(f"Ответ сгенерирован успешно, длина: {len(generated_text)}")
return generated_text.strip()
except Exception as inner_e:
print(f"Ошибка при генерации: {str(inner_e)}")
print(f"Тип ошибки: {type(inner_e).__name__}")
return f"Ошибка при генерации: {str(inner_e)}"
except KeyboardInterrupt:
return "Генерация прервана пользователем"
except Exception as e:
print(f"Основная ошибка: {str(e)}")
print(f"Тип ошибки: {type(e).__name__}")
return f"Произошла ошибка: {str(e)}\nТип ошибки: {type(e).__name__}"
# Создаем интерфейс с оптимизированными параметрами
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.",
label="System message"
),
gr.Slider(
minimum=1,
maximum=512,
value=128,
step=1,
label="Max new tokens"
),
gr.Slider(
minimum=0.1,
maximum=2.0,
value=0.3,
step=0.1,
label="Temperature"
),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)"
),
],
title="LLight Chat Model (Optimized)",
description="Оптимизированный чат с LLight-3.2-3B",
examples = [
["Привет! Как дела?",
"Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.", # system_message
128, # max_new_tokens
0.3, # temperature
0.95 # top_p
],
["Расскажи мне о себе",
"Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.",
128,
0.3,
0.95
],
["Что ты умеешь делать?",
"Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.",
128,
0.3,
0.95
]
],
cache_examples=True
)
# Запускаем приложение
if __name__ == "__main__":
try:
print("Инициализация приложения...")
model = load_model() # Предзагружаем модель
print("Модель загружена успешно при старте")
except Exception as e:
print(f"Ошибка при инициализации: {str(e)}")
demo.launch(
show_error=True, # Показывать подробности ошибок
debug=True # Включить отладочный режим
) |