Skip to content

Commit e88d2df

Browse files
d4l3kfacebook-github-bot
authored andcommitted
Revert "torchx/runner: log events to torch.monitor (#379)" (#536)
Summary: This reverts commit 4b989d5. Importing torch.monitor adds a pretty large dependency on torch which hugely slows down load time in OSS. This accounts for about 340ms of load time. Pull Request resolved: #536 Test Plan: This isn't being used anywhere AFAIK so should be safe to land. Internal has a custom handler. Reviewed By: priyaramani, kurman Differential Revision: D37432126 Pulled By: d4l3k fbshipit-source-id: 410e25744ad26706e35eee8e10f90ef8f94514ee
1 parent 3e739b9 commit e88d2df

File tree

4 files changed

+1
-85
lines changed

4 files changed

+1
-85
lines changed

.pyre_configuration

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
],
99
"site_package_search_strategy": "all",
1010
"source_directories": [
11-
"typestubs",
1211
"."
1312
],
1413
"strict": true,

torchx/runner/events/__init__.py

-10
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,6 @@ def _get_or_create_logger(destination: str = "null") -> logging.Logger:
5959
def record(event: TorchxEvent, destination: str = "null") -> None:
6060
_get_or_create_logger(destination).info(event.serialize())
6161

62-
if destination != "console":
63-
# if using torch>1.11 log the event to torch.monitor
64-
try:
65-
from torch import monitor
66-
67-
# pyre-fixme[16]: Module `monitor` has no attribute `log_event`.
68-
monitor.log_event(event.to_monitor_event())
69-
except ImportError:
70-
pass
71-
7262

7363
class log_event:
7464
"""

torchx/runner/events/api.py

+1-16
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,8 @@
77

88
import json
99
from dataclasses import asdict, dataclass
10-
from datetime import datetime
1110
from enum import Enum
12-
from typing import Optional, TYPE_CHECKING, Union
13-
14-
if TYPE_CHECKING:
15-
from torch import monitor
11+
from typing import Optional, Union
1612

1713

1814
class SourceType(str, Enum):
@@ -64,14 +60,3 @@ def deserialize(data: Union[str, "TorchxEvent"]) -> "TorchxEvent":
6460

6561
def serialize(self) -> str:
6662
return json.dumps(asdict(self))
67-
68-
# pyre-fixme[11]: Annotation `Event` is not defined as a type.
69-
def to_monitor_event(self) -> "monitor.Event":
70-
from torch import monitor
71-
72-
# pyre-fixme[16]: Module `monitor` has no attribute `Event`.
73-
return monitor.Event(
74-
name="torch.runner.Event",
75-
timestamp=datetime.now(),
76-
data={k: v for k, v in self.__dict__.items() if v is not None},
77-
)

torchx/runner/events/test/lib_test.py

-58
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,15 @@
88
import json
99
import logging
1010
import unittest
11-
from typing import List
1211
from unittest.mock import MagicMock, patch
1312

1413
from torchx.runner.events import (
1514
_get_or_create_logger,
1615
log_event,
17-
record,
1816
SourceType,
1917
TorchxEvent,
2018
)
2119

22-
try:
23-
from torch import monitor
24-
25-
SKIP_MONITOR: bool = False
26-
except ImportError:
27-
SKIP_MONITOR: bool = True
28-
2920

3021
class TorchxEventLibTest(unittest.TestCase):
3122
def assert_event(
@@ -66,55 +57,6 @@ def test_event_deser(self) -> None:
6657
deser_event = TorchxEvent.deserialize(json_event)
6758
self.assert_event(event, deser_event)
6859

69-
@unittest.skipIf(SKIP_MONITOR, "no torch.monitor available")
70-
def test_monitor(self) -> None:
71-
event = TorchxEvent(
72-
session="test_session",
73-
scheduler="test_scheduler",
74-
api="test_api",
75-
source=SourceType.EXTERNAL,
76-
)
77-
monitor_event = event.to_monitor_event()
78-
self.assertEqual(
79-
monitor_event.data,
80-
{
81-
"session": "test_session",
82-
"scheduler": "test_scheduler",
83-
"api": "test_api",
84-
"source": "EXTERNAL",
85-
},
86-
)
87-
self.assertEqual(monitor_event.name, "torch.runner.Event")
88-
89-
@unittest.skipIf(SKIP_MONITOR, "no torch.monitor available")
90-
@patch("torchx.runner.events._get_or_create_logger")
91-
def test_monitor_record(self, get_logging_handler: MagicMock) -> None:
92-
event = TorchxEvent(
93-
session="test_session",
94-
scheduler="test_scheduler",
95-
api="test_api",
96-
source=SourceType.EXTERNAL,
97-
)
98-
# pyre-fixme[11]: Annotation `Event` is not defined as a type.
99-
events: List[monitor.Event] = []
100-
101-
def handler(e: monitor.Event) -> None:
102-
events.append(e)
103-
104-
# pyre-fixme[16]: Module `monitor` has no attribute `register_event_handler`.
105-
handle = monitor.register_event_handler(handler)
106-
107-
try:
108-
record(event)
109-
finally:
110-
# pyre-fixme[16]: Module `monitor` has no attribute
111-
# `unregister_event_handler`.
112-
monitor.unregister_event_handler(handle)
113-
114-
self.assertEqual(get_logging_handler.call_count, 1)
115-
self.assertEqual(len(events), 1)
116-
self.assertEqual(events[0].data["session"], "test_session")
117-
11860

11961
@patch("torchx.runner.events.record")
12062
class LogEventTest(unittest.TestCase):

0 commit comments

Comments
 (0)