Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions deepspeed/runtime/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,13 @@ def active_timers(self):
return self.micro_timers + self.global_timers


def _eigenvalue_summary_events(block_eigenvalue, global_samples):
return [
(f"Train/Eigenvalues/ModelBlockParam_{i}", ev_value[0], global_samples)
for i, ev_value in enumerate(block_eigenvalue.values())
]


class DeepSpeedEngine(Module):
r"""DeepSpeed engine for training."""

Expand Down Expand Up @@ -2965,13 +2972,8 @@ def step(self, lr_kwargs=None):

if (self.eigenvalue_enabled()
and not self.gas_boundary_ctr % self.eigenvalue_gas_boundary_resolution()):
ev_values = self.block_eigenvalue.values()
for i in range(len(ev_values)):
self.summary_events.append((
f"Train/Eigenvalues/ModelBlockParam_{i}",
self.ev_values[i][0],
self.global_samples,
))
self.summary_events.extend(
_eigenvalue_summary_events(self.block_eigenvalue, self.global_samples))
self.monitor.write_events(self.summary_events)

# Check flops profiling
Expand Down
16 changes: 16 additions & 0 deletions tests/unit/runtime/test_engine_eigenvalue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0

from deepspeed.runtime.engine import _eigenvalue_summary_events


def test_eigenvalue_summary_events_use_block_values():
block_eigenvalue = {
"layer0.weight": (1.25, 0),
"layer1.weight": (0.5, 1),
}

assert _eigenvalue_summary_events(block_eigenvalue, global_samples=128) == [
("Train/Eigenvalues/ModelBlockParam_0", 1.25, 128),
("Train/Eigenvalues/ModelBlockParam_1", 0.5, 128),
]
Loading