From: Jérôme Benoit Date: Mon, 10 Feb 2025 12:02:31 +0000 (+0100) Subject: perf(qav3): optimize optuna memory usage X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=217683c562efdb321f2615fafe424181c41cdc09;p=freqai-strategies.git perf(qav3): optimize optuna memory usage Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index d2251fa..5b4a9fb 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -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 diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index 9eb323d..0f00dff 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -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