]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
perf(qav3): optimize optuna memory usage
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 10 Feb 2025 12:02:31 +0000 (13:02 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 10 Feb 2025 12:02:31 +0000 (13:02 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py
quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py

index d2251fadb8cb808b88519b704ee08b623b636ea5..5b4a9fb0baa184d198e9304ce6a80c34bcd7dabe 100644 (file)
@@ -67,8 +67,19 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
 
         start = time.time()
         if self.__optuna_hyperopt:
+            storage_dir, study_name = str(dk.full_path).rsplit("/", 1)
             pruner = optuna.pruners.HyperbandPruner()
-            study = optuna.create_study(pruner=pruner, direction="minimize")
+            study = optuna.create_study(
+                study_name=study_name,
+                sampler=optuna.samplers.TPESampler(
+                    multivariate=True,
+                    group=True,
+                ),
+                pruner=pruner,
+                direction=optuna.study.StudyDirection.MINIMIZE,
+                storage=f"sqlite:///{storage_dir}/optuna-lgbm.sqlite",
+                load_if_exists=True,
+            )
             study.optimize(
                 lambda trial: objective(
                     trial,
@@ -86,6 +97,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
                 n_trials=self.__optuna_config.get("n_trials", N_TRIALS),
                 n_jobs=self.__optuna_config.get("n_jobs", 1),
                 timeout=self.__optuna_config.get("timeout", 3600),
+                gc_after_trial=True,
             )
 
             self.__optuna_hp = study.best_params
index 9eb323defec7d0f43c072139a90f22993e1cfa9c..0f00dffe9e2843deafea10229b952354e203def9 100644 (file)
@@ -67,8 +67,19 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
 
         start = time.time()
         if self.__optuna_hyperopt:
+            storage_dir, study_name = str(dk.full_path).rsplit("/", 1)
             pruner = optuna.pruners.HyperbandPruner()
-            study = optuna.create_study(pruner=pruner, direction="minimize")
+            study = optuna.create_study(
+                study_name=study_name,
+                sampler=optuna.samplers.TPESampler(
+                    multivariate=True,
+                    group=True,
+                ),
+                pruner=pruner,
+                direction=optuna.study.StudyDirection.MINIMIZE,
+                storage=f"sqlite:///{storage_dir}/optuna-xgboost.sqlite",
+                load_if_exists=True,
+            )
             study.optimize(
                 lambda trial: objective(
                     trial,
@@ -86,6 +97,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
                 n_trials=self.__optuna_config.get("n_trials", N_TRIALS),
                 n_jobs=self.__optuna_config.get("n_jobs", 1),
                 timeout=self.__optuna_config.get("timeout", 3600),
+                gc_after_trial=True,
             )
 
             self.__optuna_hp = study.best_params