shao3d commited on
Commit
80fabf4
·
verified ·
1 Parent(s): 216ac5c

Update app.py

Browse files

Исправил формат Gradio для чата

Files changed (1) hide show
  1. app.py +18 -11
app.py CHANGED
@@ -3,36 +3,43 @@ import torch
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
4
  from peft import PeftModel
5
 
 
6
  base_model_name = "t-tech/T-lite-it-1.0"
7
- lora_repo = "shao3d/my-t-lite-qlora" # Замени на твой логин
8
 
9
  tokenizer = AutoTokenizer.from_pretrained(base_model_name)
10
  base_model = AutoModelForCausalLM.from_pretrained(
11
  base_model_name,
12
- device_map="cpu", # Используем CPU вместо "auto"
13
- torch_dtype=torch.float16 # FP16 для экономии памяти на CPU
14
  )
15
  model = PeftModel.from_pretrained(base_model, lora_repo)
16
  model.eval() # Переключаем в режим предсказания
17
 
18
- def generate_response(prompt):
19
- inputs = tokenizer(prompt, return_tensors="pt").to("cpu") # Используем CPU
 
 
 
 
20
  outputs = model.generate(
21
  **inputs,
22
- max_new_tokens=200,
23
- temperature=0.7,
24
- top_p=0.9,
25
- do_sample=True
26
  )
27
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
28
- return response[len(prompt):].strip()
 
29
 
 
30
  with gr.Blocks() as demo:
31
  gr.Markdown("# Тест дообученной T-Lite")
32
  chatbot = gr.Chatbot()
33
  msg = gr.Textbox(placeholder="Напиши сообщение для модели...")
34
  clear = gr.Button("Очистить чат")
35
- msg.submit(generate_response, msg, chatbot)
36
  clear.click(lambda: [], None, chatbot)
37
 
38
  demo.launch()
 
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
4
  from peft import PeftModel
5
 
6
+ # Загружаем базовую модель и токенизатор
7
  base_model_name = "t-tech/T-lite-it-1.0"
8
+ lora_repo = "sha03d/my-t-lite-qlora" # Замени на твой логин
9
 
10
  tokenizer = AutoTokenizer.from_pretrained(base_model_name)
11
  base_model = AutoModelForCausalLM.from_pretrained(
12
  base_model_name,
13
+ device_map="cpu", # Используем CPU для бесплатного Space
14
+ torch_dtype=torch.float16 # FP16 для экономии памяти
15
  )
16
  model = PeftModel.from_pretrained(base_model, lora_repo)
17
  model.eval() # Переключаем в режим предсказания
18
 
19
+ def generate_response(history):
20
+ # history это список пар [пользовательское_сообщение, ответ_модели]
21
+ # Берем последний вопрос пользователя
22
+ user_message = history[-1][0] # Последнее сообщение пользователя
23
+ # Генерируем ответ
24
+ inputs = tokenizer(user_message, return_tensors="pt").to("cpu")
25
  outputs = model.generate(
26
  **inputs,
27
+ max_new_tokens=50, # Уменьшили для скорости
28
+ temperature=0.1, # Сделали ответы точнее и быстрее
29
+ top_p=0.5, # Уменьшили для скорости
30
+ do_sample=True # Оставляем для разнообразия
31
  )
32
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
33
+ # Возвращаем обновлённую историю: добавляем пару [вопрос, ответ]
34
+ return history + [[user_message, response[len(user_message):].strip()]]
35
 
36
+ # Создаём интерфейс Gradio
37
  with gr.Blocks() as demo:
38
  gr.Markdown("# Тест дообученной T-Lite")
39
  chatbot = gr.Chatbot()
40
  msg = gr.Textbox(placeholder="Напиши сообщение для модели...")
41
  clear = gr.Button("Очистить чат")
42
+ msg.submit(generate_response, inputs=chatbot, outputs=chatbot)
43
  clear.click(lambda: [], None, chatbot)
44
 
45
  demo.launch()