Skip to content

Commit f39a9f9

Browse files
author
Felipe Mello
committed
and another one
1 parent 92326bc commit f39a9f9

File tree

4 files changed

+10
-34
lines changed

4 files changed

+10
-34
lines changed

src/forge/observability/metric_actors.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from forge.env import FORGE_DISABLE_METRICS
1515
from forge.observability.metrics import (
1616
BackendRole,
17+
context,
1718
get_logger_backend_class,
1819
LoggerBackend,
1920
MetricCollector,

src/forge/observability/metrics.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ async def init_backends(
465465
return
466466

467467
self.global_step = global_step
468-
self.proc_name_with_rank = get_proc_name_with_rank(self.process_name)
468+
self.proc_name_with_rank = get_proc_name_with_rank(process_name)
469469

470470
# instantiate local backends if any
471471
for backend_name, backend_config in config.items():
@@ -482,7 +482,7 @@ async def init_backends(
482482
await logger_backend.init(
483483
role=BackendRole.LOCAL,
484484
primary_logger_metadata=primary_metadata,
485-
name=proc_name_with_rank,
485+
name=self.proc_name_with_rank,
486486
)
487487
self.logger_backends.append(logger_backend)
488488

@@ -632,6 +632,7 @@ async def log(self, metrics: list[Metric], global_step: int) -> None:
632632
"""
633633
pass
634634

635+
@abstractmethod
635636
async def finish(self) -> None:
636637
pass
637638

tests/unit_tests/observability/conftest.py

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,7 @@
99
from unittest.mock import MagicMock, patch
1010

1111
import pytest
12-
from forge.observability.metrics import LoggerBackend, MetricCollector
13-
14-
15-
class MockBackend(LoggerBackend):
16-
"""Mock backend for testing metrics logging without external dependencies."""
17-
18-
def __init__(self, logger_backend_config=None):
19-
super().__init__(logger_backend_config or {})
20-
self.logged_metrics = []
21-
self.init_called = False
22-
self.finish_called = False
23-
self.metadata = {}
24-
25-
async def init(self, role="local", primary_logger_metadata=None, process_name=None):
26-
self.init_called = True
27-
self.role = role
28-
self.primary_logger_metadata = primary_logger_metadata or {}
29-
self.process_name = process_name
30-
31-
async def log(self, metrics, global_step):
32-
self.logged_metrics.append((metrics, global_step))
33-
34-
async def finish(self):
35-
self.finish_called = True
36-
37-
def get_metadata_for_secondary_ranks(self):
38-
return self.metadata
12+
from forge.observability.metrics import MetricCollector
3913

4014

4115
@pytest.fixture(autouse=True)

tests/unit_tests/observability/test_metric_actors.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ async def test_global_logger_basic_ops(self, global_logger):
6262
async def test_backend_init(self, local_fetcher):
6363
"""Test backend initialization and shutdown."""
6464
metadata = {"wandb": {"shared_run_id": "test123"}}
65-
config = {"console": {"logging_mode": "per_rank_reduce"}}
65+
config = {"console": {"reduce_across_ranks": False}}
6666

6767
await local_fetcher.init_backends.call_one(metadata, config, global_step=5)
6868
await local_fetcher.shutdown.call_one()
@@ -108,9 +108,9 @@ async def test_valid_backend_configs(self, global_logger):
108108
# Empty config
109109
await global_logger.init_backends.call_one({})
110110

111-
# Valid configs for all logging modes
112-
for mode in ["per_rank_reduce", "per_rank_no_reduce", "global_reduce"]:
113-
config = {"console": {"logging_mode": mode}}
111+
# Valid configs for different reduce_across_ranks modes
112+
for reduce_across_ranks in [True, False]:
113+
config = {"console": {"reduce_across_ranks": reduce_across_ranks}}
114114
await global_logger.init_backends.call_one(config)
115115

116116
@pytest.mark.timeout(3)
@@ -124,7 +124,7 @@ async def test_invalid_backend_configs(self, global_logger):
124124
config_with_project = {"console": {"project": "test_project"}}
125125
await global_logger.init_backends.call_one(config_with_project)
126126

127-
# Config with reduce_across_ranks should work (Diff 3 doesn't validate logging_mode yet)
127+
# Config with reduce_across_ranks should work
128128
config_with_reduce = {"console": {"reduce_across_ranks": True}}
129129
await global_logger.init_backends.call_one(config_with_reduce)
130130

0 commit comments

Comments
 (0)