def double_model(): def f1(a): return a + a model = Model.create(f1, 'a', '1') model._id = 1 return model
def len_model(): def f2(a): return len(a) model = Model.create(f2, 'a', '2') model._id = 2 return model
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)
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)
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)
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)
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
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)
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)
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
def model(): model = Model.create(func, "kek", "Test Model") return model
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
def create_test_model(name): model = Model.create(func, "kek", name) return model
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)
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
def created_model(sklearn_model_obj, pandas_data): return Model.create(sklearn_model_obj, pandas_data)
def model(): mdl = Model.create(lambda data: data, 'input', 'test_model') mdl._id = 'test_model_id' return mdl