#deep-learning #pytorch #production
Вопрос:
В настоящее время я развертываю модель pytorch с помощью докера TorchServe и зарегистрировал модель для того же. При создании пользовательского обработчика для модели я определил метод предварительной обработки, как показано ниже:
def preprocess(self, data):
images = []
for row in data:
# Compat layer: normally the envelope should just return the data
# directly, but older versions of Torchserve didn't have envelope.
image = row.get("data") or row.get("body")
if isinstance(image, str):
# if the image is a string of bytesarray.
im_binary = base64.b64decode(image)
buf = io.BytesIO(im_binary)
image = Image.open(buf).convert('RGB')
images.append(image)
return torch.stack(images).to(self.device).tolist()
Я также определил метод обработки следующим образом
def handle(self, data, context):
"""
Invoke by TorchServe for prediction request.
Do pre-processing of data, prediction using model and postprocessing of prediciton output
:param data: Input data for prediction
:param context: Initial context contains model server system properties.
:return: prediction output
"""
model_input = self.preprocess(data)
return model_input
Каким образом я должен отправить запрос в api прогнозирования? Я попробовал следующий способ, но у меня ничего не вышло:
res = requests.post("http://localhost:8080/predictions/mymodel", data = 'base64 image')