NVIDIA-Merlin / NVIDIA-Merlin/Merlin

[RMP] Cross-framework model evaluation metrics

Open
#407 7 comments 0 reactions 3 assignees View on GitHub

@gabrielspmoreira is already working on this.

Since Oct 5, 2022.

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

Description

Problem statement

Merlin models should allow you to train models from different libraries (TF/PT/lightfm/xgboost/implicit etc) and then compare them in a consistent "apples-to-apples" type way. Right now each library has its own evaluation metrics, that aren't directly comparable to other frameworks. During the paper experiments for instance, we had to implement custom metric code for implicit to match the output from TF. Customers also want to be able to compare to their own metrics.

Goals

  • Customers are able to compare models across libraries.
  • Coverage of metrics: Precision, NDCG, MAP, AUC
  • Support for both retrieval and ranking models
  • Only used during final evaluation process. This isn't used during training. (Non goal)
  • Ability to slice on key features from user/item
  • Example

Constraints

  • Scoring should happen for all items, not just negative samples, in order to be able to compare correctly for ranking metric
  • Only one implementation of these metrics so that the calculations are consistent. This implies conversion.
  • We want to be able to compare across multiple frameworks.
  • Pre-requisites:
  • https://github.com/NVIDIA-Merlin/Merlin/issues/419
  • Support for external libraries and systems level evaluation

Starting Point

  • Input is an ordered list of recommendations that gets scored/sliced
  • Evaluation is from a list of prediction
  • cuDF implementation
  • Integration with visualization tooling. (marc to add options)

Notes

Tasks

( Ground work for cross framework evaluation )

  • Create a mechanism for transferring data across frameworks

( Enter the goal here )

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.