recommenders

recommenders-teamMIT活跃维护 有专家点评

微软出品的推荐系统实践库,提供从数据准备、模型训练到部署上线的完整示例和最佳实践,帮算法工程师快速搭建推荐与排序模型。

Best Practices on Recommendation Systems

1.2.1发布于 2024-12-24 07:39 UTC21,987star +6 / 7 天3,330fork同步于 2026-11-10 23:25 UTC

专家点评

上手难度:进阶更新于 2026-11-11

推荐系统从 notebook 到上线的参考实现集合,用来替代自己从零搭一套算法基线

适用场景

  • 新项目要快速拉起一个可对比的基线:ALS/BPR/NCF 这些实现和评估工具都在,省掉自己写 train/test split 和离线指标;换别的就得从论文或零散 repo 拼
  • 做算法选型评审:同一套数据加载和评估口径下横向跑多个模型,比各模型各自 repo 的指标更有可比性
  • 教学或团队内训:notebook 按数据准备→建模→评估→调参→上线分节,能直接当教材走一遍
  • 需要 Spark 侧的大规模召回/排序实验:装了 [spark] extra 后能复用同一套工具函数,不用另起一套代码

踩坑

  • 只 pip install recommenders 跑不了 GPU 和 Spark 模型,得按模型选 [gpu]/[spark] extra;装之前先确认目标 notebook 属于哪类,否则会在 import 阶段才发现缺依赖
  • notebook 不是装完包就能开:要先 clone 仓库、注册 ipykernel 内核,Linux/WSL 还得先有 gcc,纯 pip 安装的用户会卡在这一步
  • issue 里 OOM 类问题(NCFDataset、RBM affinity matrix)被反复提出,跑这些模型时对内存的预期要留余量;具体阈值 README 没写,得自己按数据规模试

同类对比

要的是生产级推荐服务框架而不是参考实现,看 TensorFlow Recommenders 或 TorchRec;只要单机快速验证一两个经典协同过滤,implicit 更轻。

怎么上手

由 README 提炼,执行前请确认
uv venv ~/.venvs/recommenders --python 3.11
source ~/.venvs/recommenders/bin/activate
uv pip install recommenders
硬件要求按 README 说明

核心包可在 CPU 上运行全部 CPU notebook;GPU 模型需安装 [gpu] extra,Spark 模型需 [spark] extra;README 未给出具体显存或 GPU 型号要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

微软开源的推荐系统最佳实践库,用 Jupyter notebook 演示从数据准备到上线的完整流程

微软出品的推荐系统实践库,提供从数据准备、模型训练到部署上线的完整示例和最佳实践,帮算法工程师快速搭建推荐与排序模型。

核心能力

  • 用 Jupyter notebook 演示数据准备、建模、评估、调参与上线五个环节
  • 内置 ALS、xDeepFM、BPR、BiVAE、Caser 等经典与深度学习算法实现
  • 提供数据加载、训练测试集划分、离线指标评估等通用工具函数
  • 通过 gpu、spark、dev、all、experimental 等 extras 按需安装依赖
  • 附带 Azure 上模型运营化的示例流程

容易踩的坑

