Spaces:
Sleeping
Sleeping
File size: 4,946 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 78ac0ef cb249bf fe67270 464f8f9 78ac0ef 464f8f9 cb249bf fe67270 9f5efd5 fe67270 cb249bf fe67270 78ac0ef 437bce8 fe67270 1275349 fe67270 cb249bf eff9ab5 cb249bf 68300d0 464f8f9 68300d0 78ac0ef cb249bf 78ac0ef de3d994 |
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 |
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:
model = load_model()
with gr.Progress() as progress:
progress(0, desc="Подготовка контекста...")
# Ограничиваем историю последними 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)} символов")
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 e:
error_msg = f"Произошла ошибка: {str(e)}"
print(error_msg)
return error_msg
# Создаем интерфейс с оптимизированными параметрами
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() |