Exemplo n.º 1
0
def test_content_types(tensor_spec: TensorSpec, request_input: RequestInput):
    input_schema = Schema(inputs=[tensor_spec])

    inference_request = InferenceRequest(
        parameters=Parameters(content_type=PandasCodec.ContentType),
        inputs=[request_input],
    )
    data = decode_inference_request(inference_request)

    # _enforce_schema will raise if something fails
    _enforce_schema(data, input_schema)
Exemplo n.º 2
0
async def test_predict_pytorch(runtime_pytorch: MLflowRuntime):
    # The model used here is the MNIST pytorch example in mlflow:
    # https://github.com/mlflow/mlflow/tree/master/examples/pytorch/MNIST
    # input is a 28*28 image
    data = np.random.randn(1, 28 * 28).astype(np.float32)
    inference_request = InferenceRequest(
        parameters=Parameters(content_type=NumpyCodec.ContentType),
        inputs=[
            RequestInput(
                name="predict",
                shape=data.shape,
                data=data.tolist(),
                datatype="FP32",
            )
        ],
    )
    response = await runtime_pytorch.predict(inference_request)

    outputs = response.outputs
    assert len(outputs) == 1
    assert outputs[0].name == DefaultOutputName
Exemplo n.º 3
0
import pandas as pd

from typing import Any

from mlserver.types import RequestInput, Parameters, InferenceRequest
from mlserver.codecs import NumpyCodec, StringCodec, PandasCodec
from mlserver.codecs.middleware import DecodedParameterName, codec_middleware
from mlserver.settings import ModelSettings


@pytest.mark.parametrize(
    "inference_request, expected",
    [
        (
            InferenceRequest(
                parameters=Parameters(content_type=PandasCodec.ContentType),
                inputs=[
                    RequestInput(
                        name="foo",
                        shape=[2, 2],
                        data=[1, 2, 3, 4],
                        datatype="INT32",
                        parameters=Parameters(
                            content_type=NumpyCodec.ContentType),
                    ),
                ],
            ),
            pd.DataFrame({"foo": [[1, 2], [3, 4]]}),
        ),
        (
            InferenceRequest(
Exemplo n.º 4
0
from mlserver.types import RequestInput, Parameters, TensorData
from mlserver.codecs import NumpyCodec, StringCodec
from mlserver.model import MLModel


@pytest.mark.parametrize(
    "request_input,expected",
    [
        (
            RequestInput(
                name="foo",
                shape=[2, 2],
                data=[1, 2, 3, 4],
                datatype="INT32",
                parameters=Parameters(
                    content_type=NumpyCodec.ContentType,
                    _decoded_payload=np.array([[1, 2], [3, 4]]),
                ),
            ),
            np.array([[1, 2], [3, 4]]),
        ),
        (
            RequestInput(
                name="foo",
                shape=[17],
                data=b"my unicode string",
                datatype="BYTES",
                parameters=Parameters(
                    content_type=StringCodec.ContentType,
                    _decoded_payload="my unicode string",
                ),
            ),
Exemplo n.º 5
0
)
from mlserver.batching.requests import BatchedRequests


@pytest.mark.parametrize(
    "request_inputs, expected_request_input, expected_minibatch_sizes",
    [
        (
            {
                "req-1":
                RequestInput(
                    name="foo",
                    datatype="INT32",
                    shape=[1, 3],
                    data=[1, 2, 3],
                    parameters=Parameters(content_type="np"),
                ),
                "req-2":
                RequestInput(
                    name="foo",
                    datatype="INT32",
                    shape=[1, 3],
                    data=[4, 5, 6],
                ),
                "req-3":
                RequestInput(
                    name="foo",
                    datatype="INT32",
                    shape=[1, 3],
                    data=[7, 8, 9],
                    parameters=Parameters(foo="bar"),
Exemplo n.º 6
0
)
def test_to_metadata_tensors(schema: Schema, expected: List[MetadataTensor]):
    metadata_tensors = to_metadata_tensors(schema)

    assert metadata_tensors == expected


@pytest.mark.parametrize(
    "tensor_spec, request_input",
    [
        (
            ColSpec(name="foo", type=DataType.boolean),
            RequestInput(
                name="foo",
                datatype="BOOL",
                parameters=Parameters(content_type=NumpyCodec.ContentType),
                shape=[2],
                data=[True, False],
            ),
        ),
        (
            ColSpec(name="foo", type=DataType.string),
            RequestInput(
                name="foo",
                datatype="BYTES",
                parameters=Parameters(content_type=StringCodec.ContentType),
                shape=[2, 11],
                data=b"hello worldhello world",
            ),
        ),
        (
Exemplo n.º 7
0
                                      model_version=expected.model_version)

    assert inference_response == expected


@pytest.mark.parametrize(
    "inference_request, expected",
    [
        (
            InferenceRequest(inputs=[
                RequestInput(
                    name="a",
                    data=[1, 2, 3],
                    datatype="FP32",
                    shape=[1, 3],
                    parameters=Parameters(
                        _decoded_payload=np.array([[1, 2, 3]])),
                ),
                RequestInput(
                    name="b",
                    data=b"hello world",
                    datatype="BYTES",
                    shape=[1, 11],
                    parameters=Parameters(_decoded_payload=["hello world"]),
                ),
            ]),
            pd.DataFrame({
                "a": [np.array([1, 2, 3])],
                "b": ["hello world"]
            }),
        ),
        (
Exemplo n.º 8
0
                    RequestInput(
                        name="foo", shape=[2, 2], data=[1, 2, 3, 4], datatype="INT32"
                    )
                ]
            ),
            np.array([[1, 2], [3, 4]]),
        ),
        (
            InferenceRequest(
                inputs=[
                    RequestInput(
                        name="foo",
                        shape=[2, 2],
                        data=[1, 2, 3, 4],
                        datatype="INT32",
                        parameters=Parameters(**{DecodedParameterName: np.array([23])}),
                    )
                ]
            ),
            np.array([23]),
        ),
    ],
)
def test_first_input_decode(inference_request: InferenceRequest, expected: np.ndarray):
    inference_request.inputs = [inference_request.inputs[0]]
    first_input = NumpyRequestCodec.decode(inference_request)

    np.testing.assert_equal(first_input, expected)


def test_first_input_error(inference_request: InferenceRequest):