@@ -954,18 +954,15 @@ def run_traditional_ml(
954954 learning algorithm runs over the time limit.
955955 """
956956 assert self ._logger is not None # for mypy compliancy
957- if STRING_TO_TASK_TYPES [self .task_type ] in REGRESSION_TASKS :
958- self ._logger .warning ("Traditional Pipeline is not enabled for regression. Skipping..." )
959- else :
960- traditional_task_name = 'runTraditional'
961- self ._stopwatch .start_task (traditional_task_name )
962- elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
963- time_for_traditional = int (runtime_limit - elapsed_time )
964- self ._do_traditional_prediction (
965- func_eval_time_limit_secs = func_eval_time_limit_secs ,
966- time_left = time_for_traditional ,
967- )
968- self ._stopwatch .stop_task (traditional_task_name )
957+ traditional_task_name = 'runTraditional'
958+ self ._stopwatch .start_task (traditional_task_name )
959+ elapsed_time = self ._stopwatch .wall_elapsed (current_task_name )
960+ time_for_traditional = int (runtime_limit - elapsed_time )
961+ self ._do_traditional_prediction (
962+ func_eval_time_limit_secs = func_eval_time_limit_secs ,
963+ time_left = time_for_traditional ,
964+ )
965+ self ._stopwatch .stop_task (traditional_task_name )
969966
970967 def _search (
971968 self ,
@@ -1347,22 +1344,7 @@ def _search(
13471344 self ._logger .info ("Starting Shutdown" )
13481345
13491346 if proc_ensemble is not None :
1350- self ._results_manager .ensemble_performance_history = list (proc_ensemble .history )
1351-
1352- if len (proc_ensemble .futures ) > 0 :
1353- # Also add ensemble runs that did not finish within smac time
1354- # and add them into the ensemble history
1355- self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1356- result = proc_ensemble .futures .pop ().result ()
1357- if result :
1358- ensemble_history , _ , _ , _ = result
1359- self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1360- self ._logger .info ("Ensemble script finished, continue shutdown." )
1361-
1362- # save the ensemble performance history file
1363- if len (self .ensemble_performance_history ) > 0 :
1364- pd .DataFrame (self .ensemble_performance_history ).to_json (
1365- os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1347+ self ._collect_results_ensemble (proc_ensemble )
13661348
13671349 if load_models :
13681350 self ._logger .info ("Loading models..." )
@@ -1641,7 +1623,7 @@ def fit_pipeline(
16411623 exclude = self .exclude_components ,
16421624 search_space_updates = self .search_space_updates )
16431625 dataset_properties = dataset .get_dataset_properties (dataset_requirements )
1644- self ._backend .replace_datamanager (dataset )
1626+ self ._backend .save_datamanager (dataset )
16451627
16461628 if self ._logger is None :
16471629 self ._logger = self ._get_logger (dataset .dataset_name )
@@ -1832,7 +1814,7 @@ def fit_ensemble(
18321814 ensemble_fit_task_name = 'EnsembleFit'
18331815 self ._stopwatch .start_task (ensemble_fit_task_name )
18341816 if enable_traditional_pipeline :
1835- if func_eval_time_limit_secs is None or func_eval_time_limit_secs > time_for_task :
1817+ if func_eval_time_limit_secs > time_for_task :
18361818 self ._logger .warning (
18371819 'Time limit for a single run is higher than total time '
18381820 'limit. Capping the limit for a single run to the total '
@@ -1873,12 +1855,8 @@ def fit_ensemble(
18731855 )
18741856
18751857 manager .build_ensemble (self ._dask_client )
1876- future = manager .futures .pop ()
1877- result = future .result ()
1878- if result is None :
1879- raise ValueError ("Errors occurred while building the ensemble - please"
1880- " check the log file and command line output for error messages." )
1881- self .ensemble_performance_history , _ , _ , _ = result
1858+ if manager is not None :
1859+ self ._collect_results_ensemble (manager )
18821860
18831861 if load_models :
18841862 self ._load_models ()
@@ -1956,6 +1934,31 @@ def _init_ensemble_builder(
19561934
19571935 return proc_ensemble
19581936
1937+ def _collect_results_ensemble (
1938+ self ,
1939+ manager : EnsembleBuilderManager
1940+ ) -> None :
1941+
1942+ if self ._logger is None :
1943+ raise ValueError ("logger should be initialized to fit ensemble" )
1944+
1945+ self ._results_manager .ensemble_performance_history = list (manager .history )
1946+
1947+ if len (manager .futures ) > 0 :
1948+ # Also add ensemble runs that did not finish within smac time
1949+ # and add them into the ensemble history
1950+ self ._logger .info ("Ensemble script still running, waiting for it to finish." )
1951+ result = manager .futures .pop ().result ()
1952+ if result :
1953+ ensemble_history , _ , _ , _ = result
1954+ self ._results_manager .ensemble_performance_history .extend (ensemble_history )
1955+ self ._logger .info ("Ensemble script finished, continue shutdown." )
1956+
1957+ # save the ensemble performance history file
1958+ if len (self .ensemble_performance_history ) > 0 :
1959+ pd .DataFrame (self .ensemble_performance_history ).to_json (
1960+ os .path .join (self ._backend .internals_directory , 'ensemble_history.json' ))
1961+
19591962 def predict (
19601963 self ,
19611964 X_test : np .ndarray ,
0 commit comments