cody82 commited on
Commit
9d9c29a
·
verified ·
1 Parent(s): c263659

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -23
app.py CHANGED
@@ -1,42 +1,43 @@
1
  import torch
2
  import gradio as gr
3
- from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
4
 
5
- model_id = "google/flan-t5-base" # можно flan-t5-large, если хватает памяти
6
- tokenizer = AutoTokenizer.from_pretrained(model_id)
7
- model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
8
- device = "cuda" if torch.cuda.is_available() else "cpu"
9
- model.to(device)
10
 
11
- context = """
12
- Университет Иннополис был основан в 2012 году. Это современный вуз в России,
13
- специализирующийся на IT и робототехнике, расположенный в городе Иннополис, Татарстан.
14
- """
 
 
 
 
 
 
 
15
 
16
  def respond(message, history=None):
17
  if history is None:
18
  history = []
19
 
20
- prompt = (
21
- "Используя следующий контекст, ответь на вопрос четко и кратко.\n"
22
- f"Контекст: {context}\n"
23
- f"Вопрос: {message}\n"
24
- "Ответ:"
25
- )
26
-
27
- inputs = tokenizer(prompt, return_tensors="pt").to(device)
28
 
 
29
  with torch.no_grad():
30
  outputs = model.generate(
31
  **inputs,
32
- max_new_tokens=100,
33
  do_sample=False,
34
- eos_token_id=tokenizer.eos_token_id
 
 
35
  )
36
- answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
 
 
37
 
38
  history.append((message, answer))
39
  return history
40
 
41
- iface = gr.ChatInterface(fn=respond, title="Innopolis Q&A")
42
- iface.launch()
 
1
  import torch
2
  import gradio as gr
3
+ from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig
4
 
5
+ model_path = "cody82/unitrip" # путь к локальной модели
 
 
 
 
6
 
7
+ config = AutoConfig.from_pretrained(model_path, local_files_only=True)
8
+ tokenizer = AutoTokenizer.from_pretrained(model_path, local_files_only=True)
9
+ model = AutoModelForCausalLM.from_pretrained(
10
+ model_path,
11
+ config=config,
12
+ local_files_only=True,
13
+ torch_dtype=torch.float32,
14
+ device_map="auto" if torch.cuda.is_available() else None,
15
+ )
16
+
17
+ system_message = "Ты — умный помощник по Университету Иннополис."
18
 
19
  def respond(message, history=None):
20
  if history is None:
21
  history = []
22
 
23
+ prompt = f"{system_message}\nUser: {message}\nAssistant:"
 
 
 
 
 
 
 
24
 
25
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
26
  with torch.no_grad():
27
  outputs = model.generate(
28
  **inputs,
29
+ max_new_tokens=128,
30
  do_sample=False,
31
+ pad_token_id=tokenizer.eos_token_id,
32
+ eos_token_id=tokenizer.eos_token_id,
33
+ use_cache=True,
34
  )
35
+
36
+ generated_tokens = outputs[0][inputs["input_ids"].shape[1]:]
37
+ answer = tokenizer.decode(generated_tokens, skip_special_tokens=True).strip()
38
 
39
  history.append((message, answer))
40
  return history
41
 
42
+ chat = gr.ChatInterface(fn=respond, title="Innopolis Assistant")
43
+ chat.launch()