hydraflow 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- hydraflow/__init__.py +2 -0
- hydraflow/mlflow.py +6 -1
- hydraflow/run_collection.py +2 -2
- hydraflow/run_info.py +2 -0
- hydraflow/utils.py +24 -2
- {hydraflow-0.5.0.dist-info → hydraflow-0.5.2.dist-info}/METADATA +2 -2
- hydraflow-0.5.2.dist-info/RECORD +14 -0
- hydraflow-0.5.0.dist-info/RECORD +0 -14
- {hydraflow-0.5.0.dist-info → hydraflow-0.5.2.dist-info}/WHEEL +0 -0
- {hydraflow-0.5.0.dist-info → hydraflow-0.5.2.dist-info}/licenses/LICENSE +0 -0
hydraflow/__init__.py
CHANGED
@@ -6,6 +6,7 @@ from .mlflow import list_runs, search_runs, set_experiment
|
|
6
6
|
from .run_collection import RunCollection
|
7
7
|
from .utils import (
|
8
8
|
get_artifact_dir,
|
9
|
+
get_artifact_path,
|
9
10
|
get_hydra_output_dir,
|
10
11
|
get_overrides,
|
11
12
|
load_config,
|
@@ -18,6 +19,7 @@ __all__ = [
|
|
18
19
|
"chdir_artifact",
|
19
20
|
"chdir_hydra_output",
|
20
21
|
"get_artifact_dir",
|
22
|
+
"get_artifact_path",
|
21
23
|
"get_hydra_output_dir",
|
22
24
|
"get_overrides",
|
23
25
|
"list_runs",
|
hydraflow/mlflow.py
CHANGED
@@ -37,6 +37,7 @@ def set_experiment(
|
|
37
37
|
prefix: str = "",
|
38
38
|
suffix: str = "",
|
39
39
|
uri: str | Path | None = None,
|
40
|
+
name: str | None = None,
|
40
41
|
) -> Experiment:
|
41
42
|
"""Set the experiment name and tracking URI optionally.
|
42
43
|
|
@@ -48,6 +49,7 @@ def set_experiment(
|
|
48
49
|
prefix (str): The prefix to prepend to the experiment name.
|
49
50
|
suffix (str): The suffix to append to the experiment name.
|
50
51
|
uri (str | Path | None): The tracking URI to use. Defaults to None.
|
52
|
+
name (str | None): The name of the experiment. Defaults to None.
|
51
53
|
|
52
54
|
Returns:
|
53
55
|
Experiment: An instance of `mlflow.entities.Experiment` representing
|
@@ -57,6 +59,9 @@ def set_experiment(
|
|
57
59
|
if uri is not None:
|
58
60
|
mlflow.set_tracking_uri(uri)
|
59
61
|
|
62
|
+
if name is not None:
|
63
|
+
return mlflow.set_experiment(name)
|
64
|
+
|
60
65
|
hc = HydraConfig.get()
|
61
66
|
name = f"{prefix}{hc.job.name}{suffix}"
|
62
67
|
return mlflow.set_experiment(name)
|
@@ -214,7 +219,7 @@ def _list_runs(
|
|
214
219
|
elif Path(loc).is_dir():
|
215
220
|
path = Path(loc)
|
216
221
|
else:
|
217
|
-
continue
|
222
|
+
continue # no cov
|
218
223
|
|
219
224
|
run_ids.extend(file.stem for file in path.iterdir() if file.is_dir())
|
220
225
|
|
hydraflow/run_collection.py
CHANGED
@@ -609,8 +609,8 @@ class RunCollection:
|
|
609
609
|
|
610
610
|
def sort(
|
611
611
|
self,
|
612
|
-
key: Callable[[Run], Any] | None = None,
|
613
612
|
*,
|
613
|
+
key: Callable[[Run], Any] | None = None,
|
614
614
|
reverse: bool = False,
|
615
615
|
) -> None:
|
616
616
|
"""Sort the runs in the collection.
|
@@ -652,7 +652,7 @@ class RunCollection:
|
|
652
652
|
|
653
653
|
return [v[0] for v in values]
|
654
654
|
|
655
|
-
def
|
655
|
+
def sorted(
|
656
656
|
self,
|
657
657
|
names: str | list[str],
|
658
658
|
*,
|
hydraflow/run_info.py
CHANGED
hydraflow/utils.py
CHANGED
@@ -30,10 +30,32 @@ def get_artifact_dir(run: Run | None = None) -> Path:
|
|
30
30
|
"""
|
31
31
|
uri = mlflow.get_artifact_uri() if run is None else run.info.artifact_uri
|
32
32
|
|
33
|
-
if not
|
33
|
+
if not isinstance(uri, str):
|
34
34
|
raise NotImplementedError
|
35
35
|
|
36
|
-
|
36
|
+
if uri.startswith("file://"):
|
37
|
+
return Path(mlflow.artifacts.download_artifacts(uri))
|
38
|
+
|
39
|
+
if Path(uri).is_dir():
|
40
|
+
return Path(uri)
|
41
|
+
|
42
|
+
raise NotImplementedError
|
43
|
+
|
44
|
+
|
45
|
+
def get_artifact_path(run: Run | None, path: str) -> Path:
|
46
|
+
"""Retrieve the artifact path for the given run and path.
|
47
|
+
|
48
|
+
This function uses MLflow to get the artifact path for the given run and path.
|
49
|
+
|
50
|
+
Args:
|
51
|
+
run (Run | None): The run object. Defaults to None.
|
52
|
+
path (str): The path to the artifact.
|
53
|
+
|
54
|
+
Returns:
|
55
|
+
The local path to the artifact.
|
56
|
+
|
57
|
+
"""
|
58
|
+
return get_artifact_dir(run) / path
|
37
59
|
|
38
60
|
|
39
61
|
def get_hydra_output_dir(run: Run | None = None) -> Path:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: hydraflow
|
3
|
-
Version: 0.5.
|
3
|
+
Version: 0.5.2
|
4
4
|
Summary: Hydraflow integrates Hydra and MLflow to manage and track machine learning experiments.
|
5
5
|
Project-URL: Documentation, https://github.com/daizutabi/hydraflow
|
6
6
|
Project-URL: Source, https://github.com/daizutabi/hydraflow
|
@@ -111,7 +111,7 @@ def my_app(cfg: MySQLConfig) -> None:
|
|
111
111
|
hydraflow.set_experiment()
|
112
112
|
|
113
113
|
# Automatically log Hydra config as params.
|
114
|
-
with hydraflow.start_run():
|
114
|
+
with hydraflow.start_run(cfg):
|
115
115
|
# Your app code below.
|
116
116
|
|
117
117
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
hydraflow/__init__.py,sha256=9XO9FD3uiTTPN6X6UAC9FtkJjEqUQZNqpoAmSrjUHfI,855
|
2
|
+
hydraflow/config.py,sha256=MNX9da5bPVDcjnpji7Cm9ndK6ura92pt361m4PRh6_E,4326
|
3
|
+
hydraflow/context.py,sha256=3g7OQXWcFvK6PVVbXpQg7Hr8nsJkF9pLFrXNi_3aV5A,5524
|
4
|
+
hydraflow/mlflow.py,sha256=vor1w8twfBQx9kmlAkvmJ4q7n_GrNyqGXBP1xwTAGD0,8934
|
5
|
+
hydraflow/param.py,sha256=c5sc6NwD6DKwZzVwprXzZD5FSi6qRgSHkc6TXBKQEdg,4502
|
6
|
+
hydraflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
+
hydraflow/run_collection.py,sha256=zPrlKwLuzqePj57pXbgKWrE03S_kjxTaxY9trItf6Gc,26772
|
8
|
+
hydraflow/run_data.py,sha256=dpyyfnuH9mCtIZeigMo1iFQo9bafMdEL4i4uI2l0UqY,1525
|
9
|
+
hydraflow/run_info.py,sha256=Jf5wrIjRLIV1-k-obHDqwKHa6j_ZonrY8od-rXlbtMo,1024
|
10
|
+
hydraflow/utils.py,sha256=32dCP7rmkB7_dyGJgY6auy8162jotd5JSaVi-qB9vnU,4351
|
11
|
+
hydraflow-0.5.2.dist-info/METADATA,sha256=ou8nVe6VIYi52Prp26VZcoxixJItFmojKaINgG1DWQo,4700
|
12
|
+
hydraflow-0.5.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
13
|
+
hydraflow-0.5.2.dist-info/licenses/LICENSE,sha256=IGdDrBPqz1O0v_UwCW-NJlbX9Hy9b3uJ11t28y2srmY,1062
|
14
|
+
hydraflow-0.5.2.dist-info/RECORD,,
|
hydraflow-0.5.0.dist-info/RECORD
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
hydraflow/__init__.py,sha256=DKtFjTXHTgceX7rpWHiKqhcpG5xtGIseFvN28f7iwYo,807
|
2
|
-
hydraflow/config.py,sha256=MNX9da5bPVDcjnpji7Cm9ndK6ura92pt361m4PRh6_E,4326
|
3
|
-
hydraflow/context.py,sha256=3g7OQXWcFvK6PVVbXpQg7Hr8nsJkF9pLFrXNi_3aV5A,5524
|
4
|
-
hydraflow/mlflow.py,sha256=kWVK_Xw2hkRnTg33jSP3VW13UZF6_hBGhN52mPmLgvk,8753
|
5
|
-
hydraflow/param.py,sha256=c5sc6NwD6DKwZzVwprXzZD5FSi6qRgSHkc6TXBKQEdg,4502
|
6
|
-
hydraflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
hydraflow/run_collection.py,sha256=RQRN50k5m_bDWn4vzOProbnjzVejI5hsr5WSd4owbhQ,26773
|
8
|
-
hydraflow/run_data.py,sha256=dpyyfnuH9mCtIZeigMo1iFQo9bafMdEL4i4uI2l0UqY,1525
|
9
|
-
hydraflow/run_info.py,sha256=sMXOo20ClaRIommMEzuAbO_OrcXx7M1Yt4FMV7spxz0,998
|
10
|
-
hydraflow/utils.py,sha256=jbNrbtIfMqxE4LrdTNd1g7sF68XgAvydGqW5iAZ6n-c,3834
|
11
|
-
hydraflow-0.5.0.dist-info/METADATA,sha256=pv7eNdU5mT05N936AWyuLzZfzYSgVrsGZ5d354bD_-8,4697
|
12
|
-
hydraflow-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
13
|
-
hydraflow-0.5.0.dist-info/licenses/LICENSE,sha256=IGdDrBPqz1O0v_UwCW-NJlbX9Hy9b3uJ11t28y2srmY,1062
|
14
|
-
hydraflow-0.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|