def launch_trials()

in lm_human_preferences/utils/launch.py [0:0]


def launch_trials(name, fn, trials, hparam_class, extra_hparams=None, dry_run=False, mpi=1, mode='local', save_dir=None):
    jobs = []
    for trial in trials:
        descriptors = []
        kwargs = {}
        for k, v, s in trial:
            if k is not None:
                if k in kwargs:
                    print(f'WARNING: overriding key {k} from {kwargs[k]} to {v}')
                kwargs[k] = v
            if s.get('descriptor'):
                descriptors.append(str(s['descriptor']))
        hparams = hparam_class()
        hparams.override_from_dict(kwargs)
        if extra_hparams:
            hparams.override_from_str_dict(extra_hparams)
        job_name = (name + '/' + '-'.join(descriptors)).rstrip('/')
        hparams.validate()
        if dry_run:
            print(f"{job_name}: {kwargs}")
        else:
            if save_dir:
                hparams.run.save_dir = os.path.join(save_dir, job_name)
            trial_fn = partial(fn, hparams)
            jobs.append(partial(launch, job_name, trial_fn, mpi=mpi, mode=mode))

    parallel(jobs, mode=mode)