NVIDIA-Merlin / NVIDIA-Merlin/Merlin

[RMP] Iterative Recommender System Updating

Open
#672 1 comment 0 reactions 1 assignee View on GitHub

@EvenOldridge is already working on this.

Since Oct 12, 2022.

roadmap
Dominant language
Python
Stars
907
Forks
129
PR merge metrics
No merged PRs in 30d

Description

Problem:

Many production recommenders aren't trained from a fixed dataset but are updated using the existing model as the basis and iteratively training on the most recent data. In order to support this a number of changes are needed to the Merlin ecosystem.

Goal:

Provide support for iteratively training recommender systems.

New Functionality

  • Models
    • iterative update of existing model weights by fine tuning on a new smaller dataset
    • ability to add new embeddings to the model incrementally
  • Transformers4Rec
    • N/A for now
  • NVTabular
    • All existing ops need to be modified to capture statistics necessary for iterative updating
    • All existing ops need to be modified to allow for iterative updating based on a new dataset and the aforementioned statistics
    • A subset of existing ops need to effectively operate in a streaming fashion to be able to dynamically capture and update their statistics.
  • Systems
    • Streaming ingest of user interactions to the ops workflow to keep statistics up to date
    • Trigger of training loops based on the collection of new data

Constraints:

Starting Point:

In several recent competitions the research/kgmon team used this technique to keep the model more up to date. This should provide us with a template for how to do updating of the model on the training side.

NVTabular is likely to be a major effort requiring the updating of all ops, but once one or two ops are complete most should be able to follow that template. The exception will be Categorify, which will require a total rewrite.

Systems handling streaming data for keeping NVT stats up to date is entirely new functionality and needs to be scoped.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.