NVIDIA-Merlin / NVIDIA-Merlin/Merlin

[RMP] Support Offline Batch processing of Recs Generation Pipelines

Open
#419 11 comments 0 reactions 6 assignees View on GitHub

@oliverholworthy is already working on this.

Since Oct 4, 2022.

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

Description

Problem:

As a user, I would like to run my merlin systems inference pipeline in an offline setting. This will allow me to produce a set of recommendations for all users to be served from a data store, email campaign, etc. I will also be able to conduct rigorous testing and better compare behaviors against other systems, at both operator and system level.

Goal:

To do this I need to be able to run my merlin systems inference graph without using triton or the configs generated for it. It will require a new operator executor class that runs the ops in python instead of tritonserver. The execution should behave exactly as it does in the tritonserver setting, meaning each operator should be provided same inputs, and return same outputs.

  • Run an Inference operator graph without tritonserver.
  • Does not require any new user-facing API changes.
  • Execute the same graph, that would be deployed to tritonserver.
  • Execute in Python process

Constraints:

  • Use the same merlin systems graph/ops that were created for inference pipeline, that would run on tritonserver
  • Swap out the operator executor to python version (non-triton).
  • Allow for all types of graphs, supporting multiple chains and parallel running of ALL available operators.

TODO:

Core
Systems
Issues
Example
  • #798
### Tasks
- [ ] Create Offline runtime, that will swap operators according to usage i.e. (swap feast operator for dataset merge operator.
- [ ] Ensure every operator returns batch based results. I.e. faiss should return batch representation of inputs. I.e. 2 users in should produce  (2, 100) not (200,) shape.
- [ ] Create an offline example from the current multistage example in merlin
- [ ] Ensure ensemble export does not prevent using Non-triton runtimes later.

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.