Example #1
0
    def predict_raw(self, request):
        print("Predict raw")
        default_data_type = request.data.WhichOneof("data_oneof")
        print(default_data_type)
        if default_data_type == "tftensor" and self.grpc:
            tfrequest = predict_pb2.PredictRequest()
            tfrequest.model_spec.name = self.model_name
            tfrequest.model_spec.signature_name = self.signature_name
            tfrequest.inputs[self.model_input].CopyFrom(request.data.tftensor)
            result = self.stub.Predict(tfrequest)
            print(result)
            datadef = prediction_pb2.DefaultData(
                tftensor=result.outputs[self.model_output])
            return prediction_pb2.SeldonMessage(data=datadef)

        elif default_data_type == "jsonData":
            predictions = self.predict(request.jsonData, features_names=[])
            return prediction_pb2.SeldonMessage(jsonData=predictions)

        else:
            features = get_data_from_proto(request)
            datadef = request.data
            data_type = request.WhichOneof("data_oneof")
            predictions = self.predict(features, datadef.names)
            predictions = np.array(predictions)

            if data_type == "data":
                default_data_type = request.data.WhichOneof("data_oneof")
            else:
                default_data_type = "tensor"

            class_names = []
            data = array_to_grpc_datadef(predictions, class_names,
                                         default_data_type)
            return prediction_pb2.SeldonMessage(data=data)
Example #2
0
def test_get_data_from_proto_tftensor():
    arr = np.array([[1], [2]])
    datadef = prediction_pb2.DefaultData(tftensor=tf.make_tensor_proto(arr))
    request = prediction_pb2.SeldonMessage(data=datadef)
    arr: np.ndarray = scu.get_data_from_proto(request)
    assert arr.shape == (2, 1)
    assert arr[0][0] == 1
    assert arr[1][0] == 2
Example #3
0
def test_get_data_from_proto_ndarray():
    arr = np.array([[1], [2]])
    lv = scu.array_to_list_value(arr)
    datadef = prediction_pb2.DefaultData(ndarray=lv)
    request = prediction_pb2.SeldonMessage(data=datadef)
    arr: np.ndarray = scu.get_data_from_proto(request)
    assert arr.shape == (2, 1)
    assert arr[0][0] == 1
    assert arr[1][0] == 2
Example #4
0
def test_get_data_from_proto_tensor():
    arr = np.array([1, 2])
    datadef = prediction_pb2.DefaultData(
        tensor=prediction_pb2.Tensor(shape=(2, 1), values=arr))
    request = prediction_pb2.SeldonMessage(data=datadef)
    arr: np.ndarray = scu.get_data_from_proto(request)
    assert arr.shape == (2, 1)
    assert arr[0][0] == 1
    assert arr[1][0] == 2
Example #5
0
    def predict_raw(self, request):
        log.debug("Predict raw")
        request_data_type = request.WhichOneof("data_oneof")
        default_data_type = request.data.WhichOneof("data_oneof")
        log.debug(str(request_data_type), str(default_data_type))
        if default_data_type == "tftensor" and self.grpc:
            tfrequest = predict_pb2.PredictRequest()
            tfrequest.model_spec.name = self.model_name
            tfrequest.model_spec.signature_name = self.signature_name
            tfrequest.inputs[self.model_input].CopyFrom(request.data.tftensor)
            result = self.stub.Predict(tfrequest)
            log.debug(result)
            datadef = prediction_pb2.DefaultData(
                tftensor=result.outputs[self.model_output])
            return prediction_pb2.SeldonMessage(data=datadef)

        elif request_data_type == "jsonData":
            features = get_data_from_proto(request)
            predictions = self.predict(features, features_names=[])
            try:
                sm = json_to_seldon_message({"jsonData": predictions})
            except ParseError as e:
                sm = prediction_pb2.SeldonMessage(strData=predictions)
            return sm

        else:
            features = get_data_from_proto(request)
            datadef = request.data
            predictions = self.predict(features, datadef.names)
            predictions = np.array(predictions)

            if request_data_type is not "data":
                default_data_type = "tensor"

            class_names = []
            data = array_to_grpc_datadef(predictions, class_names,
                                         default_data_type)

            return prediction_pb2.SeldonMessage(data=data)