-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlauncher.py
69 lines (59 loc) · 3.38 KB
/
launcher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import yaml
import argparse
parser = argparse.ArgumentParser(description='Arguments of program')
parser.add_argument('config_file', metavar='F', type=str, help='Name of the config file')
args = parser.parse_args()
with open(args.config_file, 'r') as file:
arguments = yaml.safe_load(file)
args_str = '--task_id ' + arguments['id']
args_str += ' --dist_port ' + str(arguments['port'])
args_str += ' --loss ' + arguments['experiment']['loss']
args_str += ' --method ' + arguments['experiment']['method']
args_str += ' --task ' + str(arguments['experiment']['task'])
args_str += ' --model ' + str(arguments['experiment']['model_arch'])
args_str += ' --img-width ' + str(arguments['dataset']['image_width'])
args_str += ' --dataset ' + str(arguments['dataset']['dataset_path'])
args_str += ' --world_size ' + str(len(arguments['gpus']))
if arguments['experiment']['method'] == 'pranc' or arguments['experiment']['method'] == 'pranc_bin' or arguments['experiment']['method'] == 'ppb' or arguments['experiment']['method'] == 'pranc_otf':
if arguments['experiment']['mode'] == 'train':
args_str += ' --pranc_lr ' + str(arguments['experiment']['lr'])
args_str += ' --save_path ' + str(arguments['monitor']['save_path'])
arguments['experiment']['lr'] = 1.
args_str += ' --seed ' + str(arguments['pranc']['seed'])
if arguments['experiment']['method'] == 'pranc_otf':
args_str += ' --num_alpha_enc ' + str(arguments['pranc']['num_alpha_enc'])
args_str += ' --num_alpha_cls ' + str(arguments['pranc']['num_alpha_cls'])
else:
args_str += ' --num_alpha ' + str(arguments['pranc']['num_alpha'])
if arguments['experiment']['method'] == 'ppb':
args_str += ' --num_beta ' + str(arguments['pranc']['num_beta'])
if arguments['experiment']['scheduler'] != 'none':
args_str += ' --scheduler ' + arguments['experiment']['scheduler']
if arguments['experiment']['scheduler'] == 'step':
args_str += ' --scheduler_step ' + str(arguments['experiment']['step'])
args_str += ' --scheduler_gamma ' + str(arguments['experiment']['gamma'])
if 'weight_decay' in arguments['experiment'].keys():
args_str += ' --weight-decay ' + str(arguments['experiment']['weight_decay'])
if 'momentum' in arguments['experiment'].keys():
args_str += ' --momentum ' + str(arguments['experiment']['momentum'])
if arguments['experiment']['mode'] == 'train':
args_str += ' --lr ' + str(arguments['experiment']['lr'])
args_str += ' --epoch ' + str(arguments['experiment']['epoch'])
args_str += ' --optimizer ' + arguments['experiment']['optimizer']
args_str += ' --log-rate ' + str(arguments['monitor']['log_rate'])
args_str += ' --save_model ' + str(arguments['monitor']['save_model'])
args_str += ' --batch_size ' + str(arguments['experiment']['batch_size'])
elif arguments['experiment']['mode'] == 'test':
args_str += ' --lr 0'
args_str += ' --pranc_lr 0'
args_str += ' --epoch 0'
args_str += ' --batch_size 100'
args_str += ' --resume ' + str(arguments['experiment']['load_model'])
if 'resume' in arguments['experiment'].keys():
args_str += ' --resume ' + str(arguments['experiment']['resume'])
gpus = ''
for ind in arguments['gpus']:
gpus += str(ind) + ','
print('CUDA_VISIBLE_DEVICES=' + gpus[:-1] + ' python3 main_distrib.py ' + args_str )
os.system('CUDA_VISIBLE_DEVICES=' + gpus[:-1] + ' python3 main_distrib.py ' + args_str )