move @delayed and @wrap_non_picklable_objects in hyperopt_optimizer.py

one test with analyze_per_epoch is failing
This commit is contained in:
viotemp1
2025-05-02 21:00:42 +03:00
parent 149133cc44
commit 73c28890d7
3 changed files with 9 additions and 5 deletions

View File

@@ -14,7 +14,8 @@ from pathlib import Path
from typing import Any from typing import Any
import rapidjson import rapidjson
from joblib import Parallel, cpu_count, delayed, wrap_non_picklable_objects from joblib import Parallel, cpu_count
from inspect import unwrap
from freqtrade.constants import FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config from freqtrade.constants import FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config
from freqtrade.enums import HyperoptState from freqtrade.enums import HyperoptState
@@ -158,7 +159,8 @@ class Hyperopt:
return self.hyperopter.generate_optimizer(*args, **kwargs) return self.hyperopter.generate_optimizer(*args, **kwargs)
return parallel(delayed(wrap_non_picklable_objects(optimizer_wrapper))(v) for v in asked) # return parallel(delayed(wrap_non_picklable_objects(optimizer_wrapper))(v) for v in asked)
return parallel(optimizer_wrapper(v) for v in asked)
def _set_random_state(self, random_state: int | None) -> int: def _set_random_state(self, random_state: int | None) -> int:
return random_state or random.randint(1, 2**16 - 1) # noqa: S311 return random_state or random.randint(1, 2**16 - 1) # noqa: S311
@@ -283,7 +285,7 @@ class Hyperopt:
asked, is_random = self.get_asked_points( asked, is_random = self.get_asked_points(
n_points=1, dimensions=self.hyperopter.o_dimensions n_points=1, dimensions=self.hyperopter.o_dimensions
) )
f_val0 = self.hyperopter.generate_optimizer(asked[0].params) f_val0 = unwrap(self.hyperopter.generate_optimizer)(asked[0].params)
self.opt.tell(asked[0], [f_val0["loss"]]) self.opt.tell(asked[0], [f_val0["loss"]])
self.evaluate_result(f_val0, 1, is_random[0]) self.evaluate_result(f_val0, 1, is_random[0])
pbar.update(task, advance=1) pbar.update(task, advance=1)

View File

@@ -11,7 +11,7 @@ from pathlib import Path
from typing import Any from typing import Any
import optuna import optuna
from joblib import dump, load from joblib import dump, load, delayed, wrap_non_picklable_objects
from joblib.externals import cloudpickle from joblib.externals import cloudpickle
from optuna.exceptions import ExperimentalWarning from optuna.exceptions import ExperimentalWarning
from pandas import DataFrame from pandas import DataFrame
@@ -248,6 +248,8 @@ class HyperOptimizer:
# noinspection PyProtectedMember # noinspection PyProtectedMember
attr.value = params_dict[attr_name] attr.value = params_dict[attr_name]
@delayed
@wrap_non_picklable_objects
def generate_optimizer(self, raw_params: dict[str, Any]) -> dict[str, Any]: def generate_optimizer(self, raw_params: dict[str, Any]) -> dict[str, Any]:
""" """
Used Optimize function. Used Optimize function.

View File

@@ -605,7 +605,7 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None:
hyperopt.hyperopter.min_date = dt_utc(2017, 12, 10) hyperopt.hyperopter.min_date = dt_utc(2017, 12, 10)
hyperopt.hyperopter.max_date = dt_utc(2017, 12, 13) hyperopt.hyperopter.max_date = dt_utc(2017, 12, 13)
hyperopt.hyperopter.init_spaces() hyperopt.hyperopter.init_spaces()
generate_optimizer_value = hyperopt.hyperopter.generate_optimizer(optimizer_param) generate_optimizer_value = hyperopt.hyperopter.generate_optimizer._obj(hyperopt.hyperopter, raw_params=optimizer_param)
assert generate_optimizer_value == response_expected assert generate_optimizer_value == response_expected