Пример #1
0
def double_model():
    def f1(a):
        return a + a

    model = Model.create(f1, 'a', '1')
    model._id = 1
    return model
Пример #2
0
def len_model():
    def f2(a):
        return len(a)

    model = Model.create(f2, 'a', '2')
    model._id = 2
    return model
Пример #3
0
def test_create_model(sklearn_model_obj, pandas_data):
    model = Model.create(sklearn_model_obj, pandas_data)
    assert model is not None
    assert isinstance(model.wrapper, SklearnModelWrapper)
    input_meta, output_meta = model.wrapper.method_signature('predict')
    assert input_meta.columns == list(pandas_data)
    assert output_meta.real_type == np.ndarray
    assert {'numpy', 'sklearn', 'pandas'}.issubset(model.requirements.modules)
Пример #4
0
def test_create_model_with_custom_wrapper(sklearn_model_obj, pandas_data):
    wrapper = SklearnModelWrapper().bind_model(sklearn_model_obj, input_data=pandas_data)
    model = Model.create(sklearn_model_obj, pandas_data, custom_wrapper=wrapper)
    assert model is not None
    assert model.wrapper is wrapper
    input_meta, output_meta = model.wrapper.method_signature('predict')
    assert input_meta.columns == list(pandas_data)
    assert output_meta.real_type == np.ndarray
    assert {'numpy', 'sklearn', 'pandas'}.issubset(model.requirements.modules)
Пример #5
0
def test_create_model(sklearn_model_obj, pandas_data):
    model = Model.create(sklearn_model_obj, pandas_data)
    assert model is not None
    assert isinstance(model.wrapper, SklearnModelWrapper)
    assert model.input_meta.columns == list(pandas_data)
    # assert model.input_meta. == data.values

    assert model.output_meta.real_type == np.ndarray
    assert {'numpy', 'sklearn', 'pandas'}.issubset(model.requirements.modules)
Пример #6
0
def test_create_model_with_custom_wrapper(sklearn_model_obj, pandas_data):
    wrapper = SklearnModelWrapper().bind_model(sklearn_model_obj)
    model = Model.create(sklearn_model_obj,
                         pandas_data,
                         custom_wrapper=wrapper)
    assert model is not None
    assert isinstance(model.wrapper, SklearnModelWrapper)
    assert model.input_meta.columns == list(pandas_data)
    assert model.output_meta.real_type == np.ndarray
    assert {'numpy', 'sklearn', 'pandas'}.issubset(model.requirements.modules)
Пример #7
0
def test_create_model_with_additional_artifact(artifact, sklearn_model_obj, pandas_data, artifact_repository):
    model = Model.create(sklearn_model_obj, pandas_data, additional_artifacts=artifact)
    assert model is not None
    model._id = 'test_model'
    artifact_repository.push_model_artifacts(model)
    assert len(model.artifact_req_persisted.bytes_dict()) == 4

    model_payloads = model.artifact_req_persisted.bytes_dict()
    for name, payload in artifact.bytes_dict().items():
        assert name in model_payloads
        assert model_payloads[name] == payload
Пример #8
0
def test_create_model_with_custom_requirements(sklearn_model_obj, pandas_data):
    requirements = Requirements([
        InstallableRequirement('dumb', '0.4.1'),
        InstallableRequirement('art', '4.0')
    ])
    model = Model.create(sklearn_model_obj,
                         pandas_data,
                         custom_requirements=Requirements([Requirement()]))
    assert model is not None
    assert all(req in [r.module for r in requirements.installable]
               for req in model.requirements.installable)
Пример #9
0
def create_model(model_object,
                 input_data,
                 model_name: str = None,
                 params: Dict[str, Any] = None,
                 description: str = None) -> Model:
    """
    Creates Model instance from arbitrary model objects and sample of input data

    :param model_object: model object (function, sklearn model, tensorflow output tensor list etc)
    :param input_data: sample of input data (numpy array, pandas dataframe, feed dict etc)
    :param model_name: name for model in database, if not provided will be autogenerated
    :param params: dict with arbitrary parameters. Must be json-serializable
    :param description: text description of this model
    :return: :class:`~ebonite.core.objects.core.Model` instance
    """
    return Model.create(model_object, input_data, model_name, params,
                        description)
Пример #10
0
def test_multimodel_buildable(metadata_repo):
    # Dunno why, but it only worked w/o fixtures
    proj = Project('proj')
    task = Task('Test Task')
    mdl = Model.create(lambda data: data, 'input', 'test_model')

    proj = metadata_repo.create_project(proj)
    task.project = proj
    task = metadata_repo.create_task(task)
    mdl.task = task
    mdl = metadata_repo.create_model(mdl)

    with pytest.raises(ValueError):
        MultiModelBuildable([], server_type=FlaskServer.type)
    assert mdl.has_meta_repo
    mm_buildable = MultiModelBuildable([mdl], server_type=FlaskServer.type)
    assert mm_buildable.task.name == 'Test Task'
    assert mm_buildable.get_provider().get_python_version(
    ) == platform.python_version()
    assert len(mm_buildable.models) == 1
Пример #11
0
def model():
    model = Model.create(func, "kek", "Test Model")
    return model
Пример #12
0
def unpersisted_model(sklearn_model_obj, pandas_data):
    model = Model.create(sklearn_model_obj, pandas_data)
    model._id = 'test_model'
    assert model._persisted_artifacts is None
    assert model._unpersisted_artifacts is not None
    return model
Пример #13
0
def create_test_model(name):
    model = Model.create(func, "kek", name)
    return model
Пример #14
0
def test_create_model_with_custom_input_meta(sklearn_model_obj, pandas_data):
    model = Model.create(sklearn_model_obj,
                         pandas_data,
                         custom_input_meta=DataFrameType(['kek1', 'kek2']))
    assert model is not None
    assert issubclass(model.input_meta, DataFrameType)
Пример #15
0
def test_base_author(sklearn_model_obj, pandas_data, username):
    model = Model.create(sklearn_model_obj, pandas_data)
    assert model is not None
    assert model.author == username
Пример #16
0
def created_model(sklearn_model_obj, pandas_data):
    return Model.create(sklearn_model_obj, pandas_data)
Пример #17
0
def model():
    mdl = Model.create(lambda data: data, 'input', 'test_model')
    mdl._id = 'test_model_id'
    return mdl