Ankerkraut commited on
Commit
a0c700c
·
1 Parent(s): 64c0ba9

cache model with respecting zerogpu cuda usage

Browse files
Files changed (1) hide show
  1. app.py +16 -5
app.py CHANGED
@@ -59,9 +59,20 @@ def load_model():
59
  generator = pipeline(task="text-generation", model=ankerbot_model, tokenizer=ankerbot_tokenizer, torch_dtype=torch.float16, attn_implementation="eager", use_flash_attention_2=False) # True for flash-attn2 else False
60
  generator_mini = pipeline(task="text-generation", model=ankerbot_model, tokenizer=ankerbot_tokenizer, torch_dtype=torch.float16, attn_implementation="eager", use_flash_attention_2=False) # True for flash-attn2 else False
61
  return (generator, generator_mini)
62
- generator = load_model()
 
 
 
 
 
 
 
 
 
 
 
63
  @spaces.GPU
64
- def generate_response(query, context, prompts, max_tokens, temperature, top_p):
65
  system_message_support = f"""<|im_start|>system
66
  Rolle: Du bist der KI-Assistent für Kundenservice, der im Namen des Unternehmens und Gewürzmanufaktur Ankerkraut handelt und Antworten aus der Ich-Perspektive, basierend auf den bereitgestellten Informationen gibt.
67
  Oberstes Ziel: Beantworte die folgende Frage präzise, indem du den Kontext zusammenfasst.
@@ -119,7 +130,7 @@ def generate_response(query, context, prompts, max_tokens, temperature, top_p):
119
 
120
  print("Prompt: ", system_message)
121
 
122
- response = generator[0](system_message, do_sample=True, top_p=top_p, max_new_tokens=max_tokens, temperature=temperature)[0]["generated_text"]
123
 
124
  # Extract only the assistant's response
125
  if "assistant" in response:
@@ -153,7 +164,7 @@ def respond(
153
  temperature,
154
  top_p,
155
  ):
156
-
157
  if system_message == None:
158
  system_message = f"""<|im_start|>system Rolle: Du bist ein KI-Assistent der die vom Kunden formuliert Frage in Stichworte verwandelt die für eine Vektorsuche verwendet werden.
159
  Oberstes Ziel: Suche Schlüsselbegriffe aus der Frage heraus und gebe diese als Hauptbegriff aus. Suche zusätzlich ähnliche Begriffe aus.
@@ -173,7 +184,7 @@ def respond(
173
  colleciton_name = "products"
174
 
175
  context = search_qdrant_with_context(query + " " + refined_context[0]["generated_text"].split("assistant\n").pop(), collection_name)
176
- answer = generate_response(query, context, max_tokens, temperature, top_p)
177
  full_conv = f"Nutzer:{query};Assistent:{answer}"
178
  if len(last_messages) > 5:
179
  last_messages.pop(0)
 
59
  generator = pipeline(task="text-generation", model=ankerbot_model, tokenizer=ankerbot_tokenizer, torch_dtype=torch.float16, attn_implementation="eager", use_flash_attention_2=False) # True for flash-attn2 else False
60
  generator_mini = pipeline(task="text-generation", model=ankerbot_model, tokenizer=ankerbot_tokenizer, torch_dtype=torch.float16, attn_implementation="eager", use_flash_attention_2=False) # True for flash-attn2 else False
61
  return (generator, generator_mini)
62
+
63
+ model_cache = None
64
+
65
+ @spaces.GPU
66
+ def get_model():
67
+ global _model_cache
68
+ if _model_cache is None:
69
+ # Load model only if it's not already loaded
70
+ print("Loading model for the first time...")
71
+ _model_cache = load_model()
72
+ return _model_cache
73
+
74
  @spaces.GPU
75
+ def generate_response(query, context, prompts, max_tokens, temperature, top_p, generator):
76
  system_message_support = f"""<|im_start|>system
77
  Rolle: Du bist der KI-Assistent für Kundenservice, der im Namen des Unternehmens und Gewürzmanufaktur Ankerkraut handelt und Antworten aus der Ich-Perspektive, basierend auf den bereitgestellten Informationen gibt.
78
  Oberstes Ziel: Beantworte die folgende Frage präzise, indem du den Kontext zusammenfasst.
 
130
 
131
  print("Prompt: ", system_message)
132
 
133
+ response = generator(system_message, do_sample=True, top_p=top_p, max_new_tokens=max_tokens, temperature=temperature)[0]["generated_text"]
134
 
135
  # Extract only the assistant's response
136
  if "assistant" in response:
 
164
  temperature,
165
  top_p,
166
  ):
167
+ generator = get_model()
168
  if system_message == None:
169
  system_message = f"""<|im_start|>system Rolle: Du bist ein KI-Assistent der die vom Kunden formuliert Frage in Stichworte verwandelt die für eine Vektorsuche verwendet werden.
170
  Oberstes Ziel: Suche Schlüsselbegriffe aus der Frage heraus und gebe diese als Hauptbegriff aus. Suche zusätzlich ähnliche Begriffe aus.
 
184
  colleciton_name = "products"
185
 
186
  context = search_qdrant_with_context(query + " " + refined_context[0]["generated_text"].split("assistant\n").pop(), collection_name)
187
+ answer = generate_response(query, context, max_tokens, temperature, top_p, generator[0])
188
  full_conv = f"Nutzer:{query};Assistent:{answer}"
189
  if len(last_messages) > 5:
190
  last_messages.pop(0)