From: Jérôme Benoit Date: Mon, 24 Feb 2025 11:48:48 +0000 (+0100) Subject: fix(qav3): ensure optuna settings can't hog CPU ressources X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=d0f8ff2b6d4fc6037f290187b2c9fcf8e91a630d;p=freqai-strategies.git fix(qav3): ensure optuna settings can't hog CPU ressources Signed-off-by: Jérôme Benoit --- diff --git a/ReforceXY/user_data/config-template.json b/ReforceXY/user_data/config-template.json index 38438cc..1de66d2 100644 --- a/ReforceXY/user_data/config-template.json +++ b/ReforceXY/user_data/config-template.json @@ -168,8 +168,8 @@ "max_training_drawdown_pct": 0.02, "max_trade_duration_candles": 96, // Timeout exit value used with force_actions "force_actions": false, // Utilize minimal_roi, stoploss, and max_trade_duration_candles as TP/SL/Timeout in the environment - "n_envs": 1, // Number of DummyVecEnv environments - "frame_staking": 0, // Number of VecFrameStack stacks (set > 1 to use) + "n_envs": 32, // Number of DummyVecEnv environments + "frame_staking": 4, // Number of VecFrameStack stacks (set > 1 to use) "lr_schedule": false, // Enable learning rate linear schedule "cr_schedule": false, // Enable clip range linear schedule "max_no_improvement_evals": 0, // Maximum consecutive evaluations without a new best model diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index 3fd4269..ae470ce 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -325,6 +325,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): storage=storage, ) self.optuna_hp_enqueue_previous_best_trial(pair, study) + logger.info(f"Optuna {study_namespace} hyperopt started") start = time.time() try: study.optimize( @@ -339,7 +340,10 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): self.model_training_parameters, ), n_trials=self.__optuna_config.get("n_trials", N_TRIALS), - n_jobs=self.__optuna_config.get("n_jobs", 1), + n_jobs=min( + self.__optuna_config.get("n_jobs", 1), + max(int(self.max_system_threads / 4), 1), + ), timeout=self.__optuna_config.get("timeout", 3600), gc_after_trial=True, ) @@ -397,6 +401,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): storage=storage, ) self.optuna_period_enqueue_previous_best_trial(pair, study) + logger.info(f"Optuna {study_namespace} hyperopt started") start = time.time() try: study.optimize( @@ -414,7 +419,10 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): model_training_parameters, ), n_trials=self.__optuna_config.get("n_trials", N_TRIALS), - n_jobs=self.__optuna_config.get("n_jobs", 1), + n_jobs=min( + self.__optuna_config.get("n_jobs", 1), + max(int(self.max_system_threads / 4), 1), + ), timeout=self.__optuna_config.get("timeout", 3600), gc_after_trial=True, ) diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index bbc2b28..d0fd9c4 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -326,6 +326,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): storage=storage, ) self.optuna_hp_enqueue_previous_best_trial(pair, study) + logger.info(f"Optuna {study_namespace} hyperopt started") start = time.time() try: study.optimize( @@ -340,7 +341,10 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): self.model_training_parameters, ), n_trials=self.__optuna_config.get("n_trials", N_TRIALS), - n_jobs=self.__optuna_config.get("n_jobs", 1), + n_jobs=min( + self.__optuna_config.get("n_jobs", 1), + max(int(self.max_system_threads / 4), 1), + ), timeout=self.__optuna_config.get("timeout", 3600), gc_after_trial=True, ) @@ -398,6 +402,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): storage=storage, ) self.optuna_period_enqueue_previous_best_trial(pair, study) + logger.info(f"Optuna {study_namespace} hyperopt started") start = time.time() try: study.optimize( @@ -415,7 +420,10 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): model_training_parameters, ), n_trials=self.__optuna_config.get("n_trials", N_TRIALS), - n_jobs=self.__optuna_config.get("n_jobs", 1), + n_jobs=min( + self.__optuna_config.get("n_jobs", 1), + max(int(self.max_system_threads / 4), 1), + ), timeout=self.__optuna_config.get("timeout", 3600), gc_after_trial=True, )