Skip to content

Commit

Permalink
working lf to hf parameters for rc car
Browse files Browse the repository at this point in the history
  • Loading branch information
sukhijab committed Jan 25, 2024
1 parent d89d473 commit 8c3f6ed
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 83 deletions.
134 changes: 77 additions & 57 deletions experiments/lf_hf_transfer_exp/run_regression_exp.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,58 +34,74 @@


def regression_experiment(
# data parameters
data_source: str,
num_samples_train: int,
data_seed: int = 981648,
pred_diff: bool = False,

# logging parameters
use_wandb: bool = False,

# standard BNN parameters
model: str = 'BNN_SVGD',
model_seed: int = 892616,
likelihood_std: Union[List[float], float] = 0.1,
data_batch_size: int = 8,
min_train_steps: int = 2500,
num_epochs: int = 60,
lr: float = 1e-3,
hidden_activation: str = 'leaky_relu',
num_layers: int = 3,
layer_size: int = 64,
normalize_likelihood_std: bool = False,
learn_likelihood_std: bool = False,
likelihood_exponent: float = 1.0,
likelihood_reg: float = 0.0,
# SVGD parameters
num_particles: int = 20,
bandwidth_svgd: float = 10.0,
weight_prior_std: float = 0.5,
bias_prior_std: float = 1e1,

# FSVGD parameters
bandwidth_gp_prior: float = 0.4,
num_measurement_points: int = 32,

# FSVGD_Sim_Prior parameters
bandwidth_score_estim: float = None,
ssge_kernel_type: str = 'IMQ',
num_f_samples: int = 128,

switch_score_estimator_frac: float = 0.75,
added_gp_lengthscale: float = 5.,
added_gp_outputscale: Union[List[float], float] = 0.05,

# BNN_SVGD_DistillPrior
num_distill_steps: int = 500000,
):
num_train_steps = num_epochs // data_batch_size * num_samples_train + min_train_steps
# data parameters
data_source: str,
num_samples_train: int,
data_seed: int = 981648,
pred_diff: bool = False,

# logging parameters
use_wandb: bool = False,

# standard BNN parameters
model: str = 'BNN_SVGD',
model_seed: int = 892616,
likelihood_std: Union[List[float], float] = 0.1,
data_batch_size: int = 8,
min_train_steps: int = 2500,
num_epochs: int = 60,
max_train_steps: int = 100_000,
num_sim_model_train_steps: int = 5_000,
lr: float = 1e-3,
hidden_activation: str = 'leaky_relu',
num_layers: int = 3,
layer_size: int = 64,
normalize_likelihood_std: bool = False,
learn_likelihood_std: bool = False,
likelihood_exponent: float = 1.0,
likelihood_reg: float = 0.0,
# SVGD parameters
num_particles: int = 20,
bandwidth_svgd: float = 10.0,
weight_prior_std: float = 0.5,
bias_prior_std: float = 1e1,

# FSVGD parameters
bandwidth_gp_prior: float = 0.4,
num_measurement_points: int = 32,

# FSVGD_Sim_Prior parameters
bandwidth_score_estim: float = None,
ssge_kernel_type: str = 'IMQ',
num_f_samples: int = 128,

switch_score_estimator_frac: float = 0.75,
added_gp_lengthscale: float = 5.,
added_gp_outputscale: Union[List[float], float] = 0.05,

