Esempio n. 1
0
class _DataInterface(BaseDataInterface):
    input_name = os.getenv(
        'INPUT_NAME',
        _ModelConfigurations().options['input_name'])
    output_name = os.getenv(
        'OUTPUT_NAME',
        _ModelConfigurations().options['output_name'])
 def __init__(self, model_runners):
     self.model_runners = model_runners
     self.classifiers = OrderedDict()
     self.input_name = None
     self.channel = None
     self.stub = None
     self.model_spec_name = os.getenv("MODEL_SPEC_NAME", _ModelConfigurations().options["model_spec_name"])
     self.model_spec_signature_name = os.getenv("MODEL_SPEC_SIGNATURE_NAME", _ModelConfigurations().options["model_spec_signature_name"])
     self.load_model()
Esempio n. 3
0
def test_ModelConfigurations():
    prediction_types = [e.value for e in PREDICTION_TYPE]

    assert os.path.exists(_ModelConfigurations().interface_filepath)
    assert isinstance(_ModelConfigurations().interface_dict, Dict)
    assert isinstance(_ModelConfigurations().model_name, str)
    assert isinstance(_ModelConfigurations().io, Dict)
    assert isinstance(_ModelConfigurations().model_runners, List)
    assert isinstance(_ModelConfigurations().runner, str)
    assert _ModelConfigurations().prediction_type in prediction_types
Esempio n. 4
0
 def predict(self, input_data: Image) -> np.ndarray:
     logger.info(f'run predict proba in {self.__class__.__name__}')
     _prediction = input_data
     for k, v in self.classifiers.items():
         if v['runner'] == MODEL_RUNTIME.SKLEARN.value:
             _prediction = np.array(v['predictor'].transform(_prediction))
         else:
             request = predict_pb2.PredictRequest()
             request.model_spec.name = self.model_spec_name
             request.model_spec.signature_name = self.model_spec_signature_name
             request.inputs[_DataInterface().input_name].CopyFrom(tf.make_tensor_proto(
                 _prediction, shape=_ModelConfigurations().io['input_shape']))
             result = self.stub.Predict(request, TIMEOUT_SECOND)
             _prediction = np.array(
                 result.outputs[_DataInterface().output_name].float_val)
     output = _prediction
     return output
from typing import List, Sequence
import numpy as np
import onnxruntime as rt

from src.app.configurations import _ModelConfigurations
from src.app.constants import MODEL_RUNTIME
from src.app.ml.base_predictor import BaseData, BaseDataInterface, BaseDataConverter, BasePredictor
from src.app.ml.save_helper import load_labels
import logging

logger = logging.getLogger(__name__)

LABELS = load_labels(_ModelConfigurations().options["label_filepath"])


class _Data(BaseData):
    test_data: List[List[int]] = [[5.1, 3.5, 1.4, 0.2]]
    labels: List[str] = LABELS


class _DataInterface(BaseDataInterface):
    pass


class _DataConverter(BaseDataConverter):
    pass


class _Classifier(BasePredictor):
    def __init__(self, model_runners):
        self.model_runners = model_runners
class _DataInterface(BaseDataInterface):
    input_name = os.getenv("INPUT_NAME",
                           _ModelConfigurations().options["input_name"])
    output_name = os.getenv("OUTPUT_NAME",
                            _ModelConfigurations().options["output_name"])