GPU 和 Spark 模型需额外安装 [gpu]、[spark] 等 extras,只装核心包跑不了;Linux/WSL 上需先装 gcc;示例 notebook 需先克隆仓库并注册 ipykernel 内核才能运行。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本1.2.1
  1. 1.2.1Recommenders 1.2.1最新正式版2024-12-24 · 2024-12-24 07:39 UTC

    New algorithms or improvements

    New utilities or improvements

    New notebooks or improvements

    Other features

    New Contributors

  2. 1.2.0Recommenders 1.2.02024-05-01 · 2024-05-01 13:41 UTC
    查看更新说明

    New algorithms or improvements

    New utilities or improvements

    New notebooks or improvements

    Other features

  3. 1.1.1Recommenders 1.1.12022-07-20 · 2022-07-20 05:58 UTC
    查看更新说明

    New algorithms or improvements

    New utilities or improvements

    New notebooks or improvements

    Other features

    Full Changelog: https://github.com/microsoft/recommenders/compare/1.1.0...1.1.1

  4. 1.1.0Recommenders 1.1.02022-04-01 · 2022-04-01 09:25 UTC
    查看更新说明

    New algorithms or improvements

    New utilities or improvements

    New notebooks or improvements

    Other features

    Full Changelog: https://github.com/microsoft/recommenders/compare/1.0.0...1.1.0

  5. 1.0.0Recommenders 1.0.02022-01-13 · 2022-01-13 20:18 UTC
    查看更新说明

    Backwards incompatible changes

    • TensorFlow upgrade to 2.6.1 / 2.7 #1574 , #1565 , #1540

    New algorithms or improvements

    • Improve algos visibility #1542
    • LightGBM test improvement #1531
    • Fix Surprise and Python 3.7 #1540
    • TF-IDF runtime enhancement changes #1571
    • Add Spark 3.x support for SARplus #1566

    New utilities or improvements

    • Upgrade to Spark v3 #1555 , #1549 , #1543
    • Move scikit-surprise and pymanopt from setup.py #1602
    • Issue with pymanopt #1606

    New notebooks or improvements

    • Fix bugs in RBM notebooks #1581
    • Remove explicit mapping of ratings to integers from RBM notebooks #1585

    Other features

    • Fix nightly workflows #1576 , #1548
    • Stabilize more flaky tests #1558
    • Miscellaneous Pipeline Fixes #1545
    • Optimize Notebook Unit Tests #1538
    • Development status change to production/stable #1579
    • Update dependencies #1569, #1570
    • Fix Databricks installation script #1531
    • Adding codespace deployment #1521
    • Improve GitHub tests #1518, #1578, #1590, #1592
    • Flake8 Fixes #1552 , #1550
    • Improvement in documentation #1591, #1598, #1594, #1603
    • Update release pipeline #1596

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Documentation status License Black PyPI Version Python Versions

    What's New (April, 2025)

    We reached 20,000 stars!!

    We are happy to announce that we have reached 20,000 stars on GitHub! Thank you for your support and contributions to the Recommenders project. We are excited to continue building and improving this project with your help.

    Check out the release Recommenders 1.2.1!

    We fixed a lot of bugs due to dependencies, improved security, reviewed the notebooks and the libraries.

    Introduction

    Recommenders objective is to assist researchers, developers and enthusiasts in prototyping, experimenting with and bringing to production a range of classic and state-of-the-art recommendation systems.

    Recommenders is a project under the Linux Foundation of AI and Data.

    This repository contains examples and best practices for building recommendation systems, provided as Jupyter notebooks. The examples detail our learnings on five key tasks:

    • Prepare Data: Preparing and loading data for each recommendation algorithm.
    • Model: Building models using various classical and deep learning recommendation algorithms such as Alternating Least Squares (ALS) or eXtreme Deep Factorization Machines (xDeepFM).
    • Evaluate: Evaluating algorithms with offline metrics.
    • Model Select and Optimize: Tuning and optimizing hyperparameters for recommendation models.
    • Operationalize: Operationalizing models in a production environment on Azure.

    Several utilities are provided in recommenders to support common tasks such as loading datasets in the format expected by different algorithms, evaluating model outputs, and splitting training/test data. Implementations of several state-of-the-art algorithms are included for self-study and customization in your own applications. See the Recommenders documentation.

    For a more detailed overview of the repository, please see the documents on the wiki page.

    For some of the practical scenarios where recommendation systems have been applied, see scenarios.

    Getting Started

    We recommend uv for environment management (10-100x faster than conda/pip), and VS Code for development. To install the recommenders package and run an example notebook on Linux/WSL:

    # 1. Install gcc if it is not installed already. On Ubuntu, this could done by using the command
    # sudo apt install gcc
    
    # 2. Install uv (if not already installed)
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # 3. Create and activate a new virtual environment
    uv venv ~/.venvs/recommenders --python 3.11
    source ~/.venvs/recommenders/bin/activate
    
    # 4. Install the core recommenders package. It can run all the CPU notebooks.
    uv pip install recommenders
    
    # 5. Create a Jupyter kernel
    uv pip install ipykernel
    python -m ipykernel install --user --name recommenders --display-name "Python (recommenders)"
    
    # 6. Clone this repo within VSCode or using command line:
    git clone https://github.com/recommenders-team/recommenders.git
    
    # 7. Within VSCode:
    #   a. Open a notebook, e.g., examples/00_quick_start/sar_movielens.ipynb;
    #   b. Select Jupyter kernel "Python (recommenders)";
    #   c. Run the notebook.
    

    For more information about setup on other platforms (e.g., Windows and macOS) and different configurations (e.g., GPU, Spark and experimental features), see the Setup Guide.

    In addition to the core package, several extras are also provided, including:

    • [gpu]: Needed for running GPU models.
    • [spark]: Needed for running Spark models.
    • [dev]: Needed for development for the repo.
    • [all]: [gpu]|[spark]|[dev]
    • [experimental]: Models that are not thoroughly tested and/or may require additional steps in installation.

    Algorithms

    The table below lists the recommendation algorithms currently available in the repository. Notebooks are linked under the Example column as Quick start, showcasing an easy to run example of the algorithm, or as Deep dive, explaining in detail the math and implementation of the algorithm.

    AlgorithmTypeDescriptionExample
    Alternating Least Squares (ALS)Collaborative FilteringMatrix factorization algorithm for explicit or implicit feedback in large datasets, optimized for scalability and distributed computing capability. It works in the PySpark environment.Quick start / Deep dive
    Attentive Asynchronous Singular Value Decomposition (A2SVD)*Collaborative FilteringSequential-based algorithm that aims to capture both long and short-term user preferences using attention mechanism. It works in the CPU/GPU environment.Quick start
    Cornac/Bayesian Personalized Ranking (BPR)Collaborative FilteringMatrix factorization algorithm for predicting item ranking with implicit feedback. It works in the CPU environment.Deep dive
    Cornac/Bilateral Variational Autoencoder (BiVAE)Collaborative FilteringGenerative model for dyadic data (e.g., user-item interactions). It works in the CPU/GPU environment.Deep dive
    Convolutional Sequence Embedding Recommendation (Caser)Collaborative FilteringAlgorithm based on convolutions that aim to capture both user’s general preferences and sequential patterns. It works in the CPU/GPU environment.Quick start
    Deep Knowledge-Aware Network (DKN)*Content-Based FilteringDeep learning algorithm incorporating a knowledge graph and article embeddings for providing news or article recommendations. It works in the CPU/GPU environment.Quick start / Deep dive
    Extreme Deep Factorization Machine (xDeepFM)*Collaborative FilteringDeep learning based algorithm for implicit and explicit feedback with user/item features. It works in the CPU/GPU environment.Quick start
    Embedding Dot BiasCollaborative FilteringGeneral purpose algorithm with embeddings and biases for users and items. It works in the CPU/GPU environment.Quick start
    LightFM/Factorization MachineCollaborative FilteringFactorization Machine algorithm for both implicit and explicit feedbacks. It works in the CPU environment.Quick start
    LightGBM/Gradient Boosting Tree*Content-Based FilteringGradient Boosting Tree algorithm for fast training and low memory usage in content-based problems. It works in the CPU/GPU/PySpark environments.Quick start in CPU / Deep dive in PySpark
    LightGCNCollaborative FilteringDeep learning algorithm which simplifies the design of GCN for predicting implicit feedback. It works in the CPU/GPU environment.Deep dive
    GeoIMC*Collaborative FilteringMatrix completion algorithm that takes into account user and item features using Riemannian conjugate gradient optimization and follows a geometric approach. It works in the CPU environment.Quick start
    GRUCollaborative FilteringSequential-based algorithm that aims to capture both long and short-term user preferences using recurrent neural networks. It works in the CPU/GPU environment.Quick start
    Multinomial VAECollaborative FilteringGenerative model for predicting user/item interactions. It works in the CPU/GPU environment.Deep dive
    Neural Recommendation with Long- and Short-term User Representations (LSTUR)*Content-Based FilteringNeural recommendation algorithm for recommending news articles with long- and short-term user interest modeling. It works in the CPU/GPU environment.Quick start
    Neural Recommendation with Attentive Multi-View Learning (NAML)*Content-Based FilteringNeural recommendation algorithm for recommending news articles with attentive multi-view learning. It works in the CPU/GPU environment.Quick start
    Neural Collaborative Filtering (NCF)Collaborative FilteringDeep learning algorithm with enhanced performance for user/item implicit feedback. It works in the CPU/GPU environment.Quick start / Deep dive
    Neural Recommendation with Personalized Attention (NPA)*Content-Based FilteringNeural recommendation algorithm for recommending news articles with personalized attention network. It works in the CPU/GPU environment.Quick start
    Neural Recommendation with Multi-Head Self-Attention (NRMS)*Content-Based FilteringNeural recommendation algorithm for recommending news articles with multi-head self-attention. It works in the CPU/GPU environment.Quick start
    Next Item Recommendation (NextItNet)Collaborative FilteringAlgorithm based on dilated convolutions and residual network that aims to capture sequential patterns. It considers both user/item interactions and features. It works in the CPU/GPU environment.Quick start
    Restricted Boltzmann Machines (RBM)Collaborative FilteringNeural network based algorithm for learning the underlying probability distribution for explicit or implicit user/item feedback. It works in the CPU/GPU environment.Quick start / Deep dive
    Riemannian Low-rank Matrix Completion (RLRMC)*Collaborative FilteringMatrix factorization algorithm using Riemannian conjugate gradients optimization with small memory consumption to predict user/item interactions. It works in the CPU environment.Quick start
    Simple Algorithm for Recommendation (SAR)*Collaborative FilteringSimilarity-based algorithm for implicit user/item feedback. It works in the CPU environment.Quick start / Deep dive
    Self-Attentive Sequential Recommendation (SASRec)Collaborative FilteringTransformer based algorithm for sequential recommendation. It works in the CPU/GPU environment.Quick start
    Short-term and Long-term Preference Integrated Recommender (SLi-Rec)*Collaborative FilteringSequential-based algorithm that aims to capture both long and short-term user preferences using attention mechanism, a time-aware controller and a content-aware controller. It works in the CPU/GPU environment.Quick start
    Multi-Interest-Aware Sequential User Modeling (SUM)*Collaborative FilteringAn enhanced memory network-based sequential user model which aims to capture users' multiple interests. It works in the CPU/GPU environment.Quick start
    Sequential Recommendation Via Personalized Transformer (SSEPT)Collaborative FilteringTransformer based algorithm for sequential recommendation with User embedding. It works in the CPU/GPU environment.Quick start
    Standard VAECollaborative FilteringGenerative Model for predicting user/item interactions. It works in the CPU/GPU environment.Deep dive
    Surprise/Singular Value Decomposition (SVD)Collaborative FilteringMatrix factorization algorithm for predicting explicit rating feedback in small datasets. It works in the CPU/GPU environment.Deep dive
    Term Frequency - Inverse Document Frequency (TF-IDF)Content-Based FilteringSimple similarity-based algorithm for content-based recommendations with text datasets. It works in the CPU environment.Quick start
    Vowpal Wabbit (VW)*Content-Based FilteringFast online learning algorithms, great for scenarios where user features / context are constantly changing. It uses the CPU for online learning.Deep dive
    Wide and DeepCollaborative FilteringDeep learning algorithm that can memorize feature interactions and generalize user features. It works in the CPU/GPU environment.Quick start
    xLearn/Factorization Machine (FM) & Field-Aware FM (FFM)Collaborative FilteringQuick and memory efficient algorithm to predict labels with user/item features. It works in the CPU/GPU environment.Deep dive

    NOTE: * indicates algorithms invented/contributed by Microsoft.

    Independent or incubating algorithms and utilities are candidates for the contrib folder. This will house contributions which may not easily fit into the core repository or need time to refactor or mature the code and add necessary tests.

    AlgorithmTypeDescriptionExample
    SARplus *Collaborative FilteringOptimized implementation of SAR for SparkQuick start

    Algorithm Comparison

    We provide a benchmark notebook to illustrate how different algorithms could be evaluated and compared. In this notebook, the MovieLens dataset is split into training/test sets at a 75/25 ratio using a stratified split. A recommendation model is trained using each of the collaborative filtering algorithms below. We utilize empirical parameter values reported in literature here. For ranking metrics we use k=10 (top 10 recommended items). We run the comparison on a machine with 24 CPUs, 30Gb of RAM, and 1 GPU GeForce RTX 5090 GPU with 24Gb of memory. Spark ALS is run in local standalone mode. In this table we show the results on Movielens 100k. For BPR, ratings are binarized with a threshold of 3.5 (ratings ≥ 4 treated as positive implicit feedback) for both training and evaluation.

    AlgoMAPnDCG@kPrecision@kRecall@kRMSEMAER2Explained Variance
    ALS0.0104000.0328000.0381000.0132000.9667320.7525520.2674380.263534
    BiVAE0.3300000.4717000.4113000.224300N/AN/AN/AN/A
    BPR0.2292000.3623000.2855000.251700N/AN/AN/AN/A
    embdotbias0.0549000.1190000.1070000.0423000.9927600.7760400.2233440.223393
    LightGCN0.2772000.4191000.3599000.197100N/AN/AN/AN/A
    NCF0.2603000.3931000.3469000.181900N/AN/AN/AN/A
    SAR0.2585000.3938000.3406000.1854001.2291031.035996-0.4878430.097283

    Contributing

    This project welcomes contributions and suggestions. Before contributing, please see our contribution guidelines.

    This project adheres to this Code of Conduct in order to foster a welcoming and inspiring community for all.

    References

    • D. Li, J. Lian, L. Zhang, K. Ren, D. Lu, T. Wu, X. Xie, "Recommender Systems: Frontiers and Practices", Springer, Beijing, 2024. Available on this link.
    • A. Argyriou, M. González-Fierro, and L. Zhang, "Microsoft Recommenders: Best Practices for Production-Ready Recommendation Systems", WWW 2020: International World Wide Web Conference Taipei, 2020. Available online: https://dl.acm.org/doi/abs/10.1145/3366424.3382692
    • S. Graham, J.K. Min, T. Wu, "Microsoft recommenders: tools to accelerate developing recommender systems", RecSys '19: Proceedings of the 13th ACM Conference on Recommender Systems, 2019. Available online: https://dl.acm.org/doi/10.1145/3298689.3346967
    • L. Zhang, T. Wu, X. Xie, A. Argyriou, M. González-Fierro and J. Lian, "Building Production-Ready Recommendation System at Scale", ACM SIGKDD Conference on Knowledge Discovery and Data Mining 2019 (KDD 2019), 2019.