pytorch / torcheval

A library that contains a rich collection of performant PyTorch model metrics, a simple interface to create new metrics, a toolkit to facilitate metric computation in distributed training and tools for PyTorch model evaluations.
https://pytorch.org/torcheval
Other
211 stars 46 forks source link

add metrics wrapper for sharing states across multiple metric #172

Open ZhiyuanChen opened 1 year ago

ZhiyuanChen commented 1 year ago

Please read through our contribution guide prior to creating your pull request.

Summary:

This MR introduces a metrics wrapper. It is intended to be used for multiple metrics that shares the same state.

We often calculate multiple metrics when evaluating the performance of our model. For example, we calculate the r^2, MAE, Pearson and Spearman for regression tasks. They all use the same inputs and targets, but we have to store these state multiple times for each task. Even worse, when running in distributed environment with multiple nodes, we have to sync these states multiple times.

To address these limitations, this MR introduces a metric wrapper that shares states between multiple tasks.

This MR is still WORK IN PROGRESS. The module name, class name, and additional utilities are yet to determine. Any feedback is welcome!

Test plan:

Not included as of now, will add later.

Fixes #170

codecov[bot] commented 1 year ago

Codecov Report

Merging #172 (5ae4601) into main (83ae20a) will decrease coverage by 0.35%. The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main     #172      +/-   ##
==========================================
- Coverage   24.71%   24.36%   -0.35%     
==========================================
  Files         173      174       +1     
  Lines        9892    10034     +142     
==========================================
  Hits         2445     2445              
- Misses       7447     7589     +142     
Files Changed Coverage Δ
torcheval/metrics/metrics.py 0.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more