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)
|