# BNN_SVGD_DistillPrior
num_distill_steps: int = 500000,
):
num_train_steps = min(num_epochs * num_samples_train // data_batch_size + min_train_steps, max_train_steps)
# provide data and sim
x_train, y_train, x_test, y_test, sim_lf = provide_data_and_sim(
data_source=data_source,
data_spec={'num_samples_train': num_samples_train},
data_seed=data_seed)
if 'hf' in model:
use_hf_sim = True
else:
use_hf_sim = False
if 'real_racecar' in data_source:
x_train, y_train, x_test, y_test, sim_lf = provide_data_and_sim(
data_source=data_source,
data_spec={'num_samples_train': num_samples_train, 'sampling': 'iid',
'use_hf_sim': use_hf_sim, 'num_samples_test': 6000},
data_seed=data_seed)
x_train = x_train[:num_samples_train]
y_train = y_train[:num_samples_train]
else:

x_train, y_train, x_test, y_test, sim_lf = provide_data_and_sim(
data_source=data_source,
data_spec={'num_samples_train': num_samples_train},
data_seed=data_seed)

# handle pred diff mode
if pred_diff:
Expand Down Expand Up @@ -126,7 +142,7 @@ def regression_experiment(
'num_train_steps': num_train_steps,
'lr': lr,
'hidden_activation': ACTIVATION_DICT[hidden_activation],
'hidden_layer_sizes': [layer_size]*num_layers,
'hidden_layer_sizes': [layer_size] * num_layers,
'normalize_likelihood_std': normalize_likelihood_std,
'learn_likelihood_std': bool(learn_likelihood_std),
'likelihood_exponent': likelihood_exponent,
Expand Down Expand Up @@ -173,7 +189,7 @@ def regression_experiment(
base_bnn=base_bnn,
sim=sim,
use_base_bnn=(model == 'GreyBox'),
num_sim_model_train_steps=5_000,
num_sim_model_train_steps=num_sim_model_train_steps,
)
elif model == 'BNN_MMD_SimPrior':
model = BNN_MMD_SimPrior(domain=sim.domain,
Expand Down Expand Up @@ -220,9 +236,11 @@ def main(args):
if 'added_gp_outputscale' in exp_params:
if exp_params['added_gp_outputscale'] < 0:
if 'racecar' in exp_params['data_source']:
exp_params['added_gp_outputscale'] = OUTPUTSCALES_RCCAR
exp_params['added_gp_outputscale'] = OUTPUTSCALES_RCCAR # [2 * x for x in OUTPUTSCALES_RCCAR]
print(f"Setting added_gp_outputscale to data_source default value from DATASET_CONFIGS "
f"which is {exp_params['added_gp_outputscale']}")
elif 'pendulum' in exp_params['data_source']:
exp_params['added_gp_outputscale'] = [0.05, 0.05, 0.5]
else:
raise AssertionError('passed negative value for added_gp_outputscale')

Expand Down Expand Up @@ -305,20 +323,22 @@ def main(args):
parser.add_argument('--use_wandb', type=bool, default=False)

# data parameters
parser.add_argument('--data_source', type=str, default='racecar_hf')
parser.add_argument('--data_source', type=str, default='real_racecar_v3')
parser.add_argument('--pred_diff', type=int, default=1)
parser.add_argument('--num_samples_train', type=int, default=5000)
parser.add_argument('--data_seed', type=int, default=77698)

# standard BNN parameters
parser.add_argument('--model', type=str, default='BNN_FSVGD')
parser.add_argument('--model', type=str, default='BNN_FSVGD_SimPrior_hf_gp')
parser.add_argument('--model_seed', type=int, default=892616)
parser.add_argument('--likelihood_std', type=float, default=None)
parser.add_argument('--learn_likelihood_std', type=int, default=0)
parser.add_argument('--likelihood_reg', type=float, default=-1.0)
parser.add_argument('--likelihood_reg', type=float, default=0.0)
parser.add_argument('--data_batch_size', type=int, default=8)
parser.add_argument('--min_train_steps', type=int, default=2500)
parser.add_argument('--num_epochs', type=int, default=60)
parser.add_argument('--max_train_steps', type=int, default=100_000)
parser.add_argument('--num_sim_model_train_steps', type=int, default=5_000)
parser.add_argument('--lr', type=float, default=1e-3)
parser.add_argument('--hidden_activation', type=str, default='leaky_relu')
parser.add_argument('--num_layers', type=int, default=3)
Expand Down
57 changes: 31 additions & 26 deletions experiments/lf_hf_transfer_exp/sweep_regression_exp_num_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,53 +13,55 @@
MODEL_SPECIFIC_CONFIG = {
'BNN_SVGD': {
'bandwidth_svgd': {'values': [10.]},
'min_train_steps': {'values': [2500]},
'num_epochs': {'values': [60]},
'lr': {'values': [3e-4]}
# 'likelihood_reg': {'values': [0.0]},
'min_train_steps': {'values': [4000]},
'num_epochs': {'values': [100]},
'lr': {'values': [3e-4]},
'likelihood_reg': {'values': [10.0]},
},
'BNN_FSVGD': {
'bandwidth_svgd': {'values': [0.2]},
'bandwidth_svgd': {'values': [0.4]},
'bandwidth_gp_prior': {'values': [0.4]},
'min_train_steps': {'values': [2500]},
'num_epochs': {'values': [60]},
'min_train_steps': {'values': [4000]},
'num_epochs': {'values': [100]},
'num_measurement_points': {'values': [8]},
'lr': {'values': [3e-4]}
# 'likelihood_reg': {'values': [0.0]},
'lr': {'values': [3e-4]},
'likelihood_reg': {'values': [10.0]},
},

'BNN_FSVGD_SimPrior_gp': {
'bandwidth_svgd': {'values': [0.2]},
'min_train_steps': {'values': [2500]},
'num_epochs': {'values': [60]},
'bandwidth_svgd': {'values': [0.4]},
'min_train_steps': {'values': [4000]},
'num_epochs': {'values': [100]},
'num_measurement_points': {'values': [8]},
'num_f_samples': {'values': [256]},
'added_gp_lengthscale': {'values': [5.]},
'added_gp_outputscale': {'values': [-1]},
'lr': {'values': [3e-4]}
'lr': {'values': [3e-4]},
'likelihood_reg': {'values': [10.0]},
},

'BNN_FSVGD_SimPrior_no_add_gp': {
'bandwidth_svgd': {'values': [0.2]},
'min_train_steps': {'values': [2500]},
'num_epochs': {'values': [60]},
'bandwidth_svgd': {'values': [0.4]},
'min_train_steps': {'values': [4000]},
'num_epochs': {'values': [100]},
'num_measurement_points': {'values': [8]},
'num_f_samples': {'values': [256]},
'added_gp_lengthscale': {'values': [5.]},
'added_gp_outputscale': {'values': [-1]},
'lr': {'values': [3e-4]},
'likelihood_reg': {'values': [10.0]},
},

'SysID': {
},
'GreyBox': {
'bandwidth_svgd': {'values': [0.2]},
'bandwidth_svgd': {'values': [0.4]},
'bandwidth_gp_prior': {'values': [0.4]},
'min_train_steps': {'values': [2500]},
'num_epochs': {'values': [60]},
'min_train_steps': {'values': [4000]},
'num_epochs': {'values': [100]},
'num_measurement_points': {'values': [8]},
'lr': {'values': [3e-4]},
# 'likelihood_reg': {'values': [0.0]},
'likelihood_reg': {'values': [10.0]},
},
}

Expand All @@ -82,6 +84,7 @@ def main(args):
}
# update with model specific sweep ranges
model_name = args.model.replace('_no_add_gp', '')
model_name = model_name.replace('_hf', '')
assert model_name in MODEL_SPECIFIC_CONFIG
sweep_config.update(MODEL_SPECIFIC_CONFIG[model_name])

Expand All @@ -90,9 +93,11 @@ def main(args):
exp_path = os.path.join(exp_base_path, f'{args.data_source}_{args.model}')

if args.data_source == 'racecar_hf':
N_SAMPLES_LIST = [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600]
elif args.data_source == 'pendulum_hf':
N_SAMPLES_LIST = [10, 20, 40, 80, 160, 320, 640, 1280]
elif args.data_source == 'real_racecar_v3':
N_SAMPLES_LIST = [50, 100, 200, 400, 800, 1600, 3200, 6400]
elif args.data_source == 'pendulum':
N_SAMPLES_LIST = [10, 20, 40, 80, 160, 320, 640]
else:
raise NotImplementedError(f'Unknown data source {args.data_source}.')

Expand Down Expand Up @@ -124,15 +129,15 @@ def main(args):

# sweep args
parser.add_argument('--num_hparam_samples', type=int, default=1)
parser.add_argument('--num_model_seeds', type=int, default=3, help='number of model seeds per hparam')
parser.add_argument('--num_data_seeds', type=int, default=3, help='number of model seeds per hparam')
parser.add_argument('--num_cpus', type=int, default=1, help='number of cpus to use')
parser.add_argument('--num_model_seeds', type=int, default=5, help='number of model seeds per hparam')
parser.add_argument('--num_data_seeds', type=int, default=5, help='number of model seeds per hparam')
parser.add_argument('--num_cpus', type=int, default=4, help='number of cpus to use')
parser.add_argument('--run_mode', type=str, default='euler')

# general args
parser.add_argument('--exp_name', type=str, default=f'test_{current_date}')
parser.add_argument('--seed', type=int, default=94563)
parser.add_argument('--gpu', default=False, action='store_true')
parser.add_argument('--gpu', default=True, action='store_true')
parser.add_argument('--yes', default=False, action='store_true')

# data parameters
Expand Down

0 comments on commit 8c3f6ed

Please sign in to comment.