omniopt2 8129__py3-none-any.whl → 8167__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of omniopt2 might be problematic. Click here for more details.
- .omniopt.py +72 -25
- omniopt +1 -1
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt.py +72 -25
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/omniopt +1 -1
- {omniopt2-8129.dist-info → omniopt2-8167.dist-info}/METADATA +1 -1
- {omniopt2-8129.dist-info → omniopt2-8167.dist-info}/RECORD +37 -37
- omniopt2.egg-info/PKG-INFO +1 -1
- pyproject.toml +1 -1
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.colorfunctions.sh +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.general.sh +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.helpers.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_cpu_ram_usage.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_general.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_gpu_usage.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_kde.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_scatter.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_scatter_generation_method.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_scatter_hex.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_time_and_exit_code.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_trial_index_result.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_worker.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.random_generator.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.shellscript_functions +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/.tpe.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/LICENSE +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/apt-dependencies.txt +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/omniopt_docker +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/omniopt_evaluate +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/omniopt_plot +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/omniopt_share +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/pylint.rc +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/requirements.txt +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/setup.py +0 -0
- {omniopt2-8129.data → omniopt2-8167.data}/data/bin/test_requirements.txt +0 -0
- {omniopt2-8129.dist-info → omniopt2-8167.dist-info}/WHEEL +0 -0
- {omniopt2-8129.dist-info → omniopt2-8167.dist-info}/licenses/LICENSE +0 -0
- {omniopt2-8129.dist-info → omniopt2-8167.dist-info}/top_level.txt +0 -0
.omniopt.py
CHANGED
|
@@ -65,6 +65,7 @@ _func_call_paths = defaultdict(Counter)
|
|
|
65
65
|
_last_mem = defaultdict(float)
|
|
66
66
|
_leak_threshold_mb = 10.0
|
|
67
67
|
generation_strategy_names: list = []
|
|
68
|
+
default_max_range_difference: int = 1000000
|
|
68
69
|
|
|
69
70
|
_function_name_cache: dict = {}
|
|
70
71
|
|
|
@@ -130,7 +131,7 @@ try:
|
|
|
130
131
|
)
|
|
131
132
|
|
|
132
133
|
def spinner(text: str) -> Any:
|
|
133
|
-
return console.status(f"[bold green]{text}")
|
|
134
|
+
return console.status(f"[bold green]{text}", speed=0.2, refresh_per_second=6)
|
|
134
135
|
|
|
135
136
|
with spinner("Importing logging..."):
|
|
136
137
|
import logging
|
|
@@ -662,6 +663,15 @@ def my_exit(_code: int = 0) -> None:
|
|
|
662
663
|
|
|
663
664
|
print(f"Wallclock-Runtime: {whole_run_time} seconds {human_time}")
|
|
664
665
|
|
|
666
|
+
if is_skip_search() and os.getenv("SKIP_SEARCH_EXIT_CODE"):
|
|
667
|
+
skip_search_exit_code = os.getenv("SKIP_SEARCH_EXIT_CODE")
|
|
668
|
+
|
|
669
|
+
try:
|
|
670
|
+
sys.exit(int(skip_search_exit_code))
|
|
671
|
+
except ValueError:
|
|
672
|
+
print(f"Trying to look for SKIP_SEARCH_EXIT_CODE failed. Exiting with original exit code {_code}")
|
|
673
|
+
sys.exit(_code)
|
|
674
|
+
|
|
665
675
|
sys.exit(_code)
|
|
666
676
|
|
|
667
677
|
def print_green(text: str) -> None:
|
|
@@ -817,6 +827,8 @@ class ConfigLoader:
|
|
|
817
827
|
occ: bool
|
|
818
828
|
force_choice_for_ranges: bool
|
|
819
829
|
dryrun: bool
|
|
830
|
+
range_max_difference: int
|
|
831
|
+
skip_search: bool
|
|
820
832
|
just_return_defaults: bool
|
|
821
833
|
run_mode: str
|
|
822
834
|
|
|
@@ -901,6 +913,8 @@ class ConfigLoader:
|
|
|
901
913
|
optional.add_argument('--run_program_once', type=str, help='Path to a setup script that will run once before the main program starts.')
|
|
902
914
|
optional.add_argument('--worker_generator_path', type=str, help='Path of the run folder where this script should plug itself in as a worker points generator')
|
|
903
915
|
optional.add_argument('--save_to_database', help='Save all entries into a sqlite3 database', action='store_true', default=False)
|
|
916
|
+
optional.add_argument('--range_max_difference', help=f'Max. difference for range, default is {default_max_range_difference}', default=default_max_range_difference, type=int)
|
|
917
|
+
optional.add_argument('--skip_search', help='Skips the actual search, uses exit code 0 if not the environment variable SKIP_SEARCH_EXIT_CODE is set', action='store_true', default=False)
|
|
904
918
|
|
|
905
919
|
speed.add_argument('--dont_warm_start_refitting', help='Do not keep Model weights, thus, refit for every generator (may be more accurate, but slower)', action='store_true', default=False)
|
|
906
920
|
speed.add_argument('--refit_on_cv', help='Refit on Cross-Validation (helps in accuracy, but makes generating new points slower)', action='store_true', default=False)
|
|
@@ -966,7 +980,8 @@ class ConfigLoader:
|
|
|
966
980
|
if file_format == 'json':
|
|
967
981
|
return json.load(file)
|
|
968
982
|
except (Exception, json.decoder.JSONDecodeError) as e:
|
|
969
|
-
print_red(f"Error parsing {file_format} file '{config_path}'
|
|
983
|
+
print_red(f"Error parsing {file_format} file '{config_path}'")
|
|
984
|
+
print_debug(f"Error parsing {file_format} file {config_path}: {e}")
|
|
970
985
|
self._parsing_arguments_loader.stop()
|
|
971
986
|
print("Exit-Code: 5")
|
|
972
987
|
sys.exit(5)
|
|
@@ -1142,6 +1157,15 @@ with spinner("Parsing arguments...") as parsing_arguments_loader:
|
|
|
1142
1157
|
loader = ConfigLoader(parsing_arguments_loader)
|
|
1143
1158
|
args = loader.parse_arguments()
|
|
1144
1159
|
|
|
1160
|
+
def is_skip_search() -> bool:
|
|
1161
|
+
if args.skip_search:
|
|
1162
|
+
return True
|
|
1163
|
+
|
|
1164
|
+
if os.getenv("SKIP_SEARCH"):
|
|
1165
|
+
return True
|
|
1166
|
+
|
|
1167
|
+
return False
|
|
1168
|
+
|
|
1145
1169
|
original_result_names = args.result_names
|
|
1146
1170
|
|
|
1147
1171
|
if args.seed is not None:
|
|
@@ -1606,7 +1630,7 @@ class InteractiveCLIGenerationNode(ExternalGenerationNode):
|
|
|
1606
1630
|
constraints: Optional[Any]
|
|
1607
1631
|
fit_time_since_gen: float
|
|
1608
1632
|
|
|
1609
|
-
def __init__(
|
|
1633
|
+
def __init__(
|
|
1610
1634
|
self: Any,
|
|
1611
1635
|
node_name: str = "INTERACTIVE_GENERATOR",
|
|
1612
1636
|
) -> None:
|
|
@@ -2206,7 +2230,7 @@ class SearchSpaceExhausted (Exception):
|
|
|
2206
2230
|
pass
|
|
2207
2231
|
|
|
2208
2232
|
NR_INSERTED_JOBS: int = 0
|
|
2209
|
-
|
|
2233
|
+
submitit_executor: Union[LocalExecutor, AutoExecutor, None] = None
|
|
2210
2234
|
|
|
2211
2235
|
NR_OF_0_RESULTS: int = 0
|
|
2212
2236
|
|
|
@@ -3093,6 +3117,14 @@ def get_value_type_and_log_scale(this_args: Union[str, list], j: int) -> Tuple[i
|
|
|
3093
3117
|
|
|
3094
3118
|
return skip, value_type, log_scale
|
|
3095
3119
|
|
|
3120
|
+
def check_for_too_high_differences(lower_bound: Union[int, float], upper_bound: Union[int, float]) -> None:
|
|
3121
|
+
bound_diff = abs(lower_bound - upper_bound)
|
|
3122
|
+
|
|
3123
|
+
if bound_diff > args.range_max_difference:
|
|
3124
|
+
print_red(f"The difference between {lower_bound} and {upper_bound} was too high, these large numbers can cause memory leaks. Difference was: {bound_diff}, max difference is {args.range_max_difference}")
|
|
3125
|
+
|
|
3126
|
+
sys.exit(235)
|
|
3127
|
+
|
|
3096
3128
|
def parse_range_param(classic_params: list, params: list, j: int, this_args: Union[str, list], name: str, search_space_reduction_warning: bool) -> Tuple[int, list, list, bool]:
|
|
3097
3129
|
check_factorial_range()
|
|
3098
3130
|
check_range_params_length(this_args)
|
|
@@ -3102,7 +3134,7 @@ def parse_range_param(classic_params: list, params: list, j: int, this_args: Uni
|
|
|
3102
3134
|
|
|
3103
3135
|
lower_bound, upper_bound = get_bounds(this_args, j)
|
|
3104
3136
|
|
|
3105
|
-
|
|
3137
|
+
die_if_lower_and_upper_bound_equal_zero(lower_bound, upper_bound)
|
|
3106
3138
|
|
|
3107
3139
|
lower_bound, upper_bound = switch_lower_and_upper_if_needed(name, lower_bound, upper_bound)
|
|
3108
3140
|
|
|
@@ -3114,6 +3146,12 @@ def parse_range_param(classic_params: list, params: list, j: int, this_args: Uni
|
|
|
3114
3146
|
|
|
3115
3147
|
lower_bound, upper_bound = get_bounds_from_previous_data(name, lower_bound, upper_bound)
|
|
3116
3148
|
|
|
3149
|
+
check_for_too_high_differences(lower_bound, upper_bound)
|
|
3150
|
+
|
|
3151
|
+
if lower_bound == upper_bound:
|
|
3152
|
+
print_red(f"Lower bound {lower_bound} was equal to upper bound {upper_bound}. Please fix this. Cannot continue.")
|
|
3153
|
+
my_exit(181)
|
|
3154
|
+
|
|
3117
3155
|
search_space_reduction_warning = check_bounds_change_due_to_previous_job(name, lower_bound, upper_bound, search_space_reduction_warning)
|
|
3118
3156
|
|
|
3119
3157
|
param = create_range_param(name, lower_bound, upper_bound, value_type, log_scale)
|
|
@@ -3271,9 +3309,9 @@ def check_range_params_length(this_args: Union[str, list]) -> None:
|
|
|
3271
3309
|
if len(this_args) != 5 and len(this_args) != 4 and len(this_args) != 6:
|
|
3272
3310
|
_fatal_error("\n⚠ --parameter for type range must have 4 (or 5, the last one being optional and float by default, or 6, while the last one is true or false) parameters: <NAME> range <START> <END> (<TYPE (int or float)>, <log_scale: bool>)", 181)
|
|
3273
3311
|
|
|
3274
|
-
def
|
|
3312
|
+
def die_if_lower_and_upper_bound_equal_zero(lower_bound: Union[int, float], upper_bound: Union[int, float]) -> None:
|
|
3275
3313
|
if upper_bound is None or lower_bound is None:
|
|
3276
|
-
_fatal_error("
|
|
3314
|
+
_fatal_error("die_if_lower_and_upper_bound_equal_zero: upper_bound or lower_bound is None. Cannot continue.", 91)
|
|
3277
3315
|
if upper_bound == lower_bound:
|
|
3278
3316
|
if lower_bound == 0:
|
|
3279
3317
|
_fatal_error(f"⚠ Lower bound and upper bound are equal: {lower_bound}, cannot automatically fix this, because they -0 = +0 (usually a quickfix would be to set lower_bound = -upper_bound)", 181)
|
|
@@ -7331,7 +7369,7 @@ def submit_new_job(parameters: Union[dict, str], trial_index: int) -> Any:
|
|
|
7331
7369
|
|
|
7332
7370
|
start = time.time()
|
|
7333
7371
|
|
|
7334
|
-
new_job =
|
|
7372
|
+
new_job = submitit_executor.submit(evaluate, {"params": parameters, "trial_idx": trial_index, "submit_time": int(time.time())})
|
|
7335
7373
|
|
|
7336
7374
|
elapsed = time.time() - start
|
|
7337
7375
|
|
|
@@ -7340,7 +7378,7 @@ def submit_new_job(parameters: Union[dict, str], trial_index: int) -> Any:
|
|
|
7340
7378
|
return new_job
|
|
7341
7379
|
|
|
7342
7380
|
def orchestrator_start_trial(parameters: Union[dict, str], trial_index: int) -> None:
|
|
7343
|
-
if
|
|
7381
|
+
if submitit_executor and ax_client:
|
|
7344
7382
|
new_job = submit_new_job(parameters, trial_index)
|
|
7345
7383
|
submitted_jobs(1)
|
|
7346
7384
|
|
|
@@ -7355,7 +7393,7 @@ def orchestrator_start_trial(parameters: Union[dict, str], trial_index: int) ->
|
|
|
7355
7393
|
print_debug(f"orchestrator_start_trial: appending job {new_job} to global_vars['jobs'], trial_index: {trial_index}")
|
|
7356
7394
|
global_vars["jobs"].append((new_job, trial_index))
|
|
7357
7395
|
else:
|
|
7358
|
-
_fatal_error("
|
|
7396
|
+
_fatal_error("submitit_executor or ax_client could not be found properly", 9)
|
|
7359
7397
|
|
|
7360
7398
|
def handle_exclude_node(stdout_path: str, hostname_from_out_file: Union[None, str]) -> None:
|
|
7361
7399
|
stdout_path = check_alternate_path(stdout_path)
|
|
@@ -7465,8 +7503,8 @@ def execute_evaluation(_params: list) -> Optional[int]:
|
|
|
7465
7503
|
|
|
7466
7504
|
return None
|
|
7467
7505
|
|
|
7468
|
-
if not
|
|
7469
|
-
_fatal_error("
|
|
7506
|
+
if not submitit_executor:
|
|
7507
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
7470
7508
|
|
|
7471
7509
|
return None
|
|
7472
7510
|
|
|
@@ -7521,10 +7559,10 @@ def set_sbatch_environment() -> None:
|
|
|
7521
7559
|
def exclude_defective_nodes() -> None:
|
|
7522
7560
|
excluded_string: str = ",".join(count_defective_nodes())
|
|
7523
7561
|
if len(excluded_string) > 1:
|
|
7524
|
-
if
|
|
7525
|
-
|
|
7562
|
+
if submitit_executor:
|
|
7563
|
+
submitit_executor.update_parameters(exclude=excluded_string)
|
|
7526
7564
|
else:
|
|
7527
|
-
_fatal_error("
|
|
7565
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
7528
7566
|
|
|
7529
7567
|
def handle_failed_job(error: Union[None, Exception, str], trial_index: int, new_job: Optional[Job]) -> None:
|
|
7530
7568
|
if "QOSMinGRES" in str(error) and args.gpus == 0:
|
|
@@ -8821,6 +8859,10 @@ def _create_and_execute_next_runs_run_loop(_max_eval: Optional[int], phase: Opti
|
|
|
8821
8859
|
|
|
8822
8860
|
filtered_trial_index_to_param = {k: v for k, v in trial_index_to_param.items() if k not in abandoned_trial_indices}
|
|
8823
8861
|
|
|
8862
|
+
if is_skip_search():
|
|
8863
|
+
print_yellow("Skipping search part")
|
|
8864
|
+
return True, {}
|
|
8865
|
+
|
|
8824
8866
|
if len(filtered_trial_index_to_param):
|
|
8825
8867
|
execute_trials(filtered_trial_index_to_param, phase, _max_eval)
|
|
8826
8868
|
else:
|
|
@@ -8873,17 +8915,17 @@ def get_number_of_steps(_max_eval: int) -> int:
|
|
|
8873
8915
|
return _random_steps
|
|
8874
8916
|
|
|
8875
8917
|
def _set_global_executor() -> None:
|
|
8876
|
-
global
|
|
8918
|
+
global submitit_executor
|
|
8877
8919
|
|
|
8878
8920
|
log_folder: str = f'{get_current_run_folder()}/single_runs/%j'
|
|
8879
8921
|
subjob_uuid = str(uuid.uuid4())
|
|
8880
8922
|
|
|
8881
8923
|
if args.force_local_execution:
|
|
8882
|
-
|
|
8924
|
+
submitit_executor = LocalExecutor(folder=log_folder)
|
|
8883
8925
|
else:
|
|
8884
|
-
|
|
8926
|
+
submitit_executor = AutoExecutor(folder=log_folder)
|
|
8885
8927
|
|
|
8886
|
-
if
|
|
8928
|
+
if submitit_executor:
|
|
8887
8929
|
params = {
|
|
8888
8930
|
"name": f'{global_vars["experiment_name"]}_{run_uuid}_{subjob_uuid}',
|
|
8889
8931
|
"timeout_min": args.worker_timeout,
|
|
@@ -8897,14 +8939,14 @@ def _set_global_executor() -> None:
|
|
|
8897
8939
|
"exclude": args.exclude,
|
|
8898
8940
|
}
|
|
8899
8941
|
|
|
8900
|
-
|
|
8942
|
+
submitit_executor.update_parameters(**params)
|
|
8901
8943
|
|
|
8902
|
-
print_debug("
|
|
8944
|
+
print_debug("submitit_executor.update_parameters(\n" + json.dumps(params, indent=4) + "\n)")
|
|
8903
8945
|
|
|
8904
8946
|
if args.exclude:
|
|
8905
8947
|
print_yellow(f"Excluding the following nodes: {args.exclude}")
|
|
8906
8948
|
else:
|
|
8907
|
-
_fatal_error("
|
|
8949
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
8908
8950
|
|
|
8909
8951
|
def set_global_executor() -> None:
|
|
8910
8952
|
try:
|
|
@@ -10263,7 +10305,13 @@ def run_program_once(params=None) -> None:
|
|
|
10263
10305
|
my_exit(57)
|
|
10264
10306
|
|
|
10265
10307
|
def show_omniopt_call() -> None:
|
|
10266
|
-
|
|
10308
|
+
def remove_ui_url(arg_str):
|
|
10309
|
+
return re.sub(r'(?:--ui_url(?:=\S+)?(?:\s+\S+)?)', '', arg_str).strip()
|
|
10310
|
+
|
|
10311
|
+
original_argv = " ".join(sys.argv[1:])
|
|
10312
|
+
cleaned = remove_ui_url(original_argv)
|
|
10313
|
+
|
|
10314
|
+
original_print(oo_call + " " + cleaned)
|
|
10267
10315
|
|
|
10268
10316
|
def main() -> None:
|
|
10269
10317
|
global RESULT_CSV_FILE, ax_client, LOGFILE_DEBUG_GET_NEXT_TRIALS
|
|
@@ -11006,7 +11054,7 @@ def main_outside() -> None:
|
|
|
11006
11054
|
end_program(True)
|
|
11007
11055
|
|
|
11008
11056
|
def auto_wrap_namespace(namespace: Any) -> Any:
|
|
11009
|
-
enable_beartype = os.getenv("ENABLE_BEARTYPE")
|
|
11057
|
+
enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
|
|
11010
11058
|
|
|
11011
11059
|
excluded_functions = {
|
|
11012
11060
|
"log_time_and_memory_wrapper",
|
|
@@ -11026,7 +11074,6 @@ def auto_wrap_namespace(namespace: Any) -> Any:
|
|
|
11026
11074
|
if (isinstance(obj, types.FunctionType) and name not in excluded_functions):
|
|
11027
11075
|
wrapped = obj
|
|
11028
11076
|
if enable_beartype:
|
|
11029
|
-
print(f"Wrapping function '{name}' in @beartype")
|
|
11030
11077
|
wrapped = beartype(wrapped)
|
|
11031
11078
|
|
|
11032
11079
|
if args.runtime_debug:
|
omniopt
CHANGED
|
@@ -1954,7 +1954,7 @@ EOF
|
|
|
1954
1954
|
sbatch_command=$(echo "$sbatch_command" | sed -e 's#^[[:space:]]*##' -e 's#[[:space:]]*$##')
|
|
1955
1955
|
red_text "Failed to start sbatch job. Command:\n"
|
|
1956
1956
|
red_text "$sbatch_command\n"
|
|
1957
|
-
red_text "Exit-Code: $exit_code\n"
|
|
1957
|
+
red_text "Exit-Code (sbatch): $exit_code\n"
|
|
1958
1958
|
|
|
1959
1959
|
myexit $exit_code
|
|
1960
1960
|
fi
|
|
@@ -65,6 +65,7 @@ _func_call_paths = defaultdict(Counter)
|
|
|
65
65
|
_last_mem = defaultdict(float)
|
|
66
66
|
_leak_threshold_mb = 10.0
|
|
67
67
|
generation_strategy_names: list = []
|
|
68
|
+
default_max_range_difference: int = 1000000
|
|
68
69
|
|
|
69
70
|
_function_name_cache: dict = {}
|
|
70
71
|
|
|
@@ -130,7 +131,7 @@ try:
|
|
|
130
131
|
)
|
|
131
132
|
|
|
132
133
|
def spinner(text: str) -> Any:
|
|
133
|
-
return console.status(f"[bold green]{text}")
|
|
134
|
+
return console.status(f"[bold green]{text}", speed=0.2, refresh_per_second=6)
|
|
134
135
|
|
|
135
136
|
with spinner("Importing logging..."):
|
|
136
137
|
import logging
|
|
@@ -662,6 +663,15 @@ def my_exit(_code: int = 0) -> None:
|
|
|
662
663
|
|
|
663
664
|
print(f"Wallclock-Runtime: {whole_run_time} seconds {human_time}")
|
|
664
665
|
|
|
666
|
+
if is_skip_search() and os.getenv("SKIP_SEARCH_EXIT_CODE"):
|
|
667
|
+
skip_search_exit_code = os.getenv("SKIP_SEARCH_EXIT_CODE")
|
|
668
|
+
|
|
669
|
+
try:
|
|
670
|
+
sys.exit(int(skip_search_exit_code))
|
|
671
|
+
except ValueError:
|
|
672
|
+
print(f"Trying to look for SKIP_SEARCH_EXIT_CODE failed. Exiting with original exit code {_code}")
|
|
673
|
+
sys.exit(_code)
|
|
674
|
+
|
|
665
675
|
sys.exit(_code)
|
|
666
676
|
|
|
667
677
|
def print_green(text: str) -> None:
|
|
@@ -817,6 +827,8 @@ class ConfigLoader:
|
|
|
817
827
|
occ: bool
|
|
818
828
|
force_choice_for_ranges: bool
|
|
819
829
|
dryrun: bool
|
|
830
|
+
range_max_difference: int
|
|
831
|
+
skip_search: bool
|
|
820
832
|
just_return_defaults: bool
|
|
821
833
|
run_mode: str
|
|
822
834
|
|
|
@@ -901,6 +913,8 @@ class ConfigLoader:
|
|
|
901
913
|
optional.add_argument('--run_program_once', type=str, help='Path to a setup script that will run once before the main program starts.')
|
|
902
914
|
optional.add_argument('--worker_generator_path', type=str, help='Path of the run folder where this script should plug itself in as a worker points generator')
|
|
903
915
|
optional.add_argument('--save_to_database', help='Save all entries into a sqlite3 database', action='store_true', default=False)
|
|
916
|
+
optional.add_argument('--range_max_difference', help=f'Max. difference for range, default is {default_max_range_difference}', default=default_max_range_difference, type=int)
|
|
917
|
+
optional.add_argument('--skip_search', help='Skips the actual search, uses exit code 0 if not the environment variable SKIP_SEARCH_EXIT_CODE is set', action='store_true', default=False)
|
|
904
918
|
|
|
905
919
|
speed.add_argument('--dont_warm_start_refitting', help='Do not keep Model weights, thus, refit for every generator (may be more accurate, but slower)', action='store_true', default=False)
|
|
906
920
|
speed.add_argument('--refit_on_cv', help='Refit on Cross-Validation (helps in accuracy, but makes generating new points slower)', action='store_true', default=False)
|
|
@@ -966,7 +980,8 @@ class ConfigLoader:
|
|
|
966
980
|
if file_format == 'json':
|
|
967
981
|
return json.load(file)
|
|
968
982
|
except (Exception, json.decoder.JSONDecodeError) as e:
|
|
969
|
-
print_red(f"Error parsing {file_format} file '{config_path}'
|
|
983
|
+
print_red(f"Error parsing {file_format} file '{config_path}'")
|
|
984
|
+
print_debug(f"Error parsing {file_format} file {config_path}: {e}")
|
|
970
985
|
self._parsing_arguments_loader.stop()
|
|
971
986
|
print("Exit-Code: 5")
|
|
972
987
|
sys.exit(5)
|
|
@@ -1142,6 +1157,15 @@ with spinner("Parsing arguments...") as parsing_arguments_loader:
|
|
|
1142
1157
|
loader = ConfigLoader(parsing_arguments_loader)
|
|
1143
1158
|
args = loader.parse_arguments()
|
|
1144
1159
|
|
|
1160
|
+
def is_skip_search() -> bool:
|
|
1161
|
+
if args.skip_search:
|
|
1162
|
+
return True
|
|
1163
|
+
|
|
1164
|
+
if os.getenv("SKIP_SEARCH"):
|
|
1165
|
+
return True
|
|
1166
|
+
|
|
1167
|
+
return False
|
|
1168
|
+
|
|
1145
1169
|
original_result_names = args.result_names
|
|
1146
1170
|
|
|
1147
1171
|
if args.seed is not None:
|
|
@@ -1606,7 +1630,7 @@ class InteractiveCLIGenerationNode(ExternalGenerationNode):
|
|
|
1606
1630
|
constraints: Optional[Any]
|
|
1607
1631
|
fit_time_since_gen: float
|
|
1608
1632
|
|
|
1609
|
-
def __init__(
|
|
1633
|
+
def __init__(
|
|
1610
1634
|
self: Any,
|
|
1611
1635
|
node_name: str = "INTERACTIVE_GENERATOR",
|
|
1612
1636
|
) -> None:
|
|
@@ -2206,7 +2230,7 @@ class SearchSpaceExhausted (Exception):
|
|
|
2206
2230
|
pass
|
|
2207
2231
|
|
|
2208
2232
|
NR_INSERTED_JOBS: int = 0
|
|
2209
|
-
|
|
2233
|
+
submitit_executor: Union[LocalExecutor, AutoExecutor, None] = None
|
|
2210
2234
|
|
|
2211
2235
|
NR_OF_0_RESULTS: int = 0
|
|
2212
2236
|
|
|
@@ -3093,6 +3117,14 @@ def get_value_type_and_log_scale(this_args: Union[str, list], j: int) -> Tuple[i
|
|
|
3093
3117
|
|
|
3094
3118
|
return skip, value_type, log_scale
|
|
3095
3119
|
|
|
3120
|
+
def check_for_too_high_differences(lower_bound: Union[int, float], upper_bound: Union[int, float]) -> None:
|
|
3121
|
+
bound_diff = abs(lower_bound - upper_bound)
|
|
3122
|
+
|
|
3123
|
+
if bound_diff > args.range_max_difference:
|
|
3124
|
+
print_red(f"The difference between {lower_bound} and {upper_bound} was too high, these large numbers can cause memory leaks. Difference was: {bound_diff}, max difference is {args.range_max_difference}")
|
|
3125
|
+
|
|
3126
|
+
sys.exit(235)
|
|
3127
|
+
|
|
3096
3128
|
def parse_range_param(classic_params: list, params: list, j: int, this_args: Union[str, list], name: str, search_space_reduction_warning: bool) -> Tuple[int, list, list, bool]:
|
|
3097
3129
|
check_factorial_range()
|
|
3098
3130
|
check_range_params_length(this_args)
|
|
@@ -3102,7 +3134,7 @@ def parse_range_param(classic_params: list, params: list, j: int, this_args: Uni
|
|
|
3102
3134
|
|
|
3103
3135
|
lower_bound, upper_bound = get_bounds(this_args, j)
|
|
3104
3136
|
|
|
3105
|
-
|
|
3137
|
+
die_if_lower_and_upper_bound_equal_zero(lower_bound, upper_bound)
|
|
3106
3138
|
|
|
3107
3139
|
lower_bound, upper_bound = switch_lower_and_upper_if_needed(name, lower_bound, upper_bound)
|
|
3108
3140
|
|
|
@@ -3114,6 +3146,12 @@ def parse_range_param(classic_params: list, params: list, j: int, this_args: Uni
|
|
|
3114
3146
|
|
|
3115
3147
|
lower_bound, upper_bound = get_bounds_from_previous_data(name, lower_bound, upper_bound)
|
|
3116
3148
|
|
|
3149
|
+
check_for_too_high_differences(lower_bound, upper_bound)
|
|
3150
|
+
|
|
3151
|
+
if lower_bound == upper_bound:
|
|
3152
|
+
print_red(f"Lower bound {lower_bound} was equal to upper bound {upper_bound}. Please fix this. Cannot continue.")
|
|
3153
|
+
my_exit(181)
|
|
3154
|
+
|
|
3117
3155
|
search_space_reduction_warning = check_bounds_change_due_to_previous_job(name, lower_bound, upper_bound, search_space_reduction_warning)
|
|
3118
3156
|
|
|
3119
3157
|
param = create_range_param(name, lower_bound, upper_bound, value_type, log_scale)
|
|
@@ -3271,9 +3309,9 @@ def check_range_params_length(this_args: Union[str, list]) -> None:
|
|
|
3271
3309
|
if len(this_args) != 5 and len(this_args) != 4 and len(this_args) != 6:
|
|
3272
3310
|
_fatal_error("\n⚠ --parameter for type range must have 4 (or 5, the last one being optional and float by default, or 6, while the last one is true or false) parameters: <NAME> range <START> <END> (<TYPE (int or float)>, <log_scale: bool>)", 181)
|
|
3273
3311
|
|
|
3274
|
-
def
|
|
3312
|
+
def die_if_lower_and_upper_bound_equal_zero(lower_bound: Union[int, float], upper_bound: Union[int, float]) -> None:
|
|
3275
3313
|
if upper_bound is None or lower_bound is None:
|
|
3276
|
-
_fatal_error("
|
|
3314
|
+
_fatal_error("die_if_lower_and_upper_bound_equal_zero: upper_bound or lower_bound is None. Cannot continue.", 91)
|
|
3277
3315
|
if upper_bound == lower_bound:
|
|
3278
3316
|
if lower_bound == 0:
|
|
3279
3317
|
_fatal_error(f"⚠ Lower bound and upper bound are equal: {lower_bound}, cannot automatically fix this, because they -0 = +0 (usually a quickfix would be to set lower_bound = -upper_bound)", 181)
|
|
@@ -7331,7 +7369,7 @@ def submit_new_job(parameters: Union[dict, str], trial_index: int) -> Any:
|
|
|
7331
7369
|
|
|
7332
7370
|
start = time.time()
|
|
7333
7371
|
|
|
7334
|
-
new_job =
|
|
7372
|
+
new_job = submitit_executor.submit(evaluate, {"params": parameters, "trial_idx": trial_index, "submit_time": int(time.time())})
|
|
7335
7373
|
|
|
7336
7374
|
elapsed = time.time() - start
|
|
7337
7375
|
|
|
@@ -7340,7 +7378,7 @@ def submit_new_job(parameters: Union[dict, str], trial_index: int) -> Any:
|
|
|
7340
7378
|
return new_job
|
|
7341
7379
|
|
|
7342
7380
|
def orchestrator_start_trial(parameters: Union[dict, str], trial_index: int) -> None:
|
|
7343
|
-
if
|
|
7381
|
+
if submitit_executor and ax_client:
|
|
7344
7382
|
new_job = submit_new_job(parameters, trial_index)
|
|
7345
7383
|
submitted_jobs(1)
|
|
7346
7384
|
|
|
@@ -7355,7 +7393,7 @@ def orchestrator_start_trial(parameters: Union[dict, str], trial_index: int) ->
|
|
|
7355
7393
|
print_debug(f"orchestrator_start_trial: appending job {new_job} to global_vars['jobs'], trial_index: {trial_index}")
|
|
7356
7394
|
global_vars["jobs"].append((new_job, trial_index))
|
|
7357
7395
|
else:
|
|
7358
|
-
_fatal_error("
|
|
7396
|
+
_fatal_error("submitit_executor or ax_client could not be found properly", 9)
|
|
7359
7397
|
|
|
7360
7398
|
def handle_exclude_node(stdout_path: str, hostname_from_out_file: Union[None, str]) -> None:
|
|
7361
7399
|
stdout_path = check_alternate_path(stdout_path)
|
|
@@ -7465,8 +7503,8 @@ def execute_evaluation(_params: list) -> Optional[int]:
|
|
|
7465
7503
|
|
|
7466
7504
|
return None
|
|
7467
7505
|
|
|
7468
|
-
if not
|
|
7469
|
-
_fatal_error("
|
|
7506
|
+
if not submitit_executor:
|
|
7507
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
7470
7508
|
|
|
7471
7509
|
return None
|
|
7472
7510
|
|
|
@@ -7521,10 +7559,10 @@ def set_sbatch_environment() -> None:
|
|
|
7521
7559
|
def exclude_defective_nodes() -> None:
|
|
7522
7560
|
excluded_string: str = ",".join(count_defective_nodes())
|
|
7523
7561
|
if len(excluded_string) > 1:
|
|
7524
|
-
if
|
|
7525
|
-
|
|
7562
|
+
if submitit_executor:
|
|
7563
|
+
submitit_executor.update_parameters(exclude=excluded_string)
|
|
7526
7564
|
else:
|
|
7527
|
-
_fatal_error("
|
|
7565
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
7528
7566
|
|
|
7529
7567
|
def handle_failed_job(error: Union[None, Exception, str], trial_index: int, new_job: Optional[Job]) -> None:
|
|
7530
7568
|
if "QOSMinGRES" in str(error) and args.gpus == 0:
|
|
@@ -8821,6 +8859,10 @@ def _create_and_execute_next_runs_run_loop(_max_eval: Optional[int], phase: Opti
|
|
|
8821
8859
|
|
|
8822
8860
|
filtered_trial_index_to_param = {k: v for k, v in trial_index_to_param.items() if k not in abandoned_trial_indices}
|
|
8823
8861
|
|
|
8862
|
+
if is_skip_search():
|
|
8863
|
+
print_yellow("Skipping search part")
|
|
8864
|
+
return True, {}
|
|
8865
|
+
|
|
8824
8866
|
if len(filtered_trial_index_to_param):
|
|
8825
8867
|
execute_trials(filtered_trial_index_to_param, phase, _max_eval)
|
|
8826
8868
|
else:
|
|
@@ -8873,17 +8915,17 @@ def get_number_of_steps(_max_eval: int) -> int:
|
|
|
8873
8915
|
return _random_steps
|
|
8874
8916
|
|
|
8875
8917
|
def _set_global_executor() -> None:
|
|
8876
|
-
global
|
|
8918
|
+
global submitit_executor
|
|
8877
8919
|
|
|
8878
8920
|
log_folder: str = f'{get_current_run_folder()}/single_runs/%j'
|
|
8879
8921
|
subjob_uuid = str(uuid.uuid4())
|
|
8880
8922
|
|
|
8881
8923
|
if args.force_local_execution:
|
|
8882
|
-
|
|
8924
|
+
submitit_executor = LocalExecutor(folder=log_folder)
|
|
8883
8925
|
else:
|
|
8884
|
-
|
|
8926
|
+
submitit_executor = AutoExecutor(folder=log_folder)
|
|
8885
8927
|
|
|
8886
|
-
if
|
|
8928
|
+
if submitit_executor:
|
|
8887
8929
|
params = {
|
|
8888
8930
|
"name": f'{global_vars["experiment_name"]}_{run_uuid}_{subjob_uuid}',
|
|
8889
8931
|
"timeout_min": args.worker_timeout,
|
|
@@ -8897,14 +8939,14 @@ def _set_global_executor() -> None:
|
|
|
8897
8939
|
"exclude": args.exclude,
|
|
8898
8940
|
}
|
|
8899
8941
|
|
|
8900
|
-
|
|
8942
|
+
submitit_executor.update_parameters(**params)
|
|
8901
8943
|
|
|
8902
|
-
print_debug("
|
|
8944
|
+
print_debug("submitit_executor.update_parameters(\n" + json.dumps(params, indent=4) + "\n)")
|
|
8903
8945
|
|
|
8904
8946
|
if args.exclude:
|
|
8905
8947
|
print_yellow(f"Excluding the following nodes: {args.exclude}")
|
|
8906
8948
|
else:
|
|
8907
|
-
_fatal_error("
|
|
8949
|
+
_fatal_error("submitit_executor could not be found", 9)
|
|
8908
8950
|
|
|
8909
8951
|
def set_global_executor() -> None:
|
|
8910
8952
|
try:
|
|
@@ -10263,7 +10305,13 @@ def run_program_once(params=None) -> None:
|
|
|
10263
10305
|
my_exit(57)
|
|
10264
10306
|
|
|
10265
10307
|
def show_omniopt_call() -> None:
|
|
10266
|
-
|
|
10308
|
+
def remove_ui_url(arg_str):
|
|
10309
|
+
return re.sub(r'(?:--ui_url(?:=\S+)?(?:\s+\S+)?)', '', arg_str).strip()
|
|
10310
|
+
|
|
10311
|
+
original_argv = " ".join(sys.argv[1:])
|
|
10312
|
+
cleaned = remove_ui_url(original_argv)
|
|
10313
|
+
|
|
10314
|
+
original_print(oo_call + " " + cleaned)
|
|
10267
10315
|
|
|
10268
10316
|
def main() -> None:
|
|
10269
10317
|
global RESULT_CSV_FILE, ax_client, LOGFILE_DEBUG_GET_NEXT_TRIALS
|
|
@@ -11006,7 +11054,7 @@ def main_outside() -> None:
|
|
|
11006
11054
|
end_program(True)
|
|
11007
11055
|
|
|
11008
11056
|
def auto_wrap_namespace(namespace: Any) -> Any:
|
|
11009
|
-
enable_beartype = os.getenv("ENABLE_BEARTYPE")
|
|
11057
|
+
enable_beartype = any(os.getenv(v) for v in ("ENABLE_BEARTYPE", "CI"))
|
|
11010
11058
|
|
|
11011
11059
|
excluded_functions = {
|
|
11012
11060
|
"log_time_and_memory_wrapper",
|
|
@@ -11026,7 +11074,6 @@ def auto_wrap_namespace(namespace: Any) -> Any:
|
|
|
11026
11074
|
if (isinstance(obj, types.FunctionType) and name not in excluded_functions):
|
|
11027
11075
|
wrapped = obj
|
|
11028
11076
|
if enable_beartype:
|
|
11029
|
-
print(f"Wrapping function '{name}' in @beartype")
|
|
11030
11077
|
wrapped = beartype(wrapped)
|
|
11031
11078
|
|
|
11032
11079
|
if args.runtime_debug:
|
|
@@ -1954,7 +1954,7 @@ EOF
|
|
|
1954
1954
|
sbatch_command=$(echo "$sbatch_command" | sed -e 's#^[[:space:]]*##' -e 's#[[:space:]]*$##')
|
|
1955
1955
|
red_text "Failed to start sbatch job. Command:\n"
|
|
1956
1956
|
red_text "$sbatch_command\n"
|
|
1957
|
-
red_text "Exit-Code: $exit_code\n"
|
|
1957
|
+
red_text "Exit-Code (sbatch): $exit_code\n"
|
|
1958
1958
|
|
|
1959
1959
|
myexit $exit_code
|
|
1960
1960
|
fi
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
|
|
4
4
|
.gitignore,sha256=GmSD6dE4AqN4_fhQUdAzydst60s3w3ePYxetTr3Et7c,3776
|
|
5
5
|
.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
|
|
6
|
-
.omniopt.py,sha256=
|
|
6
|
+
.omniopt.py,sha256=Uf7m37w65oUv6Iuhu_NWDBDJUpj7IzS7YihaybSKzCw,433380
|
|
7
7
|
.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
|
|
8
8
|
.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
|
|
9
9
|
.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
|
|
@@ -21,51 +21,51 @@ LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
|
21
21
|
MANIFEST.in,sha256=L3QBXyL1TtyWxbAPsfjZdCfpeBrRuI5MSgdnvwdQ22Q,24
|
|
22
22
|
README.md,sha256=WJxay4TRM8wfK_k5C01SlizLUHgKqlMwa_PQwAxj-As,3221
|
|
23
23
|
apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
|
|
24
|
-
omniopt,sha256=
|
|
24
|
+
omniopt,sha256=1JkaAUOyNb1e81U47sXr2VU4smjOG0i0iWTzkeH3j5E,50852
|
|
25
25
|
omniopt_docker,sha256=LWVUeyvmA5AKqAHiH9jBUkR5uZ6AHMnSy0eET7mK6E4,3602
|
|
26
26
|
omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
|
|
27
27
|
omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
|
|
28
28
|
omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
|
|
29
|
-
pyproject.toml,sha256=
|
|
29
|
+
pyproject.toml,sha256=2rlAz7Qx9S-23CAVKKkUYxClyeyx68nLO1r8fjkCBss,397
|
|
30
30
|
requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
|
|
31
31
|
setup.cfg,sha256=HEc8uu6NpfxG5_AVh5SvXOpEFMNKPPPxgMIAH144vT4,38
|
|
32
32
|
test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
|
|
33
33
|
.tests/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
|
|
34
|
-
omniopt2-
|
|
35
|
-
omniopt2-
|
|
36
|
-
omniopt2-
|
|
37
|
-
omniopt2-
|
|
38
|
-
omniopt2-
|
|
39
|
-
omniopt2-
|
|
40
|
-
omniopt2-
|
|
41
|
-
omniopt2-
|
|
42
|
-
omniopt2-
|
|
43
|
-
omniopt2-
|
|
44
|
-
omniopt2-
|
|
45
|
-
omniopt2-
|
|
46
|
-
omniopt2-
|
|
47
|
-
omniopt2-
|
|
48
|
-
omniopt2-
|
|
49
|
-
omniopt2-
|
|
50
|
-
omniopt2-
|
|
51
|
-
omniopt2-
|
|
52
|
-
omniopt2-
|
|
53
|
-
omniopt2-
|
|
54
|
-
omniopt2-
|
|
55
|
-
omniopt2-
|
|
56
|
-
omniopt2-
|
|
57
|
-
omniopt2-
|
|
58
|
-
omniopt2-
|
|
59
|
-
omniopt2-
|
|
60
|
-
omniopt2-
|
|
61
|
-
omniopt2-
|
|
62
|
-
omniopt2-
|
|
63
|
-
omniopt2.egg-info/PKG-INFO,sha256=
|
|
34
|
+
omniopt2-8167.data/data/bin/.colorfunctions.sh,sha256=xxc08V3Fh_0Je20fkJMRO14u9VCSvMyOiMaDfioEyCY,1098
|
|
35
|
+
omniopt2-8167.data/data/bin/.general.sh,sha256=uyGMN8xNToQ0v50KoiYxm6jRmgf0orroOaodM_Nuq30,2107
|
|
36
|
+
omniopt2-8167.data/data/bin/.helpers.py,sha256=posn69_5fnlCqU-jRTFaED0LoeC2uuQe6r9NuqvfHm0,31456
|
|
37
|
+
omniopt2-8167.data/data/bin/.omniopt.py,sha256=Uf7m37w65oUv6Iuhu_NWDBDJUpj7IzS7YihaybSKzCw,433380
|
|
38
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_cpu_ram_usage.py,sha256=DbOAmdrbcZtsMnHJgHfeRngjtv6zX5J0axyua_dYezc,3932
|
|
39
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_general.py,sha256=3iy-bPef8I5rTB3KRz-TuleMdgKDmVZ6c8LuNQhNwu0,6810
|
|
40
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_gpu_usage.py,sha256=ojxVicwSoiyl7f3c-6lLuT2EpyPcSJKEcbp75LgDY2k,5107
|
|
41
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_kde.py,sha256=uRLWr72TDKvj3AqJ0O0AvkKZ1ok1O1QpXnbfQQdo0nA,6873
|
|
42
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_scatter.py,sha256=b0_CIqgyi6PztaUVJRL9X9XBTaOonh-yDH2hRxMGkH0,8403
|
|
43
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_scatter_generation_method.py,sha256=rgKY_w1E516c9UucVaEvaKd8tCnoUq9xg-RrYSDzYEQ,4289
|
|
44
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_scatter_hex.py,sha256=UKjw40c1eumgEcf0xqB-_SakX5PB6HD3u4VwBxbsgQo,10279
|
|
45
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_time_and_exit_code.py,sha256=WUyl2uI59wsC1eSX_5uJHOrqcF-s5cUDIEu8u3IFMLU,6462
|
|
46
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_trial_index_result.py,sha256=9ApSv3-eZXohafsCAY5jr2B0rG4XpaTloCb0TuevYSg,4577
|
|
47
|
+
omniopt2-8167.data/data/bin/.omniopt_plot_worker.py,sha256=VuluQq4W6KRR5RU08dxmDSFk5mbfDRkRJQFwwcLgAGw,4524
|
|
48
|
+
omniopt2-8167.data/data/bin/.random_generator.py,sha256=ezBBUXpez_QaGdpCglMcJ0KZPdQP0XdX5gnLzO1xhwU,2987
|
|
49
|
+
omniopt2-8167.data/data/bin/.shellscript_functions,sha256=9Yo5j3BBLDNVPwe2uNjHbVCbj3H1v1gC5Ju8KvPXfC4,13624
|
|
50
|
+
omniopt2-8167.data/data/bin/.tpe.py,sha256=xxQuTZFQHHobvZuqG8cP2y2ev8ifjlLvex3TOaNWq8w,6754
|
|
51
|
+
omniopt2-8167.data/data/bin/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
52
|
+
omniopt2-8167.data/data/bin/apt-dependencies.txt,sha256=X5tBB8ZLW9XaFtRh8B7C2pIkSoxNNawqioDr0QZAtuM,149
|
|
53
|
+
omniopt2-8167.data/data/bin/omniopt,sha256=1JkaAUOyNb1e81U47sXr2VU4smjOG0i0iWTzkeH3j5E,50852
|
|
54
|
+
omniopt2-8167.data/data/bin/omniopt_docker,sha256=LWVUeyvmA5AKqAHiH9jBUkR5uZ6AHMnSy0eET7mK6E4,3602
|
|
55
|
+
omniopt2-8167.data/data/bin/omniopt_evaluate,sha256=9oBh0_ikCuIz_aJQZrN0j39NDiIDYoSvEFmSVIoFjJE,23842
|
|
56
|
+
omniopt2-8167.data/data/bin/omniopt_plot,sha256=ze6Dz2k0w5jyUnfatAA7dk59nzQjKC_G36tDvJGWsfA,13696
|
|
57
|
+
omniopt2-8167.data/data/bin/omniopt_share,sha256=2KZcTjN_7vcxNjb4sLLiWgUc38pl2-6-Qwmgq6_nTb0,13856
|
|
58
|
+
omniopt2-8167.data/data/bin/pylint.rc,sha256=ZGtZjVgJtK_6tdwgscJneS-LUeDASjSVVz6veCkp9rw,22631
|
|
59
|
+
omniopt2-8167.data/data/bin/requirements.txt,sha256=-dJa3VXI74qUD39-aF6whZV6RTN7Dt7KE3o43PnFHqA,299
|
|
60
|
+
omniopt2-8167.data/data/bin/setup.py,sha256=zg7k4jeHXEdaGWGeB1mPC14fFj-hqz1vNimnU0JcMyk,4632
|
|
61
|
+
omniopt2-8167.data/data/bin/test_requirements.txt,sha256=jpyZzAwbWR_qnoRqWvpBB5MUjIX9jVwynX2D-B-r8aA,487
|
|
62
|
+
omniopt2-8167.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
63
|
+
omniopt2.egg-info/PKG-INFO,sha256=EtVKfxYyVokfB8XD-lxn2cIq-nAoF7BxHjcX-ILV3c0,5740
|
|
64
64
|
omniopt2.egg-info/SOURCES.txt,sha256=2mSVIhM8Ncyl5_s8ZFBlb6qjRDbTCQmV9FwVVjp5ROE,795
|
|
65
65
|
omniopt2.egg-info/dependency_links.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
66
66
|
omniopt2.egg-info/requires.txt,sha256=aCvaeeNulrw3AspOfG7FYwkso3fOUXeUqioyYvEnyFI,786
|
|
67
67
|
omniopt2.egg-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
68
|
-
omniopt2-
|
|
69
|
-
omniopt2-
|
|
70
|
-
omniopt2-
|
|
71
|
-
omniopt2-
|
|
68
|
+
omniopt2-8167.dist-info/METADATA,sha256=EtVKfxYyVokfB8XD-lxn2cIq-nAoF7BxHjcX-ILV3c0,5740
|
|
69
|
+
omniopt2-8167.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
70
|
+
omniopt2-8167.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
71
|
+
omniopt2-8167.dist-info/RECORD,,
|
omniopt2.egg-info/PKG-INFO
CHANGED
pyproject.toml
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{omniopt2-8129.data → omniopt2-8167.data}/data/bin/.omniopt_plot_scatter_generation_method.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|