warprec 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- warprec-1.0.0/LICENSE +21 -0
- warprec-1.0.0/PKG-INFO +220 -0
- warprec-1.0.0/README.md +180 -0
- warprec-1.0.0/pyproject.toml +89 -0
- warprec-1.0.0/warprec/__init__.py +6 -0
- warprec-1.0.0/warprec/common/__init__.py +8 -0
- warprec-1.0.0/warprec/common/initialize.py +417 -0
- warprec-1.0.0/warprec/common/optimizers.py +73 -0
- warprec-1.0.0/warprec/data/__init__.py +26 -0
- warprec-1.0.0/warprec/data/dataset.py +867 -0
- warprec-1.0.0/warprec/data/entities/__init__.py +10 -0
- warprec-1.0.0/warprec/data/entities/interactions.py +594 -0
- warprec-1.0.0/warprec/data/entities/sessions.py +366 -0
- warprec-1.0.0/warprec/data/entities/train_structures/__init__.py +21 -0
- warprec-1.0.0/warprec/data/entities/train_structures/custom_collate_fn.py +29 -0
- warprec-1.0.0/warprec/data/entities/train_structures/interaction_structures.py +199 -0
- warprec-1.0.0/warprec/data/entities/train_structures/session_structures.py +278 -0
- warprec-1.0.0/warprec/data/eval_loaders.py +400 -0
- warprec-1.0.0/warprec/data/filtering.py +543 -0
- warprec-1.0.0/warprec/data/reader/__init__.py +21 -0
- warprec-1.0.0/warprec/data/reader/azureblob_reader.py +239 -0
- warprec-1.0.0/warprec/data/reader/base_reader.py +587 -0
- warprec-1.0.0/warprec/data/reader/local_reader.py +147 -0
- warprec-1.0.0/warprec/data/splitting/__init__.py +4 -0
- warprec-1.0.0/warprec/data/splitting/splitter.py +248 -0
- warprec-1.0.0/warprec/data/splitting/strategies.py +498 -0
- warprec-1.0.0/warprec/data/writer/__init__.py +21 -0
- warprec-1.0.0/warprec/data/writer/azureblob_writer.py +145 -0
- warprec-1.0.0/warprec/data/writer/base_writer.py +565 -0
- warprec-1.0.0/warprec/data/writer/local_writer.py +110 -0
- warprec-1.0.0/warprec/evaluation/__init__.py +5 -0
- warprec-1.0.0/warprec/evaluation/evaluator.py +488 -0
- warprec-1.0.0/warprec/evaluation/metrics/__init__.py +19 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/__init__.py +26 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/auc.py +62 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/f1.py +107 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/gauc.py +51 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/hit_rate.py +24 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/lauc.py +57 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/map.py +36 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/mar.py +36 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/mrr.py +27 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/ndcg.py +71 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/precision.py +24 -0
- warprec-1.0.0/warprec/evaluation/metrics/accuracy/recall.py +31 -0
- warprec-1.0.0/warprec/evaluation/metrics/base_metric.py +474 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/__init__.py +7 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/aclt.py +77 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/aplt.py +75 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/arp.py +59 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/pop_reo.py +111 -0
- warprec-1.0.0/warprec/evaluation/metrics/bias/pop_rsp.py +104 -0
- warprec-1.0.0/warprec/evaluation/metrics/coverage/__init__.py +11 -0
- warprec-1.0.0/warprec/evaluation/metrics/coverage/item_coverage.py +58 -0
- warprec-1.0.0/warprec/evaluation/metrics/coverage/numretrieved.py +31 -0
- warprec-1.0.0/warprec/evaluation/metrics/coverage/user_coverage.py +42 -0
- warprec-1.0.0/warprec/evaluation/metrics/coverage/user_coverage_at_n.py +43 -0
- warprec-1.0.0/warprec/evaluation/metrics/diversity/__init__.py +9 -0
- warprec-1.0.0/warprec/evaluation/metrics/diversity/gini_index.py +95 -0
- warprec-1.0.0/warprec/evaluation/metrics/diversity/shannon_entropy.py +76 -0
- warprec-1.0.0/warprec/evaluation/metrics/diversity/srecall.py +107 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/__init__.py +21 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/biasdisparitybd.py +96 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/biasdisparitybr.py +124 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/biasdisparitybs.py +124 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/itemmadranking.py +130 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/itemmadrating.py +134 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/reo.py +154 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/rsp.py +167 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/usermadranking.py +121 -0
- warprec-1.0.0/warprec/evaluation/metrics/fairness/usermadrating.py +98 -0
- warprec-1.0.0/warprec/evaluation/metrics/multiobjective/__init__.py +4 -0
- warprec-1.0.0/warprec/evaluation/metrics/multiobjective/euclideandistance.py +115 -0
- warprec-1.0.0/warprec/evaluation/metrics/multiobjective/hypervolume.py +134 -0
- warprec-1.0.0/warprec/evaluation/metrics/novelty/__init__.py +4 -0
- warprec-1.0.0/warprec/evaluation/metrics/novelty/efd.py +100 -0
- warprec-1.0.0/warprec/evaluation/metrics/novelty/epc.py +100 -0
- warprec-1.0.0/warprec/evaluation/metrics/rating/__init__.py +9 -0
- warprec-1.0.0/warprec/evaluation/metrics/rating/mae.py +16 -0
- warprec-1.0.0/warprec/evaluation/metrics/rating/mse.py +15 -0
- warprec-1.0.0/warprec/evaluation/metrics/rating/rmse.py +21 -0
- warprec-1.0.0/warprec/evaluation/statistical_significance.py +323 -0
- warprec-1.0.0/warprec/pipelines/__init__.py +5 -0
- warprec-1.0.0/warprec/pipelines/design.py +132 -0
- warprec-1.0.0/warprec/pipelines/eval.py +209 -0
- warprec-1.0.0/warprec/pipelines/train.py +559 -0
- warprec-1.0.0/warprec/recommenders/__init__.py +47 -0
- warprec-1.0.0/warprec/recommenders/base_recommender.py +722 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/__init__.py +13 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/__init__.py +9 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/cdae.py +218 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/ease.py +47 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/elsa.py +142 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/macridvae.py +324 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/multidae.py +216 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/multivae.py +255 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/autoencoder/sansa.py +197 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/__init__.py +213 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/dgcf.py +336 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/egcf.py +332 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/esigcf.py +288 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/gcmc.py +337 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/graph_utils.py +173 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/lightccf.py +216 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/lightgcl.py +309 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/lightgcn.py +201 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/lightgcnpp.py +278 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/lightgode.py +258 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/mixrec.py +346 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/ngcf.py +349 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/rp3beta.py +186 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/sgcl.py +201 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/sgl.py +306 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/ultragcn.py +268 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/graph_based/xsimgcl.py +239 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/knn/__init__.py +4 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/knn/itemknn.py +52 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/knn/userknn.py +92 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/latent_factor/__init__.py +6 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/latent_factor/admmslim.py +95 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/latent_factor/bpr.py +150 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/latent_factor/fism.py +219 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/latent_factor/slim.py +74 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/neural/__init__.py +4 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/neural/convncf.py +221 -0
- warprec-1.0.0/warprec/recommenders/collaborative_filtering_recommender/neural/neumf.py +230 -0
- warprec-1.0.0/warprec/recommenders/content_based_recommender/__init__.py +3 -0
- warprec-1.0.0/warprec/recommenders/content_based_recommender/vsm.py +147 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/__init__.py +10 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/afm.py +412 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/dcn.py +353 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/dcnv2.py +418 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/deepfm.py +365 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/fm.py +251 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/nfm.py +314 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/wideanddeep.py +310 -0
- warprec-1.0.0/warprec/recommenders/context_aware_recommender/xdeepfm.py +468 -0
- warprec-1.0.0/warprec/recommenders/hybrid_recommender/__init__.py +6 -0
- warprec-1.0.0/warprec/recommenders/hybrid_recommender/addease.py +59 -0
- warprec-1.0.0/warprec/recommenders/hybrid_recommender/attributeitemknn.py +52 -0
- warprec-1.0.0/warprec/recommenders/hybrid_recommender/attributeuserknn.py +121 -0
- warprec-1.0.0/warprec/recommenders/hybrid_recommender/cease.py +54 -0
- warprec-1.0.0/warprec/recommenders/layers.py +159 -0
- warprec-1.0.0/warprec/recommenders/loops.py +102 -0
- warprec-1.0.0/warprec/recommenders/losses.py +196 -0
- warprec-1.0.0/warprec/recommenders/lr_scheduler_wrapper.py +163 -0
- warprec-1.0.0/warprec/recommenders/proxy.py +146 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/__init__.py +23 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/bert4rec.py +279 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/caser.py +274 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/core.py +281 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/fossil.py +345 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/gru4rec.py +225 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/gsasrec.py +303 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/lightsans.py +399 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/linrec.py +325 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/narm.py +255 -0
- warprec-1.0.0/warprec/recommenders/sequential_recommender/sasrec.py +254 -0
- warprec-1.0.0/warprec/recommenders/similarities.py +80 -0
- warprec-1.0.0/warprec/recommenders/trainer/__init__.py +27 -0
- warprec-1.0.0/warprec/recommenders/trainer/objectives.py +751 -0
- warprec-1.0.0/warprec/recommenders/trainer/scheduler_wrapper.py +76 -0
- warprec-1.0.0/warprec/recommenders/trainer/search_algorithm_wrapper.py +110 -0
- warprec-1.0.0/warprec/recommenders/trainer/trainer.py +758 -0
- warprec-1.0.0/warprec/recommenders/unpersonalized_recommender/__init__.py +4 -0
- warprec-1.0.0/warprec/recommenders/unpersonalized_recommender/pop.py +87 -0
- warprec-1.0.0/warprec/recommenders/unpersonalized_recommender/random.py +45 -0
- warprec-1.0.0/warprec/run.py +66 -0
- warprec-1.0.0/warprec/utils/__init__.py +64 -0
- warprec-1.0.0/warprec/utils/callback.py +98 -0
- warprec-1.0.0/warprec/utils/config/__init__.py +67 -0
- warprec-1.0.0/warprec/utils/config/common.py +465 -0
- warprec-1.0.0/warprec/utils/config/config.py +434 -0
- warprec-1.0.0/warprec/utils/config/dashboard_configuration.py +84 -0
- warprec-1.0.0/warprec/utils/config/evaluation_configuration.py +206 -0
- warprec-1.0.0/warprec/utils/config/general_configuration.py +193 -0
- warprec-1.0.0/warprec/utils/config/model_configuration.py +706 -0
- warprec-1.0.0/warprec/utils/config/reader_configuration.py +270 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/__init__.py +15 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/__init__.py +25 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/autoencoder_config.py +461 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/graph_based_config.py +1301 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/knn_config.py +62 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/latent_factor_config.py +219 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/collaborative_filtering_config/neural_config.py +384 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/content_based_config.py +45 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/context_aware_config.py +708 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/hybrid_config.py +133 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/sequential_model_config.py +1465 -0
- warprec-1.0.0/warprec/utils/config/recommender_model_config/unpersonalized_config.py +13 -0
- warprec-1.0.0/warprec/utils/config/search_space_wrapper.py +109 -0
- warprec-1.0.0/warprec/utils/config/splitter_configuration.py +204 -0
- warprec-1.0.0/warprec/utils/config/writer_configuration.py +131 -0
- warprec-1.0.0/warprec/utils/enums.py +283 -0
- warprec-1.0.0/warprec/utils/helpers.py +136 -0
- warprec-1.0.0/warprec/utils/logger/__init__.py +3 -0
- warprec-1.0.0/warprec/utils/logger/logger.py +126 -0
- warprec-1.0.0/warprec/utils/registry.py +128 -0
warprec-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Information Systems Lab @ Polytechnic University of Bari
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
warprec-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: warprec
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Unifying Academic Rigor and Industrial Scale for Responsible, Reproducible, and Efficient Recommendation
|
|
5
|
+
Author: MarcoWV
|
|
6
|
+
Author-email: marco.avolio@wideverse.com
|
|
7
|
+
Requires-Python: >=3.12,<3.13
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
|
+
Provides-Extra: dashboard
|
|
11
|
+
Provides-Extra: remote-io
|
|
12
|
+
Provides-Extra: serving
|
|
13
|
+
Requires-Dist: azure-identity (>=1.25.1,<2.0.0) ; extra == "remote-io"
|
|
14
|
+
Requires-Dist: azure-storage-blob (>=12.26.0,<13.0.0) ; extra == "remote-io"
|
|
15
|
+
Requires-Dist: codecarbon (>=3.0.0,<4.0.0) ; extra == "dashboard"
|
|
16
|
+
Requires-Dist: fastapi (>=0.135.1,<0.136.0) ; extra == "serving"
|
|
17
|
+
Requires-Dist: fastmcp (>=3.1.0,<4.0.0) ; extra == "serving"
|
|
18
|
+
Requires-Dist: hyperopt (>=0.2.7,<0.3.0)
|
|
19
|
+
Requires-Dist: loguru (>=0.7.3,<0.8.0)
|
|
20
|
+
Requires-Dist: mlflow (>=2.22.0,<3.0.0) ; extra == "dashboard"
|
|
21
|
+
Requires-Dist: narwhals (>=2.15.0,<3.0.0)
|
|
22
|
+
Requires-Dist: numpy (>=2.2.2,<3.0.0)
|
|
23
|
+
Requires-Dist: optuna (>=4.5.0,<5.0.0)
|
|
24
|
+
Requires-Dist: pandas (>=2.2.3,<3.0.0)
|
|
25
|
+
Requires-Dist: polars (>=1.36,<2.0)
|
|
26
|
+
Requires-Dist: pydantic (>=2.10.6,<3.0.0)
|
|
27
|
+
Requires-Dist: ray[data,serve,train,tune] (>=2.45.0,<3.0.0)
|
|
28
|
+
Requires-Dist: scikit-learn (>=1.6.1,<2.0.0)
|
|
29
|
+
Requires-Dist: scipy (>=1.15.1,<2.0.0)
|
|
30
|
+
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
|
31
|
+
Requires-Dist: tensorboard (>=2.19.0,<3.0.0)
|
|
32
|
+
Requires-Dist: tensorboardx (>=2.6.2.2,<3.0.0.0)
|
|
33
|
+
Requires-Dist: torch (>=2.7.0,<3.0.0)
|
|
34
|
+
Requires-Dist: torchmetrics (>=1.8.2,<2.0.0)
|
|
35
|
+
Requires-Dist: types-pyyaml (>=6.0.12.20241230,<7.0.0.0)
|
|
36
|
+
Requires-Dist: types-tabulate (>=0.9.0.20241207,<0.10.0.0)
|
|
37
|
+
Requires-Dist: wandb (>=0.19.10,<0.20.0) ; extra == "dashboard"
|
|
38
|
+
Description-Content-Type: text/markdown
|
|
39
|
+
|
|
40
|
+
# ๐ WarpRec
|
|
41
|
+
|
|
42
|
+
[](https://github.com/sisinflab/warprec/releases)
|
|
43
|
+
[](https://opensource.org/licenses/MIT)
|
|
44
|
+
[](https://www.python.org/downloads/release/python-3120/)
|
|
45
|
+
[](https://warprec.readthedocs.io/en/latest/)
|
|
46
|
+
[](https://pytorch.org/)
|
|
47
|
+
[](https://github.com/astral-sh/ruff)
|
|
48
|
+
[](https://codecarbon.io/)
|
|
49
|
+
[](https://modelcontextprotocol.io/)
|
|
50
|
+
[](https://github.com/sisinflab/warprec)
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<a href="https://warprec.readthedocs.io/en/latest/">
|
|
54
|
+
<img src="https://img.shields.io/badge/๐%20Read%20the%20Docs-warprec-blue?style=for-the-badge" alt="Read the Docs"/>
|
|
55
|
+
</a>
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
WarpRec is a flexible and efficient framework designed for building, training, and evaluating recommendation models. It supports a wide range of configurations, customizable pipelines, and powerful optimization tools to enhance model performance and usability.
|
|
59
|
+
|
|
60
|
+
WarpRec is designed for both beginners and experienced practitioners. For newcomers, it offers a simple and intuitive interface to explore and experiment with state-of-the-art recommendation models. For advanced users, WarpRec provides a modular and extensible architecture that allows rapid prototyping, complex experiment design, and fine-grained control over every step of the recommendation pipeline.
|
|
61
|
+
|
|
62
|
+
Whether you're learning how recommender systems work or conducting high-performance research and development, WarpRec offers the right tools to match your workflow.
|
|
63
|
+
|
|
64
|
+
## ๐๏ธ Architecture
|
|
65
|
+
|
|
66
|
+
<p align="center">
|
|
67
|
+
<img src="assets/architecture.png" alt="WarpRec Architecture" width="100%"/>
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
WarpRec is built on **4 foundational pillars** โ Scalability, Green AI, Agentic Readiness, and Scientific Rigor โ and organized into **5 modular engines** that manage the end-to-end recommendation lifecycle:
|
|
71
|
+
|
|
72
|
+
1. **Reader** โ Ingests user-item interactions and metadata from local or cloud storage via a backend-agnostic Narwhals abstraction layer.
|
|
73
|
+
2. **Data Engine** โ Applies configurable filtering and splitting strategies to produce clean, leak-free train/validation/test sets.
|
|
74
|
+
3. **Recommendation Engine** โ Trains and optimizes models using PyTorch, with seamless scaling from single-GPU to multi-node Ray clusters.
|
|
75
|
+
4. **Evaluation Engine** โ Computes 40 GPU-accelerated metrics in a single pass with automated statistical significance testing.
|
|
76
|
+
5. **Writer** โ Serializes results, checkpoints, and carbon reports to local or cloud storage.
|
|
77
|
+
|
|
78
|
+
An **Application Layer** exposes trained models through a REST API (FastAPI) and an MCP server for agentic AI workflows.
|
|
79
|
+
|
|
80
|
+
## ๐ Table of Contents
|
|
81
|
+
|
|
82
|
+
- [โจ Key Features](#-key-features)
|
|
83
|
+
- [โ๏ธ Installation](#๏ธ-installation)
|
|
84
|
+
- [๐ Prerequisites](#-prerequisites)
|
|
85
|
+
- [๐ ๏ธ Setup Guide](#๏ธ-setup-guide)
|
|
86
|
+
- [๐ Usage](#-usage)
|
|
87
|
+
- [๐๏ธ Training a model](#๏ธ-training-a-model)
|
|
88
|
+
- [โ๏ธ Design a model](#๏ธ-design-a-model)
|
|
89
|
+
- [๐ Evaluate a model](#-evaluate-a-model)
|
|
90
|
+
- [๐งฐ Makefile Commands](#-makefile-commands)
|
|
91
|
+
- [๐ค Contributing](#-contributing)
|
|
92
|
+
- [๐ License](#-license)
|
|
93
|
+
- [๐ Citation](#-citation)
|
|
94
|
+
- [๐ง Contact](#-contact)
|
|
95
|
+
|
|
96
|
+
## โจ Key Features
|
|
97
|
+
|
|
98
|
+
- **55 Built-in Algorithms**: WarpRec ships with 55 state-of-the-art recommendation models spanning 6 paradigms โ Unpersonalized, Content-Based, Collaborative Filtering (e.g., `LightGCN`, `EASE`$^R$, `MultiVAE`), Context-Aware (e.g., `DeepFM`, `xDeepFM`), Sequential (e.g., `SASRec`, `BERT4Rec`, `GRU4Rec`), and Hybrid. All models are fully configurable and extend a standardized base class, making it easy to prototype custom architectures within the same pipeline.
|
|
99
|
+
- **Backend-Agnostic Data Engine**: Built on [Narwhals](https://narwhals-dev.github.io/narwhals/), WarpRec operates over Pandas, Polars, and Spark without code changes โ enabling a true "write-once, run-anywhere" workflow from laptop to distributed cluster. Data ingestion supports both local filesystems and cloud object storage (Azure Blob Storage).
|
|
100
|
+
- **Comprehensive Data Processing**: The data module provides 13 filtering strategies (filter-by-rating, k-core, cold-start heuristics) and 6 splitting protocols (random/temporal Hold-Out, Leave-k-Out, Fixed Timestamp, k-fold Cross-Validation), for a total of 19 configurable strategies to ensure rigorous and reproducible experimental setups.
|
|
101
|
+
- **40 GPU-Accelerated Metrics**: The evaluation suite covers 40 metrics across 7 families โ Accuracy, Rating, Coverage, Novelty, Diversity, Bias, and Fairness โ including multi-objective metrics for simultaneous optimization of competing goals. All metrics are computed with full GPU acceleration for large-scale experiments.
|
|
102
|
+
- **Statistical Rigor**: WarpRec automates hypothesis testing with paired (Student's t-test, Wilcoxon signed-rank) and independent-group (Mann-Whitney U) tests, and applies multiple comparison corrections via **Bonferroni** and **FDR (Benjamini-Hochberg)** to prevent p-hacking and ensure statistically robust conclusions.
|
|
103
|
+
- **Distributed Training & HPO**: Seamless vertical and horizontal scaling from single-GPU to multi-node Ray clusters. Hyperparameter optimization supports Grid, Random, Bayesian, HyperOpt, Optuna, and BoHB strategies, with ASHA pruning and model-level early stopping to maximize computational efficiency.
|
|
104
|
+
- **Green AI & Carbon Tracking**: WarpRec is the first recommendation framework with native [CodeCarbon](https://codecarbon.io/) integration, automatically quantifying energy consumption and COโ emissions for every experiment and persisting carbon footprint reports alongside standard results.
|
|
105
|
+
- **Agentic AI via MCP**: WarpRec natively implements a [Model Context Protocol](https://modelcontextprotocol.io/) server (`infer-api/mcp_server.py`), exposing trained recommenders as callable tools within LLM and autonomous agent workflows โ transforming the framework from a static predictor into an interactive, agent-ready component.
|
|
106
|
+
- **REST API & Model Serving**: Trained models are instantly deployable as RESTful microservices via the built-in FastAPI server (`infer-api/server.py`), decoupling the modeling core from serving infrastructure with zero additional engineering effort.
|
|
107
|
+
- **Experiment Tracking**: Native integrations with `TensorBoard`, `Weights & Biases`, and `MLflow` for real-time monitoring of metrics, training dynamics, and multi-run management.
|
|
108
|
+
- **Custom Pipelines & Callbacks**: Beyond the three standard pipelines (Training, Design, Evaluation), WarpRec exposes an event-driven Callback system for injecting custom logic at any stage โ enabling complex experiments without modifying framework internals.
|
|
109
|
+
|
|
110
|
+
## โ๏ธ Installation
|
|
111
|
+
|
|
112
|
+
WarpRec is designed to be easily installed and reproducible using **Conda**. This ensures that all dependencies and the Python environment are managed consistently. Environment is available both for CPU e GPU.
|
|
113
|
+
|
|
114
|
+
### ๐ Prerequisites
|
|
115
|
+
|
|
116
|
+
- **Git**: To clone the repository.
|
|
117
|
+
- **Conda**: You need either [Anaconda](https://www.anaconda.com/) or [Miniconda](https://docs.conda.io/en/latest/miniconda.html) installed on your system.
|
|
118
|
+
|
|
119
|
+
### ๐ ๏ธ Setup Guide
|
|
120
|
+
|
|
121
|
+
Follow these steps to clone the project and set up the environment:
|
|
122
|
+
|
|
123
|
+
1. **Clone the repository**
|
|
124
|
+
Open your terminal and clone the WarpRec repository:
|
|
125
|
+
```bash
|
|
126
|
+
git clone <repository_url>
|
|
127
|
+
cd warprec
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
2. **Create the Conda environment**
|
|
131
|
+
Use the provided environment.gpu.yml (or environment.cpu.yml) file to create the virtual environment. This will install Python 3.12 and the necessary core dependencies.
|
|
132
|
+
```bash
|
|
133
|
+
conda env create --file environment.gpu.yml
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
3. **Activate the environment:**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
conda activate warprec
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## ๐ Usage
|
|
143
|
+
|
|
144
|
+
### ๐๏ธโโ๏ธ Training a model
|
|
145
|
+
|
|
146
|
+
To train a model, use the `train` pipeline. Here's an example:
|
|
147
|
+
|
|
148
|
+
1. Prepare a configuration file (e.g. `config/train_config.yml`) with details
|
|
149
|
+
about the model, dataset and training parameters.
|
|
150
|
+
2. Start a Ray HEAD node:
|
|
151
|
+
```bash
|
|
152
|
+
ray start --head
|
|
153
|
+
3. Run the following command:
|
|
154
|
+
```bash
|
|
155
|
+
python -m warprec.run -c config/train_config.yml -p train
|
|
156
|
+
|
|
157
|
+
This command starts the training process using the specified configuration file.
|
|
158
|
+
|
|
159
|
+
### โ๏ธ Design a model
|
|
160
|
+
|
|
161
|
+
To implement a custom model, WarpRec provides a dedicated design interface via the `design` pipeline. The recommended workflow is as follows:
|
|
162
|
+
|
|
163
|
+
1. Prepare a configuration file (e.g. `config/design_config.yml`) with details
|
|
164
|
+
about the custom models, dataset and training parameters.
|
|
165
|
+
2. Run the following command:
|
|
166
|
+
```bash
|
|
167
|
+
python -m warprec.run -c config/design_config.yml -p design
|
|
168
|
+
|
|
169
|
+
This command initializes a lightweight training pipeline, specifically intended for rapid prototyping and debugging of custom architectures within the framework.
|
|
170
|
+
|
|
171
|
+
### ๐ Evaluate a model
|
|
172
|
+
|
|
173
|
+
To run only evaluation on a model, use the `eval` pipeline. Here's an example:
|
|
174
|
+
|
|
175
|
+
1. Prepare a configuration file (e.g. `config/eval_config.yml`) with details
|
|
176
|
+
about the model, dataset and training parameters.
|
|
177
|
+
2. Run the following command:
|
|
178
|
+
```bash
|
|
179
|
+
python -m warprec.run -c config/eval_config.yml -p eval
|
|
180
|
+
|
|
181
|
+
This command starts the evaluation process using the specified configuration file.
|
|
182
|
+
|
|
183
|
+
### ๐งฐ Makefile Commands
|
|
184
|
+
|
|
185
|
+
The project includes a Makefile to simplify common operations:
|
|
186
|
+
|
|
187
|
+
- ๐งน Run linting:
|
|
188
|
+
```bash
|
|
189
|
+
make lint
|
|
190
|
+
- ๐งโ๐ฌ Run tests:
|
|
191
|
+
```bash
|
|
192
|
+
make test
|
|
193
|
+
|
|
194
|
+
## ๐ค Contributing
|
|
195
|
+
We welcome contributions from the community! Whether you're fixing bugs, improving documentation, or proposing new features, your input is highly valued.
|
|
196
|
+
|
|
197
|
+
To get started:
|
|
198
|
+
|
|
199
|
+
1. Fork the repository and create a new branch for your feature or fix.
|
|
200
|
+
2. Follow the existing coding style and conventions.
|
|
201
|
+
3. Make sure the code passes all checks by running `make lint`.
|
|
202
|
+
4. Open a pull request with a clear description of your changes.
|
|
203
|
+
|
|
204
|
+
If you encounter any issues or have questions, feel free to open an issue in the Issues section of the repository.
|
|
205
|
+
|
|
206
|
+
## ๐ License
|
|
207
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
208
|
+
|
|
209
|
+
## ๐ Citation
|
|
210
|
+
Citation details will be provided in an upcoming release. Stay tuned!
|
|
211
|
+
|
|
212
|
+
## ๐ง Contact
|
|
213
|
+
For questions or suggestions, feel free to contact us at:
|
|
214
|
+
|
|
215
|
+
* **Marco Avolio** - marco.avolio@wideverse.com
|
|
216
|
+
* **Potito Aghilar** - potito.aghilar@wideverse.com
|
|
217
|
+
* **Sabino Roccotelli** - sabino.roccotelli@wideverse.com
|
|
218
|
+
* **Vito Walter Anelli** - vitowalter.anelli@poliba.it
|
|
219
|
+
* **Joseph Trotta** - joseph.trotta@ovs.it
|
|
220
|
+
|
warprec-1.0.0/README.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# ๐ WarpRec
|
|
2
|
+
|
|
3
|
+
[](https://github.com/sisinflab/warprec/releases)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.python.org/downloads/release/python-3120/)
|
|
6
|
+
[](https://warprec.readthedocs.io/en/latest/)
|
|
7
|
+
[](https://pytorch.org/)
|
|
8
|
+
[](https://github.com/astral-sh/ruff)
|
|
9
|
+
[](https://codecarbon.io/)
|
|
10
|
+
[](https://modelcontextprotocol.io/)
|
|
11
|
+
[](https://github.com/sisinflab/warprec)
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://warprec.readthedocs.io/en/latest/">
|
|
15
|
+
<img src="https://img.shields.io/badge/๐%20Read%20the%20Docs-warprec-blue?style=for-the-badge" alt="Read the Docs"/>
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
WarpRec is a flexible and efficient framework designed for building, training, and evaluating recommendation models. It supports a wide range of configurations, customizable pipelines, and powerful optimization tools to enhance model performance and usability.
|
|
20
|
+
|
|
21
|
+
WarpRec is designed for both beginners and experienced practitioners. For newcomers, it offers a simple and intuitive interface to explore and experiment with state-of-the-art recommendation models. For advanced users, WarpRec provides a modular and extensible architecture that allows rapid prototyping, complex experiment design, and fine-grained control over every step of the recommendation pipeline.
|
|
22
|
+
|
|
23
|
+
Whether you're learning how recommender systems work or conducting high-performance research and development, WarpRec offers the right tools to match your workflow.
|
|
24
|
+
|
|
25
|
+
## ๐๏ธ Architecture
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="assets/architecture.png" alt="WarpRec Architecture" width="100%"/>
|
|
29
|
+
</p>
|
|
30
|
+
|
|
31
|
+
WarpRec is built on **4 foundational pillars** โ Scalability, Green AI, Agentic Readiness, and Scientific Rigor โ and organized into **5 modular engines** that manage the end-to-end recommendation lifecycle:
|
|
32
|
+
|
|
33
|
+
1. **Reader** โ Ingests user-item interactions and metadata from local or cloud storage via a backend-agnostic Narwhals abstraction layer.
|
|
34
|
+
2. **Data Engine** โ Applies configurable filtering and splitting strategies to produce clean, leak-free train/validation/test sets.
|
|
35
|
+
3. **Recommendation Engine** โ Trains and optimizes models using PyTorch, with seamless scaling from single-GPU to multi-node Ray clusters.
|
|
36
|
+
4. **Evaluation Engine** โ Computes 40 GPU-accelerated metrics in a single pass with automated statistical significance testing.
|
|
37
|
+
5. **Writer** โ Serializes results, checkpoints, and carbon reports to local or cloud storage.
|
|
38
|
+
|
|
39
|
+
An **Application Layer** exposes trained models through a REST API (FastAPI) and an MCP server for agentic AI workflows.
|
|
40
|
+
|
|
41
|
+
## ๐ Table of Contents
|
|
42
|
+
|
|
43
|
+
- [โจ Key Features](#-key-features)
|
|
44
|
+
- [โ๏ธ Installation](#๏ธ-installation)
|
|
45
|
+
- [๐ Prerequisites](#-prerequisites)
|
|
46
|
+
- [๐ ๏ธ Setup Guide](#๏ธ-setup-guide)
|
|
47
|
+
- [๐ Usage](#-usage)
|
|
48
|
+
- [๐๏ธ Training a model](#๏ธ-training-a-model)
|
|
49
|
+
- [โ๏ธ Design a model](#๏ธ-design-a-model)
|
|
50
|
+
- [๐ Evaluate a model](#-evaluate-a-model)
|
|
51
|
+
- [๐งฐ Makefile Commands](#-makefile-commands)
|
|
52
|
+
- [๐ค Contributing](#-contributing)
|
|
53
|
+
- [๐ License](#-license)
|
|
54
|
+
- [๐ Citation](#-citation)
|
|
55
|
+
- [๐ง Contact](#-contact)
|
|
56
|
+
|
|
57
|
+
## โจ Key Features
|
|
58
|
+
|
|
59
|
+
- **55 Built-in Algorithms**: WarpRec ships with 55 state-of-the-art recommendation models spanning 6 paradigms โ Unpersonalized, Content-Based, Collaborative Filtering (e.g., `LightGCN`, `EASE`$^R$, `MultiVAE`), Context-Aware (e.g., `DeepFM`, `xDeepFM`), Sequential (e.g., `SASRec`, `BERT4Rec`, `GRU4Rec`), and Hybrid. All models are fully configurable and extend a standardized base class, making it easy to prototype custom architectures within the same pipeline.
|
|
60
|
+
- **Backend-Agnostic Data Engine**: Built on [Narwhals](https://narwhals-dev.github.io/narwhals/), WarpRec operates over Pandas, Polars, and Spark without code changes โ enabling a true "write-once, run-anywhere" workflow from laptop to distributed cluster. Data ingestion supports both local filesystems and cloud object storage (Azure Blob Storage).
|
|
61
|
+
- **Comprehensive Data Processing**: The data module provides 13 filtering strategies (filter-by-rating, k-core, cold-start heuristics) and 6 splitting protocols (random/temporal Hold-Out, Leave-k-Out, Fixed Timestamp, k-fold Cross-Validation), for a total of 19 configurable strategies to ensure rigorous and reproducible experimental setups.
|
|
62
|
+
- **40 GPU-Accelerated Metrics**: The evaluation suite covers 40 metrics across 7 families โ Accuracy, Rating, Coverage, Novelty, Diversity, Bias, and Fairness โ including multi-objective metrics for simultaneous optimization of competing goals. All metrics are computed with full GPU acceleration for large-scale experiments.
|
|
63
|
+
- **Statistical Rigor**: WarpRec automates hypothesis testing with paired (Student's t-test, Wilcoxon signed-rank) and independent-group (Mann-Whitney U) tests, and applies multiple comparison corrections via **Bonferroni** and **FDR (Benjamini-Hochberg)** to prevent p-hacking and ensure statistically robust conclusions.
|
|
64
|
+
- **Distributed Training & HPO**: Seamless vertical and horizontal scaling from single-GPU to multi-node Ray clusters. Hyperparameter optimization supports Grid, Random, Bayesian, HyperOpt, Optuna, and BoHB strategies, with ASHA pruning and model-level early stopping to maximize computational efficiency.
|
|
65
|
+
- **Green AI & Carbon Tracking**: WarpRec is the first recommendation framework with native [CodeCarbon](https://codecarbon.io/) integration, automatically quantifying energy consumption and COโ emissions for every experiment and persisting carbon footprint reports alongside standard results.
|
|
66
|
+
- **Agentic AI via MCP**: WarpRec natively implements a [Model Context Protocol](https://modelcontextprotocol.io/) server (`infer-api/mcp_server.py`), exposing trained recommenders as callable tools within LLM and autonomous agent workflows โ transforming the framework from a static predictor into an interactive, agent-ready component.
|
|
67
|
+
- **REST API & Model Serving**: Trained models are instantly deployable as RESTful microservices via the built-in FastAPI server (`infer-api/server.py`), decoupling the modeling core from serving infrastructure with zero additional engineering effort.
|
|
68
|
+
- **Experiment Tracking**: Native integrations with `TensorBoard`, `Weights & Biases`, and `MLflow` for real-time monitoring of metrics, training dynamics, and multi-run management.
|
|
69
|
+
- **Custom Pipelines & Callbacks**: Beyond the three standard pipelines (Training, Design, Evaluation), WarpRec exposes an event-driven Callback system for injecting custom logic at any stage โ enabling complex experiments without modifying framework internals.
|
|
70
|
+
|
|
71
|
+
## โ๏ธ Installation
|
|
72
|
+
|
|
73
|
+
WarpRec is designed to be easily installed and reproducible using **Conda**. This ensures that all dependencies and the Python environment are managed consistently. Environment is available both for CPU e GPU.
|
|
74
|
+
|
|
75
|
+
### ๐ Prerequisites
|
|
76
|
+
|
|
77
|
+
- **Git**: To clone the repository.
|
|
78
|
+
- **Conda**: You need either [Anaconda](https://www.anaconda.com/) or [Miniconda](https://docs.conda.io/en/latest/miniconda.html) installed on your system.
|
|
79
|
+
|
|
80
|
+
### ๐ ๏ธ Setup Guide
|
|
81
|
+
|
|
82
|
+
Follow these steps to clone the project and set up the environment:
|
|
83
|
+
|
|
84
|
+
1. **Clone the repository**
|
|
85
|
+
Open your terminal and clone the WarpRec repository:
|
|
86
|
+
```bash
|
|
87
|
+
git clone <repository_url>
|
|
88
|
+
cd warprec
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
2. **Create the Conda environment**
|
|
92
|
+
Use the provided environment.gpu.yml (or environment.cpu.yml) file to create the virtual environment. This will install Python 3.12 and the necessary core dependencies.
|
|
93
|
+
```bash
|
|
94
|
+
conda env create --file environment.gpu.yml
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. **Activate the environment:**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
conda activate warprec
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## ๐ Usage
|
|
104
|
+
|
|
105
|
+
### ๐๏ธโโ๏ธ Training a model
|
|
106
|
+
|
|
107
|
+
To train a model, use the `train` pipeline. Here's an example:
|
|
108
|
+
|
|
109
|
+
1. Prepare a configuration file (e.g. `config/train_config.yml`) with details
|
|
110
|
+
about the model, dataset and training parameters.
|
|
111
|
+
2. Start a Ray HEAD node:
|
|
112
|
+
```bash
|
|
113
|
+
ray start --head
|
|
114
|
+
3. Run the following command:
|
|
115
|
+
```bash
|
|
116
|
+
python -m warprec.run -c config/train_config.yml -p train
|
|
117
|
+
|
|
118
|
+
This command starts the training process using the specified configuration file.
|
|
119
|
+
|
|
120
|
+
### โ๏ธ Design a model
|
|
121
|
+
|
|
122
|
+
To implement a custom model, WarpRec provides a dedicated design interface via the `design` pipeline. The recommended workflow is as follows:
|
|
123
|
+
|
|
124
|
+
1. Prepare a configuration file (e.g. `config/design_config.yml`) with details
|
|
125
|
+
about the custom models, dataset and training parameters.
|
|
126
|
+
2. Run the following command:
|
|
127
|
+
```bash
|
|
128
|
+
python -m warprec.run -c config/design_config.yml -p design
|
|
129
|
+
|
|
130
|
+
This command initializes a lightweight training pipeline, specifically intended for rapid prototyping and debugging of custom architectures within the framework.
|
|
131
|
+
|
|
132
|
+
### ๐ Evaluate a model
|
|
133
|
+
|
|
134
|
+
To run only evaluation on a model, use the `eval` pipeline. Here's an example:
|
|
135
|
+
|
|
136
|
+
1. Prepare a configuration file (e.g. `config/eval_config.yml`) with details
|
|
137
|
+
about the model, dataset and training parameters.
|
|
138
|
+
2. Run the following command:
|
|
139
|
+
```bash
|
|
140
|
+
python -m warprec.run -c config/eval_config.yml -p eval
|
|
141
|
+
|
|
142
|
+
This command starts the evaluation process using the specified configuration file.
|
|
143
|
+
|
|
144
|
+
### ๐งฐ Makefile Commands
|
|
145
|
+
|
|
146
|
+
The project includes a Makefile to simplify common operations:
|
|
147
|
+
|
|
148
|
+
- ๐งน Run linting:
|
|
149
|
+
```bash
|
|
150
|
+
make lint
|
|
151
|
+
- ๐งโ๐ฌ Run tests:
|
|
152
|
+
```bash
|
|
153
|
+
make test
|
|
154
|
+
|
|
155
|
+
## ๐ค Contributing
|
|
156
|
+
We welcome contributions from the community! Whether you're fixing bugs, improving documentation, or proposing new features, your input is highly valued.
|
|
157
|
+
|
|
158
|
+
To get started:
|
|
159
|
+
|
|
160
|
+
1. Fork the repository and create a new branch for your feature or fix.
|
|
161
|
+
2. Follow the existing coding style and conventions.
|
|
162
|
+
3. Make sure the code passes all checks by running `make lint`.
|
|
163
|
+
4. Open a pull request with a clear description of your changes.
|
|
164
|
+
|
|
165
|
+
If you encounter any issues or have questions, feel free to open an issue in the Issues section of the repository.
|
|
166
|
+
|
|
167
|
+
## ๐ License
|
|
168
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
169
|
+
|
|
170
|
+
## ๐ Citation
|
|
171
|
+
Citation details will be provided in an upcoming release. Stay tuned!
|
|
172
|
+
|
|
173
|
+
## ๐ง Contact
|
|
174
|
+
For questions or suggestions, feel free to contact us at:
|
|
175
|
+
|
|
176
|
+
* **Marco Avolio** - marco.avolio@wideverse.com
|
|
177
|
+
* **Potito Aghilar** - potito.aghilar@wideverse.com
|
|
178
|
+
* **Sabino Roccotelli** - sabino.roccotelli@wideverse.com
|
|
179
|
+
* **Vito Walter Anelli** - vitowalter.anelli@poliba.it
|
|
180
|
+
* **Joseph Trotta** - joseph.trotta@ovs.it
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
[tool.poetry]
|
|
2
|
+
name = "warprec"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
description = "Unifying Academic Rigor and Industrial Scale for Responsible, Reproducible, and Efficient Recommendation"
|
|
5
|
+
authors = [
|
|
6
|
+
"MarcoWV <marco.avolio@wideverse.com>",
|
|
7
|
+
"potitoaghilar <potito.aghilar@wideverse.com>",
|
|
8
|
+
"SabeeenoGH <sabino.roccotelli@wideverse.com>",
|
|
9
|
+
"vitowalteranelli <vitowalter.anelli@poliba.it>",
|
|
10
|
+
"JTOVS <joseph.trotta@ovs.it>"
|
|
11
|
+
]
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
|
|
14
|
+
[tool.poetry.dependencies]
|
|
15
|
+
python = "~3.12"
|
|
16
|
+
pandas = "^2.2.3"
|
|
17
|
+
scipy = "^1.15.1"
|
|
18
|
+
numpy = "^2.2.2"
|
|
19
|
+
pydantic = "^2.10.6"
|
|
20
|
+
tabulate = "^0.9.0"
|
|
21
|
+
scikit-learn = "^1.6.1"
|
|
22
|
+
hyperopt = "^0.2.7"
|
|
23
|
+
ray = {extras = ["data", "serve", "train", "tune"], version = "^2.45.0"}
|
|
24
|
+
types-pyyaml = "^6.0.12.20241230"
|
|
25
|
+
types-tabulate = "^0.9.0.20241207"
|
|
26
|
+
loguru = "^0.7.3"
|
|
27
|
+
tensorboard = "^2.19.0"
|
|
28
|
+
tensorboardx = "^2.6.2.2"
|
|
29
|
+
torch = "^2.7.0"
|
|
30
|
+
torchmetrics = "^1.8.2"
|
|
31
|
+
optuna = "^4.5.0"
|
|
32
|
+
polars = "^1.36"
|
|
33
|
+
narwhals = "^2.15.0"
|
|
34
|
+
wandb = {version = "^0.19.10", optional = true}
|
|
35
|
+
codecarbon = {version = "^3.0.0", optional = true}
|
|
36
|
+
mlflow = {version = "^2.22.0", optional = true}
|
|
37
|
+
azure-storage-blob = {version = "^12.26.0", optional = true}
|
|
38
|
+
azure-identity = {version = "^1.25.1", optional = true}
|
|
39
|
+
fastapi = {version = "^0.135.1", optional = true}
|
|
40
|
+
fastmcp = {version = "^3.1.0", optional = true}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
[tool.poetry.group.dev.dependencies]
|
|
44
|
+
pre-commit = "^4.1.0"
|
|
45
|
+
pytest = "^8.3.4"
|
|
46
|
+
ruff = "^0.9.3"
|
|
47
|
+
pydoclint = "^0.6.0"
|
|
48
|
+
mypy = "^1.14.1"
|
|
49
|
+
pylint = "^3.3.3"
|
|
50
|
+
bandit = "^1.8.2"
|
|
51
|
+
nvitop = "^1.4.2"
|
|
52
|
+
matplotlib = "^3.10.3"
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
[tool.poetry.requires-plugins]
|
|
56
|
+
poetry-plugin-export = ">=1.8"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
[tool.poetry.extras]
|
|
60
|
+
dashboard = [
|
|
61
|
+
"wandb",
|
|
62
|
+
"codecarbon",
|
|
63
|
+
"mlflow",
|
|
64
|
+
]
|
|
65
|
+
remote-io = [
|
|
66
|
+
"azure-storage-blob",
|
|
67
|
+
"azure-identity",
|
|
68
|
+
]
|
|
69
|
+
serving = [
|
|
70
|
+
"fastapi",
|
|
71
|
+
"fastmcp",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
[tool.semantic_release]
|
|
76
|
+
version_toml = [
|
|
77
|
+
"pyproject.toml:tool.poetry.version",
|
|
78
|
+
]
|
|
79
|
+
branch = "main"
|
|
80
|
+
changelog_file = "CHANGELOG.md"
|
|
81
|
+
upload_to_repository = false
|
|
82
|
+
upload_to_release = true
|
|
83
|
+
commit_message = "chore(release): {version} [skip ci]"
|
|
84
|
+
commit_author = "github-actions [bot] <github-actions[bot]@users.noreply.github.com>"
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
[build-system]
|
|
88
|
+
requires = ["poetry-core"]
|
|
89
|
+
build-backend = "poetry.core.masonry.api"
|