From 1346f7fd0180c7152cb9f6e4b8366d0bb66e1cf1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 10 Feb 2025 15:38:45 +0100 Subject: [PATCH] feat(qav3): allow to configure optuna storage type MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- quickadapter/user_data/config-template.json | 3 ++- .../LightGBMRegressorQuickAdapterV35.py | 17 ++++++++++++----- .../XGBoostRegressorQuickAdapterV35.py | 17 ++++++++++++----- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/quickadapter/user_data/config-template.json b/quickadapter/user_data/config-template.json index 12e5a6e..13effa2 100644 --- a/quickadapter/user_data/config-template.json +++ b/quickadapter/user_data/config-template.json @@ -120,7 +120,8 @@ "n_trials": 36, "n_jobs": 6, "timeout": 3600, - "candles_step": 10 + "candles_step": 10, + "storage_type": "sqlite" }, "extra_returns_per_train": { "DI_value_param1": 0, diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index f8429a6..f21788e 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -70,6 +70,17 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): if self.__optuna_hyperopt: study_name = str(dk.pair) storage_dir = str(dk.full_path) + storage_type = self.__optuna_config.get("storage_type", "sqlite") + if storage_type == "sqlite": + storage = ( + f"sqlite:///{storage_dir}/optuna-{sanitize_path(study_name)}.sqlite" + ) + elif storage_type == "file": + storage = optuna.storages.JournalStorage( + optuna.storages.journal.JournalFileBackend( + f"{storage_dir}/optuna-{sanitize_path(study_name)}.log" + ) + ) pruner = optuna.pruners.HyperbandPruner() study = optuna.create_study( study_name=study_name, @@ -79,11 +90,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): ), pruner=pruner, direction=optuna.study.StudyDirection.MINIMIZE, - storage=optuna.storages.JournalStorage( - optuna.storages.journal.JournalFileBackend( - f"{storage_dir}/optuna-{sanitize_path(study_name)}.log" - ) - ), + storage=storage, load_if_exists=True, ) study.optimize( diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index f2cb844..b70099c 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -70,6 +70,17 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): if self.__optuna_hyperopt: study_name = str(dk.pair) storage_dir = str(dk.full_path) + storage_type = self.__optuna_config.get("storage_type", "sqlite") + if storage_type == "sqlite": + storage = ( + f"sqlite:///{storage_dir}/optuna-{sanitize_path(study_name)}.sqlite" + ) + elif storage_type == "file": + storage = optuna.storages.JournalStorage( + optuna.storages.journal.JournalFileBackend( + f"{storage_dir}/optuna-{sanitize_path(study_name)}.log" + ) + ) pruner = optuna.pruners.HyperbandPruner() study = optuna.create_study( study_name=study_name, @@ -79,11 +90,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): ), pruner=pruner, direction=optuna.study.StudyDirection.MINIMIZE, - storage=optuna.storages.JournalStorage( - optuna.storages.journal.JournalFileBackend( - f"{storage_dir}/optuna-{sanitize_path(study_name)}.log" - ) - ), + storage=storage, load_if_exists=True, ) study.optimize( -- 2.43.0