From: Jérôme Benoit Date: Mon, 10 Feb 2025 14:38:45 +0000 (+0100) Subject: feat(qav3): allow to configure optuna storage type X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=1346f7fd0180c7152cb9f6e4b8366d0bb66e1cf1;p=freqai-strategies.git feat(qav3): allow to configure optuna storage type Signed-off-by: Jérôme Benoit --- 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(