Update code/inference.py
Browse files- code/inference.py +9 -17
code/inference.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
| 1 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 2 |
-
|
| 3 |
import torch
|
| 4 |
-
import json
|
| 5 |
|
| 6 |
template = """Alice Gate's Persona: Alice Gate is a young, computer engineer-nerd with a knack for problem solving and a passion for technology.
|
| 7 |
<START>
|
|
@@ -26,18 +25,9 @@ def model_fn(model_dir):
|
|
| 26 |
model = torch.load(f"{model_dir}/torch_model.pt")
|
| 27 |
return model, tokenizer
|
| 28 |
|
| 29 |
-
def input_fn(self, input_data, content_type):
|
| 30 |
-
return decoder.decode(input_data, content_type)
|
| 31 |
-
|
| 32 |
-
def output_fn(decoded_output, accept):
|
| 33 |
-
response_body = json.dumps({
|
| 34 |
-
"message": decoded_output
|
| 35 |
-
})
|
| 36 |
-
return response_body, accept
|
| 37 |
-
|
| 38 |
def predict_fn(input_data, load_list):
|
| 39 |
model, tokenizer = load_list
|
| 40 |
-
inputs =
|
| 41 |
user_name = inputs["user_name"]
|
| 42 |
user_input = "\n".join(inputs["user_input"])
|
| 43 |
prompt = template.format(
|
|
@@ -55,12 +45,14 @@ def predict_fn(input_data, load_list):
|
|
| 55 |
pad_token_id = 50256,
|
| 56 |
num_return_sequences = 1
|
| 57 |
)
|
| 58 |
-
decoded_output = tokenizer.decode(encoded_output[0], skip_special_tokens=True)
|
| 59 |
-
decoded_output =
|
| 60 |
parsed_result = re.sub('\*.*?\*', '', decoded_output).strip()
|
| 61 |
-
|
| 62 |
-
decoded_output =
|
|
|
|
| 63 |
try:
|
| 64 |
-
|
|
|
|
| 65 |
except Exception: pass
|
| 66 |
return decoded_output
|
|
|
|
| 1 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 2 |
+
import re
|
| 3 |
import torch
|
|
|
|
| 4 |
|
| 5 |
template = """Alice Gate's Persona: Alice Gate is a young, computer engineer-nerd with a knack for problem solving and a passion for technology.
|
| 6 |
<START>
|
|
|
|
| 25 |
model = torch.load(f"{model_dir}/torch_model.pt")
|
| 26 |
return model, tokenizer
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
def predict_fn(input_data, load_list):
|
| 29 |
model, tokenizer = load_list
|
| 30 |
+
inputs = input_data.pop("inputs", input_data)
|
| 31 |
user_name = inputs["user_name"]
|
| 32 |
user_input = "\n".join(inputs["user_input"])
|
| 33 |
prompt = template.format(
|
|
|
|
| 45 |
pad_token_id = 50256,
|
| 46 |
num_return_sequences = 1
|
| 47 |
)
|
| 48 |
+
decoded_output = tokenizer.decode(encoded_output[0], skip_special_tokens=True).replace(prompt,"")
|
| 49 |
+
decoded_output = decoded_output.split("Alice Gate:", 1)[1].split(f"{user_name}:",1)[0].strip()
|
| 50 |
parsed_result = re.sub('\*.*?\*', '', decoded_output).strip()
|
| 51 |
+
if len(parsed_result) != 0: decoded_output = parsed_result
|
| 52 |
+
decoded_output = decoded_output.replace("*","")
|
| 53 |
+
decoded_output = " ".join(decoded_output.split())
|
| 54 |
try:
|
| 55 |
+
parsed_result = decoded_output[:[m.start() for m in re.finditer(r'[.!?]', decoded_output)][-1]+1]
|
| 56 |
+
if len(parsed_result) != 0: decoded_output = parsed_result
|
| 57 |
except Exception: pass
|
| 58 |
return decoded_output
|