Spaces:
Sleeping
Sleeping
MilesCranmer
commited on
Commit
•
e47833c
1
Parent(s):
bfd7114
Enable custom cluster managers
Browse files- pysr/sr.py +22 -3
- pysr/version.py +1 -1
pysr/sr.py
CHANGED
@@ -333,12 +333,18 @@ def init_julia():
|
|
333 |
|
334 |
|
335 |
def _add_sr_to_julia_project(Main, io_arg):
|
336 |
-
Main.
|
337 |
name="SymbolicRegression",
|
338 |
url="https://github.com/MilesCranmer/SymbolicRegression.jl",
|
339 |
rev="v" + __symbolic_regression_jl_version__,
|
340 |
)
|
341 |
-
Main.eval(f"Pkg.add(
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
|
343 |
|
344 |
class PySRRegressor(BaseEstimator, RegressorMixin):
|
@@ -411,6 +417,7 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
411 |
Xresampled=None,
|
412 |
precision=32,
|
413 |
multithreading=None,
|
|
|
414 |
use_symbolic_utils=False,
|
415 |
skip_mutation_failures=True,
|
416 |
# To support deprecated kwargs:
|
@@ -444,6 +451,11 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
444 |
:type procs: int
|
445 |
:param multithreading: Use multithreading instead of distributed backend. Default is yes. Using procs=0 will turn off both.
|
446 |
:type multithreading: bool
|
|
|
|
|
|
|
|
|
|
|
447 |
:param batching: whether to compare population members on small batches during evolution. Still uses full dataset for comparing against hall of fame.
|
448 |
:type batching: bool
|
449 |
:param batch_size: the amount of data to use if doing batching.
|
@@ -624,7 +636,7 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
624 |
if multithreading is None:
|
625 |
# Default is multithreading=True, unless explicitly set,
|
626 |
# or procs is set to 0 (serial mode).
|
627 |
-
multithreading = procs != 0
|
628 |
if update_verbosity is None:
|
629 |
update_verbosity = verbosity
|
630 |
|
@@ -734,6 +746,7 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
734 |
Xresampled=Xresampled,
|
735 |
precision=precision,
|
736 |
multithreading=multithreading,
|
|
|
737 |
use_symbolic_utils=use_symbolic_utils,
|
738 |
skip_mutation_failures=skip_mutation_failures,
|
739 |
),
|
@@ -1034,6 +1047,7 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
1034 |
)
|
1035 |
|
1036 |
multithreading = self.params["multithreading"]
|
|
|
1037 |
procs = self.params["procs"]
|
1038 |
binary_operators = self.params["binary_operators"]
|
1039 |
unary_operators = self.params["unary_operators"]
|
@@ -1060,6 +1074,10 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
1060 |
|
1061 |
Main = init_julia()
|
1062 |
|
|
|
|
|
|
|
|
|
1063 |
if isinstance(X, pd.DataFrame):
|
1064 |
if variable_names is not None:
|
1065 |
warnings.warn("Resetting variable_names from X.columns")
|
@@ -1332,6 +1350,7 @@ class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
1332 |
numprocs=int(cprocs),
|
1333 |
multithreading=bool(multithreading),
|
1334 |
saved_state=self.raw_julia_state,
|
|
|
1335 |
)
|
1336 |
|
1337 |
self.variable_names = variable_names
|
|
|
333 |
|
334 |
|
335 |
def _add_sr_to_julia_project(Main, io_arg):
|
336 |
+
Main.sr_spec = Main.PackageSpec(
|
337 |
name="SymbolicRegression",
|
338 |
url="https://github.com/MilesCranmer/SymbolicRegression.jl",
|
339 |
rev="v" + __symbolic_regression_jl_version__,
|
340 |
)
|
341 |
+
Main.eval(f"Pkg.add(sr_spec, {io_arg})")
|
342 |
+
Main.clustermanagers_spec = Main.PackageSpec(
|
343 |
+
name="ClusterManagers",
|
344 |
+
url="https://github.com/JuliaParallel/ClusterManagers.jl",
|
345 |
+
rev="14e7302f068794099344d5d93f71979aaf4fbeb3",
|
346 |
+
)
|
347 |
+
Main.eval(f"Pkg.add(clustermanagers_spec, {io_arg})")
|
348 |
|
349 |
|
350 |
class PySRRegressor(BaseEstimator, RegressorMixin):
|
|
|
417 |
Xresampled=None,
|
418 |
precision=32,
|
419 |
multithreading=None,
|
420 |
+
cluster_manager=None,
|
421 |
use_symbolic_utils=False,
|
422 |
skip_mutation_failures=True,
|
423 |
# To support deprecated kwargs:
|
|
|
451 |
:type procs: int
|
452 |
:param multithreading: Use multithreading instead of distributed backend. Default is yes. Using procs=0 will turn off both.
|
453 |
:type multithreading: bool
|
454 |
+
:param cluster_manager: For distributed computing, this sets the job queue
|
455 |
+
system. Set to one of "slurm", "pbs", "lsf", "sge", "qrsh", "scyld", or "htc".
|
456 |
+
If set to one of these, PySR will run in distributed mode, and use `procs` to figure
|
457 |
+
out how many processes to launch.
|
458 |
+
:type cluster_manager: str
|
459 |
:param batching: whether to compare population members on small batches during evolution. Still uses full dataset for comparing against hall of fame.
|
460 |
:type batching: bool
|
461 |
:param batch_size: the amount of data to use if doing batching.
|
|
|
636 |
if multithreading is None:
|
637 |
# Default is multithreading=True, unless explicitly set,
|
638 |
# or procs is set to 0 (serial mode).
|
639 |
+
multithreading = procs != 0 and cluster_manager is None
|
640 |
if update_verbosity is None:
|
641 |
update_verbosity = verbosity
|
642 |
|
|
|
746 |
Xresampled=Xresampled,
|
747 |
precision=precision,
|
748 |
multithreading=multithreading,
|
749 |
+
cluster_manager=cluster_manager,
|
750 |
use_symbolic_utils=use_symbolic_utils,
|
751 |
skip_mutation_failures=skip_mutation_failures,
|
752 |
),
|
|
|
1047 |
)
|
1048 |
|
1049 |
multithreading = self.params["multithreading"]
|
1050 |
+
cluster_manager = self.params["cluster_manager"]
|
1051 |
procs = self.params["procs"]
|
1052 |
binary_operators = self.params["binary_operators"]
|
1053 |
unary_operators = self.params["unary_operators"]
|
|
|
1074 |
|
1075 |
Main = init_julia()
|
1076 |
|
1077 |
+
if cluster_manager is not None:
|
1078 |
+
Main.eval(f"import ClusterManagers: addprocs_{cluster_manager}")
|
1079 |
+
cluster_manager = Main.eval(f"addprocs_{cluster_manager}")
|
1080 |
+
|
1081 |
if isinstance(X, pd.DataFrame):
|
1082 |
if variable_names is not None:
|
1083 |
warnings.warn("Resetting variable_names from X.columns")
|
|
|
1350 |
numprocs=int(cprocs),
|
1351 |
multithreading=bool(multithreading),
|
1352 |
saved_state=self.raw_julia_state,
|
1353 |
+
addprocs_function=cluster_manager,
|
1354 |
)
|
1355 |
|
1356 |
self.variable_names = variable_names
|
pysr/version.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
__version__ = "0.8.
|
2 |
__symbolic_regression_jl_version__ = "0.8.7"
|
|
|
1 |
+
__version__ = "0.8.1"
|
2 |
__symbolic_regression_jl_version__ = "0.8.7"
|