in containers/serving/resources/predict.py [0:0]
def inference():
"""
if not request.is_json:
result = {"error": "Content type is not application/json"}
return Response(response=result, status=415, mimetype="application/json")
"""
data = None
# Convert from CSV to pandas
if request.content_type == "text/csv":
data = request.data.decode("utf-8")
s = io.StringIO(data)
data = pd.read_csv(s, header=None)
else:
return Response(
response="This predictor only supports CSV data", status=415, mimetype="text/plain"
)
data.columns = ["inputs"]
sentences = data["inputs"].values.tolist()
try:
inputs = TransformerService.tokenizer(
sentences,
padding=True,
truncation=True,
max_length=512,
return_tensors="tf"
)
outputs = TransformerService.tf_model(inputs)
predictions = tf.nn.softmax(outputs.logits, axis=-1)
labels = np.argmax(predictions, axis=1)
pred = np.max(predictions, axis=1)
pred_dict = {
"predictions": pred.tolist(),
"labels": labels.tolist()
}
"""
out = io.StringIO()
pd.DataFrame(pred_dict).to_csv(out, header=False, index=False)
result = out.getvalue()
return Response(response=result, status=200, mimetype="text/csv")
"""
return Response(response=json.dumps(pred_dict), status=200, mimetype="application/json")
except Exception as e:
print(str(e))
result = {"error": f"Internal server error"}
return Response(response=result, status=500, mimetype="application/json")
finally:
pass