def _test_experiment_in_separate_process(rootpath): try: base_model, evaluator = _mnist_net('simple', {'max_epochs': 1}) search_strategy = strategy.Random() exp = RetiariiExperiment(base_model, evaluator, strategy=search_strategy) exp_config = RetiariiExeConfig('local') exp_config.experiment_name = 'mnist_unittest' exp_config.trial_concurrency = 1 exp_config.max_trial_number = 1 exp_config._trial_command_params = nas_experiment_trial_params(rootpath) exp.run(exp_config) ensure_success(exp) assert isinstance(exp.export_top_models()[0], dict) finally: # https://stackoverflow.com/questions/34506638/how-to-register-atexit-function-in-pythons-multiprocessing-subprocess import atexit atexit._run_exitfuncs()
def test_multi_trial(model, pytestconfig): evaluator_kwargs = { 'max_epochs': 1 } base_model, evaluator = _mnist_net(model, evaluator_kwargs) search_strategy = strategy.Random() exp = RetiariiExperiment(base_model, evaluator, strategy=search_strategy) exp_config = RetiariiExeConfig('local') exp_config.experiment_name = 'mnist_unittest' exp_config.trial_concurrency = 1 exp_config.max_trial_number = 1 exp_config._trial_command_params = nas_experiment_trial_params(pytestconfig.rootpath) exp.run(exp_config) ensure_success(exp) assert isinstance(exp.export_top_models()[0], dict) exp.stop()
trainer = cgo.Classification(train_dataloader=pl.DataLoader( train_dataset, batch_size=100), val_dataloaders=pl.DataLoader(test_dataset, batch_size=100), max_epochs=1, limit_train_batches=0.2) applied_mutators = [BlockMutator('mutable_0'), BlockMutator('mutable_1')] simple_strategy = TPEStrategy() exp = RetiariiExperiment(base_model, trainer, applied_mutators, simple_strategy) exp_config = RetiariiExeConfig('remote') exp_config.experiment_name = 'darts_search' exp_config.trial_concurrency = 3 exp_config.max_trial_number = 10 exp_config.trial_gpu_number = 1 exp_config.training_service.reuse_mode = True rm_conf = RemoteMachineConfig() rm_conf.host = '127.0.0.1' rm_conf.user = '******' rm_conf.password = '******' rm_conf.port = 22 rm_conf.python_path = '/home/xxx/py38/bin' rm_conf.gpu_indices = [0, 1, 2] rm_conf.use_active_gpu = True rm_conf.max_trial_number_per_gpu = 3
best_val_ppl ) # reports best validation ppl to nni as final result of one trial if __name__ == "__main__": train_iter = WikiText2(split='train') tokenizer = get_tokenizer('basic_english') vocab = build_vocab_from_iterator(map(tokenizer, train_iter), specials=['<unk>']) vocab.set_default_index(vocab['<unk>']) n_token = len(vocab) base_model = Transformer(n_token) evaluator = FunctionalEvaluator(fit) exp = RetiariiExperiment(base_model, evaluator, [], strategy.Random()) exp_config = RetiariiExeConfig('local') exp_config.experiment_name = 'transformer tuning' exp_config.trial_concurrency = 3 # please change configurations accordingly exp_config.max_trial_number = 25 exp_config.trial_gpu_number = 1 exp_config.training_service.use_active_gpu = False export_formatter = 'dict' exp.run(exp_config, 8081) print('Final model:') for model_code in exp.export_top_models(optimize_mode='minimize', formatter=export_formatter): print(model_code)
transform=transform) trainer = pl.Classification(train_dataloader=pl.DataLoader(train_dataset, batch_size=100), val_dataloaders=pl.DataLoader(test_dataset, batch_size=100), max_epochs=2, gpus=1, limit_train_batches=0.1, limit_val_batches=0.1) simple_strategy = strategy.Random() exp = RetiariiExperiment(base_model, trainer, [], simple_strategy) exp_config = RetiariiExeConfig('local') exp_config.experiment_name = 'mnist_search' exp_config.trial_concurrency = 2 exp_config.max_trial_number = args.budget exp_config.trial_gpu_number = 1 exp_config.training_service.use_active_gpu = True # Integration test GPU has a Xorg running export_formatter = 'dict' if args.exec == 'graph': exp_config.execution_engine = 'base' export_formatter = 'code' exp.run(exp_config, args.port) print('Final model:') for model_code in exp.export_top_models(formatter=export_formatter): print(model_code)
transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)), ]) valid_transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)), ]) train_dataset = serialize(CIFAR10, root='data/cifar10', train=True, download=True, transform=train_transform) test_dataset = serialize(CIFAR10, root='data/cifar10', train=False, download=True, transform=valid_transform) trainer = pl.Classification(train_dataloader=pl.DataLoader(train_dataset, batch_size=100), val_dataloaders=pl.DataLoader(test_dataset, batch_size=100), max_epochs=1, limit_train_batches=0.2) applied_mutators = [ BlockMutator('mutable_0'), BlockMutator('mutable_1') ] simple_strategy = TPEStrategy() exp = RetiariiExperiment(base_model, trainer, applied_mutators, simple_strategy) exp_config = RetiariiExeConfig('local') exp_config.experiment_name = 'mnasnet_search' exp_config.trial_concurrency = 2 exp_config.max_trial_number = 10 exp_config.training_service.use_active_gpu = False exp.run(exp_config, 8097)