in summarize_from_feedback/utils/experiments.py [0:0]
def get_experiment_jobs(name, launch_fn, trials, hparam_class=None) -> List[jobs.Job]:
if hparam_class is None:
hparam_class = get_annotation_of_only_argument(launch_fn)
# Maps experiment def key to argument name for jobs.launch; these get pulled out
launch_kwarg_keys = dict(mpi="mpi", mode="mode")
to_launch = []
for trial in trials:
descriptors = []
trial_bindings = []
trial_bindings_dict = {} # only used for message
# Extract bindings & descriptors from the trial
for k, v, s in trial:
if k is not None:
if k in trial_bindings_dict:
print(f"NOTE: overriding key {k} from {trial_bindings_dict[k]} to {v}")
trial_bindings.append((k, v))
trial_bindings_dict[k] = v
if "descriptor" in s and s["descriptor"] is not "":
descriptors.append(str(s["descriptor"]))
# Pull out arguments for jobs.launch
launch_H = jobs.JobHParams()
launch_H.name = "/".join([name] + descriptors)
filtered_trial_bindings = []
dry_run = False
for k, v in trial_bindings:
if k in launch_kwarg_keys:
setattr(launch_H, launch_kwarg_keys[k], v)
elif k == "dry_run":
dry_run = v
else:
filtered_trial_bindings.append((k, v))
if dry_run:
print(f"{launch_H.name}: {filtered_trial_bindings}")
else:
hparams = hparam_class()
hparams.override_from_pairs(filtered_trial_bindings)
to_launch.append(jobs.Job(fn=partial(launch_fn, hparams), params=launch_H))
return to_launch