Skip to content

Conversation

jeffkbkim
Copy link
Contributor

Summary:
This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:

  • CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528

@meta-cla meta-cla bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 2, 2025
Copy link
Contributor

meta-codesync bot commented Oct 2, 2025

@jeffkbkim has exported this pull request. If you are a Meta employee, you can view the originating Diff in D83773528.

jeffkbkim added a commit to jeffkbkim/torchrec that referenced this pull request Oct 2, 2025
Summary:

This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:
- CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528
jeffkbkim added a commit to jeffkbkim/torchrec that referenced this pull request Oct 3, 2025
Summary:

This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:
- CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528
Summary:

This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:
- CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528
jeffkbkim added a commit to jeffkbkim/torchrec that referenced this pull request Oct 3, 2025
Summary:

This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:
- CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528
jeffkbkim added a commit to jeffkbkim/torchrec that referenced this pull request Oct 3, 2025
Summary:

This diff adds the basic building blocks for a zero overhead RecMetrics implementation. Follow up patches will contain integration with users of torchrec.

One of the main pain points of using RecMetricModule is that metric updates and computes are done synchronously. In training jobs, there has been cases where metric updates take +20% of a training iteration. Metric computations, although less frequent, can takes over a couple of seconds.

CPUOffloadedRecMetricModule aims to perform all metric updates/computes asynchronously, completely removing them from the critical path.

This patch adds:
- CPUCommsRecMetricModule: Submodule that all gathers, loads, and computes aggregated metric state tensors across ranks.

Differential Revision: D83773528
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported meta-exported
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant