Отправьте изображение base64 в запросе в api прогнозирования torchserve

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