Skip to content

Commit d552787

Browse files
committed
o Add json file as input argument
o Need to formalize input variables for better/more variables for variation
1 parent 0614452 commit d552787

File tree

10 files changed

+72
-31
lines changed

10 files changed

+72
-31
lines changed

workflows/rnd_or_grid/data/p3b1_settings.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
"parameters":
33
{
44
"epochs": [1 , 2 ],
5-
"batch_size": [20, 40],
6-
"shared_nnet_spec": [1200, 1400],
7-
"n_fold": [1, 2]
5+
"batch_size": [20, 40]
86
},
97
"samples":
108
{

workflows/rnd_or_grid/python/determineParameters.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,10 @@ def generate_random(values, n_samples, benchmarkName):
5252
t_wd= random.uniform(values[4][0], values[4][1])
5353
result+=str(t_epoch) + ',' + str(t_batch_size) + ',' + str(t_me) + ',' + str(t_wd)
5454
elif(benchmarkName=="p3b1"):
55-
# values = {1:epochs, 2: batch_size, 3: shared_nnet_spec, 4: n_fold}
55+
# values = {1:epochs, 2: batch_size}//, 3: learning_rate, 4: n_fold}
5656
t_epoch= random.randint(values[1][0], values[1][1])
5757
t_batch_size= random.randint(values[2][0], values[2][1])
58-
t_sns= random.randint(values[3][0], values[3][1])
59-
t_nf= random.randint(values[4][0], values[4][1])
60-
result+=str(t_epoch) + ',' + str(t_batch_size) + ',' + str(t_sns) + ',' + str(t_nf)
58+
result+=str(t_epoch) + ',' + str(t_batch_size)
6159
else:
6260
print('ERROR: Tried all possible benchmarks, Invalid benchmark name or json file')
6361
sys.exit(1)
@@ -100,8 +98,8 @@ def generate_random(values, n_samples, benchmarkName):
10098
molecular_epochs = settings.get('parameters').get('molecular_epochs')
10199
weight_decay = settings.get('parameters').get('weight_decay')
102100
#P3B1
103-
shared_nnet_spec = settings.get('parameters').get('shared_nnet_spec')
104-
n_fold = settings.get('parameters').get('n_fold')
101+
# learning_rate = settings.get('parameters').get('learning_rate')
102+
# n_fold = settings.get('parameters').get('n_fold')
105103
#P1B3
106104
test_cell_split = settings.get('parameters').get('test_cell_split')
107105
drop = settings.get('parameters').get('drop')
@@ -122,7 +120,7 @@ def generate_random(values, n_samples, benchmarkName):
122120
elif(benchmarkName=="p2b1"):
123121
values = {1:epochs, 2: batch_size, 3: molecular_epochs, 4: weight_decay}
124122
elif(benchmarkName=="p3b1"):
125-
values = {1:epochs, 2: batch_size, 3: shared_nnet_spec, 4: n_fold}
123+
values = {1:epochs, 2: batch_size}
126124
else:
127125
print('ERROR: Tried all possible benchmarks, Invalid benchmark name or json file')
128126
sys.exit(1)

workflows/rnd_or_grid/python/evaluateOne.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@
6262
hyper_parameter_map = {'epochs' : int(integs[0])}
6363
hyper_parameter_map['framework'] = 'keras'
6464
hyper_parameter_map['batch_size'] = int(integs[1])
65-
hyper_parameter_map['shared_nnet_spec'] = int(integs[2])
66-
hyper_parameter_map['n_fold'] = int(integs[3])
6765
hyper_parameter_map['run_id'] = parameterString
6866
# hyper_parameter_map['instance_directory'] = os.environ['TURBINE_OUTPUT']
6967
hyper_parameter_map['save'] = os.environ['TURBINE_OUTPUT']+ "/output-"+str(os.getpid())

workflows/rnd_or_grid/python/nt3_tc1_runner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,12 @@ def run(hyper_parameter_map):
6161
framework = sys.argv[4]
6262
exp_id = sys.argv[5]
6363
run_id = sys.argv[6]
64+
benchmark_timeout = int(sys.argv[7])
6465
hyper_parameter_map = runner_utils.init(param_string, instance_directory, framework, 'save')
6566
hyper_parameter_map['model_name'] = model_name
6667
hyper_parameter_map['experiment_id'] = exp_id
6768
hyper_parameter_map['run_id'] = run_id
69+
hyper_parameter_map['timeout'] = benchmark_timeout
6870
# clear sys.argv so that argparse doesn't object
6971
sys.argv = ['nt3_tc1_runner']
7072
result = run(hyper_parameter_map)

workflows/rnd_or_grid/python/p1b1_runner.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import json
88
import os
99
import p1b1
10-
import runner_utils
1110

1211
def run(hyper_parameter_map):
1312
framework = hyper_parameter_map['framework']
@@ -25,8 +24,6 @@ def run(hyper_parameter_map):
2524

2625
# params is python dictionary
2726
params = pkg.initialize_parameters()
28-
runner_utils.format_params(hyper_parameter_map)
29-
3027
for k,v in hyper_parameter_map.items():
3128
#if not k in params:
3229
# raise Exception("Parameter '{}' not found in set of valid arguments".format(k))

workflows/rnd_or_grid/python/p2b1_runner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ def run(hyper_parameter_map):
4646
framework = sys.argv[3]
4747
exp_id = sys.argv[4]
4848
run_id = sys.argv[5]
49+
benchmark_timeout = int(sys.argv[6])
4950
hyper_parameter_map = runner_utils.init(param_string, instance_directory,
5051
framework, 'save_path')
5152
hyper_parameter_map['experiment_id'] = exp_id
5253
hyper_parameter_map['run_id'] = run_id
54+
hyper_parameter_map['timeout'] = benchmark_timeout
5355
# clear sys.argv so that argparse doesn't object
5456
sys.argv = ['p2b1_runner']
5557
result = run(hyper_parameter_map)

workflows/rnd_or_grid/python/p3b1_runner.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,39 @@
88
import os
99
import p3b1
1010
import runner_utils
11+
import socket
12+
13+
node_pid = "%s,%i" % (socket.gethostname(), os.getpid())
14+
print("node,pid: " + node_pid)
15+
16+
logger = None
17+
18+
def get_logger():
19+
""" Set up logging """
20+
global logger
21+
if logger is not None:
22+
return logger
23+
import logging, sys
24+
logger = logging.getLogger(__name__)
25+
logger.setLevel(logging.DEBUG)
26+
h = logging.StreamHandler(stream=sys.stdout)
27+
fmtr = logging.Formatter('%(asctime)s %(name)s %(levelname)-9s %(message)s',
28+
datefmt='%Y/%m/%d %H:%M:%S')
29+
h.setFormatter(fmtr)
30+
logger.addHandler(h)
31+
return logger
1132

1233
def run(hyper_parameter_map):
34+
35+
logger = get_logger()
1336
framework = hyper_parameter_map['framework']
37+
logger.debug("IMPORT START")
1438
if framework == 'keras':
1539
import p3b1_baseline_keras2
1640
pkg = p3b1_baseline_keras2
1741
else:
1842
raise ValueError("Unsupported framework: {}".format(framework))
43+
logger.debug("IMPORT STOP")
1944

2045
# params is python dictionary
2146
params = pkg.initialize_parameters()
@@ -26,8 +51,12 @@ def run(hyper_parameter_map):
2651
# raise Exception("Parameter '{}' not found in set of valid arguments".format(k))
2752
params[k] = v
2853

54+
logger.debug("WRITE_PARAMS START")
2955
runner_utils.write_params(params, hyper_parameter_map)
56+
logger.debug("WRITE_PARAMS STOP")
57+
logger.debug("DO_N_FOLD START")
3058
avg_loss = pkg.do_n_fold(params)
59+
logger.debug("DO_N_FOLD STOP")
3160

3261
if framework == 'keras':
3362
# works around this error:
@@ -41,16 +70,28 @@ def run(hyper_parameter_map):
4170
return avg_loss
4271

4372
if __name__ == '__main__':
73+
logger = get_logger()
74+
logger.debug("RUN START")
75+
4476
param_string = sys.argv[1]
4577
instance_directory = sys.argv[2]
4678
framework = sys.argv[3]
4779
exp_id = sys.argv[4]
4880
run_id = sys.argv[5]
81+
benchmark_timeout = int(sys.argv[6])
82+
83+
logger.debug("RUN INIT START")
84+
4985
hyper_parameter_map = runner_utils.init(param_string, instance_directory,
5086
framework, 'save_path')
87+
logger.debug("RUN INIT STOP")
5188
hyper_parameter_map['experiment_id'] = exp_id
5289
hyper_parameter_map['run_id'] = run_id
90+
hyper_parameter_map['timeout'] = benchmark_timeout
5391
# clear sys.argv so that argparse doesn't object
5492
sys.argv = ['p3b1_runner']
5593
result = run(hyper_parameter_map)
94+
logger.debug("WRITE OUTPUT START")
5695
runner_utils.write_output(result, instance_directory)
96+
logger.debug("WRITE OUTPUT STOP")
97+
logger.debug("RUN STOP")

workflows/rnd_or_grid/python/test/test_runners.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ def main():
1616

1717

1818
#1 # p1b1 - works
19-
# hyper_parameter_map['save'] = './p1bl1_testing_failure'
20-
print("STARTING#####P1B1##########")
21-
p1b1_validation_loss = p1b1_runner.run(hyper_parameter_map)
22-
print("DONE##########P1B1#####")
19+
# # hyper_parameter_map['save'] = './p1bl1_testing_failure'
20+
# print("STARTING#####P1B1##########")
21+
# p1b1_validation_loss = p1b1_runner.run(hyper_parameter_map)
22+
# print("DONE##########P1B1#####")
2323

2424

25-
#2 # p1b3 - works too big for desktop
26-
print("STARTING#####P1B3##########")
27-
p1b3_validation_loss = p1b3_runner.run(hyper_parameter_map)
28-
print("DONE######P1B3#########")
25+
# #2 # p1b3 - works too big for desktop
26+
# print("STARTING#####P1B3##########")
27+
# p1b3_validation_loss = p1b3_runner.run(hyper_parameter_map)
28+
# print("DONE######P1B3#########")
2929

30-
#3 # p2b1 - works
31-
print("STARTING#####P2B1##########")
32-
p2b1_validation_loss = p2b1_runner.run(hyper_parameter_map)
33-
print("DONE#####P2B1##########")
30+
# #3 # p2b1 - works
31+
# print("STARTING#####P2B1##########")
32+
# p2b1_validation_loss = p2b1_runner.run(hyper_parameter_map)
33+
# print("DONE#####P2B1##########")
3434

3535
#4 # p3b1 - fails - ValueError: invalid literal for int() with base 10: '1200;1200'
3636
print("STARTING#####P3B1##########")

workflows/rnd_or_grid/swift/rnd_or_grid.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ make_dir(turbine_output);
4242
// Get parameters
4343
benchmark = argv("benchmark_name");
4444
searchType = argv("search_type");
45-
settingsFilename = app_home+"/../data/"+benchmark+"_settings.json";
45+
inputFile = argv("input_file");
46+
settingsFilename = app_home+"/../data/"+inputFile;
4647
string sweepParamFile = turbine_output+"/sweep-parameters.txt";
4748
file parametersFile<sweepParamFile> = determineParameters(settingsFilename, benchmark, searchType);
4849
parametersString = read(parametersFile);

workflows/rnd_or_grid/swift/run

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
# Usage: ./run
44
#
55

6-
if [ "$#" -ne 3 ]; then
6+
if [ "$#" -ne 4 ]; then
77
script_name=$(basename $0)
8-
echo "Usage: ${script_name} EXPERIMENT_ID (run1_p1b1) BENCHMARKS_NAME (eg. p1b1) SEARCH_TYPE (eg. grid or random"
8+
echo "Usage: ${script_name} EXPERIMENT_ID (run1_p1b1) BENCHMARKS_NAME (eg. p1b1) SEARCH_TYPE (eg. grid or random) INPUT_JSON"
9+
echo "Example: ./run p1b1_experiment1 p1b1 random p1b1_settings.json"
10+
echo "-This creates a p1b1_experiment1 directory in ../experiments"
11+
echo " uses random scheme for variables specified in ../data/p1b1_settings.json file"
912
exit 1
1013
fi
1114

@@ -23,6 +26,7 @@ export PYTHONPATH=$PYTHONPATH:$PROJECT_ROOT/python:$RUNNERS_DIR:$PROJECT_ROOT/..
2326
export EXPID=$1
2427
B_NAME=$2
2528
S_NAME=$3
29+
JSON_F=$4
2630

2731
export TURBINE_OUTPUT=$APP_HOME/../experiments/$EXPID
2832

@@ -51,4 +55,4 @@ echo $PYTHONPATH
5155
# remove -l option for removing printing processors ranks
5256
# settings.json file has all the parameter combinations to be tested
5357
echo swift-t -n $PROCS $APP_HOME/grid-sweep.swift $*
54-
swift-t -l -n $PROCS $APP_HOME/rnd_or_grid.swift $* --benchmark_name=$B_NAME --search_type=$S_NAME
58+
swift-t -l -n $PROCS $APP_HOME/rnd_or_grid.swift $* --benchmark_name=$B_NAME --search_type=$S_NAME --input_file=$JSON_F

0 commit comments

Comments
 (0)