Ejemplo n.º 1
0
    def setUp(self):
        if os.path.isdir('savedata'):
            shutil.rmtree('savedata', ignore_errors=True)
        os.mkdir('savedata')

        self.hparam = generate_random_hparam()
        self.hparam['h_0'] = 1.0
        self.hparam['h_1'] = 0.0
    def setUp(self):
        self.hp = generate_random_hparam()
        self.hp_good = {
            'opt_case': {
                'optimizer': 'gd',
                'lr': 0.0001
            },
            'batch_size': 256
        }
        self.save_base_dir = './savedata/model_'
        self.data_dir = '/home/K8S/dataset/mnist'

        subprocess.call(['rm', '-rf', 'savedata'])
        subprocess.call(['mkdir', 'savedata'])
Ejemplo n.º 3
0
    def __init__(self,
                 pop_size,
                 epochs_per_round,
                 do_exploit=True,
                 do_explore=True):
        print("Initializing populations")
        self.all_models = []
        self.epochs_per_round = epochs_per_round
        self.do_exploit = do_exploit
        self.do_explore = do_explore
        self.pop_size = pop_size

        for i in range(pop_size):
            print("Generating HPs for model {}".format(i))
            hp = generate_random_hparam()
            #self.all_models.append(ToyModel(i, hp, 'savedata/model_'))
            self.all_models.append(MNISTModel(i, hp, 'savedata/model_'))
Ejemplo n.º 4
0
    def dispatch_hparams_to_workers(self):
        all_hparams_need_training = []

        for i in range(self.pop_size):
            all_hparams_need_training.append(generate_random_hparam())
        '''if os.path.isfile('initial_hp.json'):
            print('Initialize from initial_hp.json')
            all_hparams_need_training = []
            with open('initial_hp.json', 'r') as fp:
                data = json.load(fp)
            for i in data:
                all_hparams_need_training.append(i['hparams'])
            self.pop_size = len(all_hparams_need_training)'''

        print('Population size = {}'.format(len(all_hparams_need_training)))
        graphs_per_worker = math.ceil(
            float(self.pop_size) / float((self.comm.Get_size() - 1)))
        graphs_to_make = len(all_hparams_need_training)

        if self.do_explore and not self.do_exploit:
            is_explore_only = True
        else:
            is_explore_only = False

        reqs = []
        num_workers_sent = 0
        for i in range(0, self.comm.Get_size()):
            if i != self.master_rank:
                begin = num_workers_sent * graphs_per_worker
                end = min(graphs_per_worker, graphs_to_make) + begin
                hparams_for_the_worker = all_hparams_need_training[begin:end]
                reqs.append(
                    self.comm.isend(
                        (WorkerInstruction.ADD_GRAPHS, hparams_for_the_worker,
                         begin, is_explore_only),
                        dest=i))
                graphs_to_make -= graphs_per_worker
                num_workers_sent += 1
        for req in reqs:
            req.wait()
 def test_perturb_hparams(self):
     model = MNISTModel(0, generate_random_hparam(), 'savedata/model_')
     model.perturb_hparams()
 def test_basic(self):
     model = MNISTModel(0, generate_random_hparam(), 'savedata/model_')