From 91bfdd004d698b541ce37a25a1a614e048c07015 Mon Sep 17 00:00:00 2001 From: Hashwanth S Date: Mon, 22 Jun 2026 21:35:05 -0700 Subject: [PATCH] fix: use local ev_values and wrap dict.values() in list() Two bugs in the eigenvalue monitoring branch of `_take_model_step`: 1. `self.ev_values[i][0]` references a nonexistent instance attribute. The local variable `ev_values` (no `self.`) is the intended target. 2. `dict.values()` returns a dict_values view which is not subscriptable in Python 3. Wrapping in `list()` makes it indexable. Fixes #7983 Co-Authored-By: Claude Opus 4.6 Signed-off-by: Hashwanth S --- deepspeed/runtime/engine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deepspeed/runtime/engine.py b/deepspeed/runtime/engine.py index d86f56d744f7..0279f793bab3 100755 --- a/deepspeed/runtime/engine.py +++ b/deepspeed/runtime/engine.py @@ -3099,11 +3099,11 @@ 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() + ev_values = list(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], + ev_values[i][0], self.global_samples, )) self.monitor.write_events(self.summary_events)