From b8dd49bcaec6b3812b6c2ff9c7d03f559aac44b7 Mon Sep 17 00:00:00 2001 From: miguelgfierro Date: Sat, 29 Jun 2024 20:24:47 +0200 Subject: [PATCH 1/4] Moving LightFM to extras Signed-off-by: miguelgfierro --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 87923cf00..b57ad28f2 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,6 @@ "category-encoders>=2.6.0,<3", # requires packaging "cornac>=1.15.2,<2", # requires packaging, tqdm "hyperopt>=0.2.7,<1", - "lightfm>=1.17,<2", # requires requests "lightgbm>=4.0.0,<5", "locust>=2.12.2,<3", # requires jinja2 "memory-profiler>=0.61.0,<1", @@ -80,6 +79,7 @@ # nni needs to be upgraded "nni==1.5", "pymanopt>=0.2.5", + "lightfm>=1.17,<2", ] # The following dependency can be installed as below, however PyPI does not allow direct URLs. From c2e9572f68ec69975fb076112dc3d59497c7baf3 Mon Sep 17 00:00:00 2001 From: miguelgfierro Date: Sat, 29 Jun 2024 20:36:35 +0200 Subject: [PATCH 2/4] move lightfm tests to experimental Signed-off-by: miguelgfierro --- tests/ci/azureml_tests/test_groups.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/ci/azureml_tests/test_groups.py b/tests/ci/azureml_tests/test_groups.py index f05e27a9f..2a262c12d 100644 --- a/tests/ci/azureml_tests/test_groups.py +++ b/tests/ci/azureml_tests/test_groups.py @@ -47,8 +47,6 @@ "tests/functional/examples/test_notebooks_python.py::test_geoimc_functional", # 1006.19s # "tests/functional/examples/test_notebooks_python.py::test_benchmark_movielens_cpu", # 58s - # - "tests/functional/examples/test_notebooks_python.py::test_lightfm_functional", ], "group_cpu_003": [ # Total group time: 2253s "tests/data_validation/recommenders/datasets/test_criteo.py::test_download_criteo_sample", # 1.05s @@ -237,10 +235,6 @@ "tests/unit/recommenders/models/test_geoimc.py::test_imcproblem", "tests/unit/recommenders/models/test_geoimc.py::test_inferer_init", "tests/unit/recommenders/models/test_geoimc.py::test_inferer_infer", - "tests/unit/recommenders/models/test_lightfm_utils.py::test_interactions", - "tests/unit/recommenders/models/test_lightfm_utils.py::test_fitting", - "tests/unit/recommenders/models/test_lightfm_utils.py::test_sim_users", - "tests/unit/recommenders/models/test_lightfm_utils.py::test_sim_items", "tests/unit/recommenders/models/test_sar_singlenode.py::test_init", "tests/unit/recommenders/models/test_sar_singlenode.py::test_fit", "tests/unit/recommenders/models/test_sar_singlenode.py::test_predict", @@ -453,3 +447,14 @@ "tests/unit/examples/test_notebooks_gpu.py::test_gpu_vm", ], } + +# Experimental are additional test groups that require to install extra dependencies: pip install .[experimental] +experimental_test_groups = { + "group_cpu_001": [ + "tests/unit/recommenders/models/test_lightfm_utils.py::test_interactions", + "tests/unit/recommenders/models/test_lightfm_utils.py::test_fitting", + "tests/unit/recommenders/models/test_lightfm_utils.py::test_sim_users", + "tests/unit/recommenders/models/test_lightfm_utils.py::test_sim_items", + "tests/functional/examples/test_notebooks_python.py::test_lightfm_functional", + ] +} From fe1379027046eb47863fe1f298abb09d32261be7 Mon Sep 17 00:00:00 2001 From: miguelgfierro Date: Sat, 29 Jun 2024 20:41:25 +0200 Subject: [PATCH 3/4] Note in notebook Signed-off-by: miguelgfierro --- .../02_model_collaborative_filtering/lightfm_deep_dive.ipynb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/02_model_collaborative_filtering/lightfm_deep_dive.ipynb b/examples/02_model_collaborative_filtering/lightfm_deep_dive.ipynb index 8e588760f..5a60091d7 100755 --- a/examples/02_model_collaborative_filtering/lightfm_deep_dive.ipynb +++ b/examples/02_model_collaborative_filtering/lightfm_deep_dive.ipynb @@ -22,6 +22,8 @@ "source": [ "This notebook explains the concept of a Factorization Machine based model for recommendation, it also outlines the steps to construct a pure matrix factorization and a Factorization Machine using the [LightFM](https://github.com/lyst/lightfm) package. It also demonstrates how to extract both user and item affinity from a fitted model.\n", "\n", + "*NOTE: LightFM is not available in the core package of Recommenders, to run this notebook, install the experimental package with `pip install recommenders[experimental]`.*\n", + "\n", "## 1. Factorization Machine model\n", "\n", "### 1.1 Background\n", From cf64eed0a2e3eb93ab14e8f20a72d2d04f36c7bb Mon Sep 17 00:00:00 2001 From: miguelgfierro Date: Sat, 29 Jun 2024 22:21:02 +0200 Subject: [PATCH 4/4] Deprecation of SchemaModel in Pandera Signed-off-by: miguelgfierro --- recommenders/datasets/movielens.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recommenders/datasets/movielens.py b/recommenders/datasets/movielens.py index c0b3b5f72..a8a8b4441 100644 --- a/recommenders/datasets/movielens.py +++ b/recommenders/datasets/movielens.py @@ -582,7 +582,7 @@ def unique_columns(df, *, columns): return not df[columns].duplicated().any() -class MockMovielensSchema(pa.SchemaModel): +class MockMovielensSchema(pa.DataFrameModel): """ Mock dataset schema to generate fake data for testing purpose. This schema is configured to mimic the Movielens dataset