forked from hanxiao/daanet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgrid_search.py
More file actions
42 lines (32 loc) · 1.57 KB
/
Copy pathgrid_search.py
File metadata and controls
42 lines (32 loc) · 1.57 KB
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
import itertools
import os
import sys
from ruamel.yaml import YAML
from utils.helper import set_logger, fill_gpu_jobs, get_tmp_yaml
def run():
logger = set_logger()
with open('grid.yaml') as fp:
settings = YAML().load(fp)
test_set = sys.argv[1:] if len(sys.argv) > 1 else settings['common']['config']
all_args = [settings[t] for t in test_set]
entrypoint = settings['common']['entrypoint']
with open('default.yaml') as fp:
settings_default = YAML().load(fp)
os.environ['suffix_model_id'] = settings_default['default']['suffix_model_id']
cmd = ' '.join(['python app.py', entrypoint, '%s'])
all_jobs = []
for all_arg in all_args:
k, v = zip(*[(k, v) for k, v in all_arg.items()])
all_jobs += [{kk: pp for kk, pp in zip(k, p)} for p in itertools.product(*v)]
while all_jobs:
all_jobs = fill_gpu_jobs(all_jobs, logger,
job_parser=lambda x: cmd % get_tmp_yaml(x,
(os.environ['suffix_model_id'] if
os.environ['suffix_model_id'] else
'+'.join(test_set)) + '-'),
wait_until_next=settings['common']['wait_until_next'],
retry_delay=settings['common']['retry_delay'],
do_shuffle=True)
logger.info('all jobs are done!')
if __name__ == '__main__':
run()