Spaces:
Sleeping
Sleeping
Commit
·
a0c700c
1
Parent(s):
64c0ba9
cache model with respecting zerogpu cuda usage
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
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)
|