From eeb460e55cf6bbd17bec9ff347b66274d5ee4f90 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Nov 2023 19:36:14 +0100 Subject: [PATCH 1/2] Use cloudpickle throughout --- freqtrade/freqai/data_drawer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqai/data_drawer.py b/freqtrade/freqai/data_drawer.py index a0c902f48..89a828e4d 100644 --- a/freqtrade/freqai/data_drawer.py +++ b/freqtrade/freqai/data_drawer.py @@ -12,7 +12,7 @@ import numpy as np import pandas as pd import psutil import rapidjson -from joblib import dump, load +from joblib import load from joblib.externals import cloudpickle from numpy.typing import NDArray from pandas import DataFrame @@ -471,7 +471,8 @@ class FreqaiDataDrawer: # Save the trained model if self.model_type == 'joblib': - dump(model, save_path / f"{dk.model_filename}_model.joblib") + with (save_path / f"{dk.model_filename}_model.joblib").open("wb") as fp: + cloudpickle.dump(model, fp) elif self.model_type == 'keras': model.save(save_path / f"{dk.model_filename}_model.h5") elif self.model_type in ["stable_baselines3", "sb3_contrib", "pytorch"]: From 72eeb6561cd791a6e1db146e9992ab3c5e7c1aa2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Nov 2023 19:37:49 +0100 Subject: [PATCH 2/2] use Cloudpickle also for reading --- freqtrade/freqai/data_drawer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqai/data_drawer.py b/freqtrade/freqai/data_drawer.py index 89a828e4d..cfae6f5d3 100644 --- a/freqtrade/freqai/data_drawer.py +++ b/freqtrade/freqai/data_drawer.py @@ -12,7 +12,6 @@ import numpy as np import pandas as pd import psutil import rapidjson -from joblib import load from joblib.externals import cloudpickle from numpy.typing import NDArray from pandas import DataFrame @@ -559,7 +558,8 @@ class FreqaiDataDrawer: if dk.live and coin in self.model_dictionary: model = self.model_dictionary[coin] elif self.model_type == 'joblib': - model = load(dk.data_path / f"{dk.model_filename}_model.joblib") + with (dk.data_path / f"{dk.model_filename}_model.joblib").open("rb") as fp: + model = cloudpickle.load(fp) elif 'stable_baselines' in self.model_type or 'sb3_contrib' == self.model_type: mod = importlib.import_module( self.model_type, self.freqai_info['rl_config']['model_type'])