From 79f79d6573f467ec8b7e23668dc78ec08a425a3c Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 12:08:52 +0200 Subject: [PATCH 01/10] add force isolation, add force register to create --- src/poli/objective_repository/gfp_cbas/register.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index b9c960bd..b6d04e96 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -120,6 +120,8 @@ def create( num_workers: int = None, evaluation_budget: int = float("inf"), negate: bool = False, + force_isolation: bool = False, + force_register: bool = False, ) -> Problem: """ Seed value required to shuffle the data, otherwise CSV asset data index unchanged. @@ -141,6 +143,8 @@ def create( seed=seed, evaluation_budget=evaluation_budget, negate=negate, + force_isolation=force_isolation, + force_register=force_register, ) x0 = f.x0 From ba5106f818e853167a201df2e75b3f986946f4ac Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 12:58:12 +0200 Subject: [PATCH 02/10] dont pass force_register to BB --- src/poli/objective_repository/gfp_cbas/register.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index b6d04e96..946ce4ff 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -121,7 +121,7 @@ def create( evaluation_budget: int = float("inf"), negate: bool = False, force_isolation: bool = False, - force_register: bool = False, + force_register: bool = False, # TODO: this is not functional requires correction ) -> Problem: """ Seed value required to shuffle the data, otherwise CSV asset data index unchanged. @@ -131,7 +131,7 @@ def create( self.problem_type = problem_type if seed is not None: seed_python_numpy_and_torch(seed) - problem_info = self.get_problem_name() + f = GFPCBasBlackBox( problem_type=problem_type, functional_only=functional_only, @@ -144,7 +144,6 @@ def create( evaluation_budget=evaluation_budget, negate=negate, force_isolation=force_isolation, - force_register=force_register, ) x0 = f.x0 From dc1dc4cfadf4a6624ec2703b8444be3163069fbd Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 12:58:36 +0200 Subject: [PATCH 03/10] black. --- src/poli/objective_repository/gfp_cbas/register.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index 946ce4ff..29ec2a85 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -121,7 +121,7 @@ def create( evaluation_budget: int = float("inf"), negate: bool = False, force_isolation: bool = False, - force_register: bool = False, # TODO: this is not functional requires correction + force_register: bool = False, # TODO: this is not functional requires correction ) -> Problem: """ Seed value required to shuffle the data, otherwise CSV asset data index unchanged. From 0d87fe55057b743908d91531c18845b85c7667b9 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 15:22:09 +0200 Subject: [PATCH 04/10] add eager on import --- src/poli/objective_repository/gfp_cbas/__init__.py | 2 ++ src/poli/objective_repository/gfp_cbas/cbas_wrapper.py | 4 ++++ src/poli/objective_repository/gfp_cbas/make_vae.py | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/__init__.py b/src/poli/objective_repository/gfp_cbas/__init__.py index 9090d5c7..469039a1 100644 --- a/src/poli/objective_repository/gfp_cbas/__init__.py +++ b/src/poli/objective_repository/gfp_cbas/__init__.py @@ -1,4 +1,6 @@ import numpy as np +import tensorflow as tf +tf.compat.v1.enable_eager_execution() AA = [ "a", diff --git a/src/poli/objective_repository/gfp_cbas/cbas_wrapper.py b/src/poli/objective_repository/gfp_cbas/cbas_wrapper.py index fd3af003..a6b42dfb 100644 --- a/src/poli/objective_repository/gfp_cbas/cbas_wrapper.py +++ b/src/poli/objective_repository/gfp_cbas/cbas_wrapper.py @@ -13,6 +13,10 @@ from pathlib import Path import numpy as np +import tensorflow as tf + +tf.compat.v1.enable_eager_execution() +tf.config.run_functions_eagerly(True) import torch import torch.nn as nn from scipy.stats import norm as StandardNormal diff --git a/src/poli/objective_repository/gfp_cbas/make_vae.py b/src/poli/objective_repository/gfp_cbas/make_vae.py index da520c0d..191e08ca 100644 --- a/src/poli/objective_repository/gfp_cbas/make_vae.py +++ b/src/poli/objective_repository/gfp_cbas/make_vae.py @@ -1,4 +1,7 @@ import tensorflow as tf + +tf.compat.v1.enable_eager_execution() + from tensorflow import keras from tensorflow.keras.layers import ( Add, @@ -12,9 +15,6 @@ from tensorflow.keras.models import Model from tensorflow.python.keras import backend as K -tf.compat.v1.disable_v2_behavior() - - MAKE_DETERMINISTIC = True From 87143ba2d5b633f754824f8017f701cf299d5f93 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 15:22:25 +0200 Subject: [PATCH 05/10] refactor Isolated logic NOT using get_inner_function --- src/poli/objective_repository/gfp_cbas/register.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index 29ec2a85..47f3e69a 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -11,6 +11,8 @@ from poli.core.util.seeding import seed_python_numpy_and_torch from poli.objective_repository.gfp_cbas.information import AA +from .isolated_function import GFPCBasIsolatedLogic + class GFPCBasBlackBox(AbstractBlackBox): def __init__( @@ -43,13 +45,8 @@ def __init__( self.seed = seed self.negate = negate - inner_function = get_inner_function( - isolated_function_name="gfp_cbas__isolated", - class_name="GFPCBasIsolatedLogic", - module_to_import="poli.objective_repository.gfp_cbas.isolated_function", - seed=self.seed, - force_isolation=self.force_isolation, - quiet=False, + # NOTE: do NOT us get_inner_function -> importlib resets existing tf import and we CANNOT recover tf.v1 eager execution + inner_function = GFPCBasIsolatedLogic( problem_type=self.problem_type, info=self.get_black_box_info(), n_starting_points=self.n_starting_points, @@ -150,3 +147,5 @@ def create( problem = Problem(f, x0) return problem + + From 47af82024df1c45aa8503a908bccadd7a914a630 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 15:22:57 +0200 Subject: [PATCH 06/10] black. --- src/poli/objective_repository/gfp_cbas/__init__.py | 1 + src/poli/objective_repository/gfp_cbas/register.py | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/__init__.py b/src/poli/objective_repository/gfp_cbas/__init__.py index 469039a1..05b0fffa 100644 --- a/src/poli/objective_repository/gfp_cbas/__init__.py +++ b/src/poli/objective_repository/gfp_cbas/__init__.py @@ -1,5 +1,6 @@ import numpy as np import tensorflow as tf + tf.compat.v1.enable_eager_execution() AA = [ diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index 47f3e69a..88d6f005 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -147,5 +147,3 @@ def create( problem = Problem(f, x0) return problem - - From 977dcf0699d7100fe73dc3be4b1407bf2a122b89 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 15:26:58 +0200 Subject: [PATCH 07/10] don't import tf on init --- src/poli/objective_repository/gfp_cbas/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/__init__.py b/src/poli/objective_repository/gfp_cbas/__init__.py index 05b0fffa..9090d5c7 100644 --- a/src/poli/objective_repository/gfp_cbas/__init__.py +++ b/src/poli/objective_repository/gfp_cbas/__init__.py @@ -1,7 +1,4 @@ import numpy as np -import tensorflow as tf - -tf.compat.v1.enable_eager_execution() AA = [ "a", From 25b2d706b74cc5d5355c43780ede28cd88e5e7df Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 16:43:54 +0200 Subject: [PATCH 08/10] if observer is None, don't instantiate, workaround on fail observer init --- src/poli/objective_factory.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/poli/objective_factory.py b/src/poli/objective_factory.py index da889f57..105e5ff2 100644 --- a/src/poli/objective_factory.py +++ b/src/poli/objective_factory.py @@ -173,16 +173,16 @@ def create( **kwargs_for_factory, ) - # instantiate observer (if desired) - observer = _instantiate_observer(observer_name, quiet) - observer_info = observer.initialize_observer( - problem.black_box.info, observer_init_info, seed - ) - f = problem.black_box - f.set_observer(observer) - f.set_observer_info(observer_info) - problem.set_observer(AlgorithmObserverWrapper(observer), observer_info) + # instantiate observer (if desired) + if observer is not None: + observer = _instantiate_observer(observer_name, quiet) + observer_info = observer.initialize_observer( + problem.black_box.info, observer_init_info, seed + ) + f.set_observer(observer) + f.set_observer_info(observer_info) + problem.set_observer(AlgorithmObserverWrapper(observer), observer_info) return problem From b13d9b71d93b997152a6aeff8cb42dc3f7c89bcf Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 16:46:31 +0200 Subject: [PATCH 09/10] if observer_name not observer --- src/poli/objective_factory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/poli/objective_factory.py b/src/poli/objective_factory.py index 105e5ff2..6bcbef3f 100644 --- a/src/poli/objective_factory.py +++ b/src/poli/objective_factory.py @@ -175,7 +175,7 @@ def create( f = problem.black_box # instantiate observer (if desired) - if observer is not None: + if observer_name is not None: observer = _instantiate_observer(observer_name, quiet) observer_info = observer.initialize_observer( problem.black_box.info, observer_init_info, seed From e06ba56b1ce619eaf19da9ac5ba48742ce5f4c17 Mon Sep 17 00:00:00 2001 From: Richard Michael Date: Fri, 4 Oct 2024 16:53:52 +0200 Subject: [PATCH 10/10] don't break poli imports --- src/poli/objective_repository/gfp_cbas/register.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/poli/objective_repository/gfp_cbas/register.py b/src/poli/objective_repository/gfp_cbas/register.py index 88d6f005..ab62c9c6 100644 --- a/src/poli/objective_repository/gfp_cbas/register.py +++ b/src/poli/objective_repository/gfp_cbas/register.py @@ -11,8 +11,6 @@ from poli.core.util.seeding import seed_python_numpy_and_torch from poli.objective_repository.gfp_cbas.information import AA -from .isolated_function import GFPCBasIsolatedLogic - class GFPCBasBlackBox(AbstractBlackBox): def __init__( @@ -46,6 +44,7 @@ def __init__( self.negate = negate # NOTE: do NOT us get_inner_function -> importlib resets existing tf import and we CANNOT recover tf.v1 eager execution + from .isolated_function import GFPCBasIsolatedLogic # encapsulate as to not break poli imports inner_function = GFPCBasIsolatedLogic( problem_type=self.problem_type, info=self.get_black_box_info(),