NVIDIA-Merlin / NVIDIA-Merlin/Merlin
[RMP] Iterative Recommender System Updating
@EvenOldridge is already working on this.
Since Oct 12, 2022.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.