From 143dd7759ec890d0028fac7ba485d18042a3b6e2 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Mon, 13 Oct 2025 15:50:37 -0300 Subject: [PATCH] SIENTIAPDE-1231 Add memory management function to model_repository.py - Introduced `force_memory_release` function to enhance memory management by triggering garbage collection and attempting to release unused memory. - Utilized `ctypes` to call `malloc_trim` for further memory optimization, improving overall performance during model operations. --- laborious/utils/repository/model_repository.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/laborious/utils/repository/model_repository.py b/laborious/utils/repository/model_repository.py index 11944cc..904e271 100644 --- a/laborious/utils/repository/model_repository.py +++ b/laborious/utils/repository/model_repository.py @@ -29,12 +29,22 @@ from numpy import ndarray from typing import Any import gc from sientia_do.temporal.constants import DATETIME_FORMAT_WITH_TZ +import ctypes ARTIFACTS_PATH = "./tmp/artifacts" TRANSFORMED_COMPRESSED_PATH = "artifacts/training_transformer.pkl" PREDICTION_COMPRESSED_PATH = "artifacts/stacking_model.pkl" +def force_memory_release(): + gc.collect() + + try: + ctypes.CDLL("libc.so.6").malloc_trim(0) + except: + pass + + class MLFlowRepository(): def __init__(self, host: str, username: str, password: str, logger: Logger):