Skip to content

Commit 665e50c

Browse files
authored
Release ORT sessions eagerly in OnnxModelSession.close
1 parent 95a9f5c commit 665e50c

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

src/mobius/_testing/ort_inference.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@ def run(self, feeds: dict[str, np.ndarray]) -> dict[str, np.ndarray]:
256256
return dict(zip(self._output_names, (_ort_value_to_numpy(o) for o in raw_outputs)))
257257

258258
def close(self) -> None:
259+
# Release ORT resources eagerly (not only at Python GC time) so
260+
# long-running GPU test suites do not accumulate session memory.
261+
if hasattr(self, "_session"):
262+
del self._session
259263
self._tmpdir.cleanup()
260264

261265
def __del__(self) -> None:

src/mobius/_testing/ort_inference_test.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313

1414
from __future__ import annotations
1515

16+
import tempfile
17+
1618
import onnx_ir as ir
1719
import pytest
1820

1921
from mobius._flags import flags
20-
from mobius._testing.ort_inference import _MAX_EP_OPSET, _should_lower_opset
22+
from mobius._testing.ort_inference import OnnxModelSession, _MAX_EP_OPSET, _should_lower_opset
2123

2224

2325
def _make_value(name: str) -> ir.Value:
@@ -108,3 +110,13 @@ def test_opset_at_or_below_max_not_lowered(lowering_enabled: None) -> None:
108110
model = _model_with(_graph_with([node], opset=_MAX_EP_OPSET))
109111

110112
assert _should_lower_opset(model, device="cuda") is False
113+
114+
115+
def test_close_releases_session_reference() -> None:
116+
session = OnnxModelSession.__new__(OnnxModelSession)
117+
session._session = object() # type: ignore[attr-defined]
118+
session._tmpdir = tempfile.TemporaryDirectory() # type: ignore[attr-defined]
119+
120+
session.close()
121+
122+
assert not hasattr(session, "_session")

0 commit comments

Comments
 (0)