90 lines
2.5 KiB
Python
90 lines
2.5 KiB
Python
"""
|
|
CLI for runs
|
|
"""
|
|
|
|
import json
|
|
|
|
import click
|
|
|
|
from mlflow.entities import ViewType
|
|
from mlflow.environment_variables import MLFLOW_EXPERIMENT_ID
|
|
from mlflow.tracking import _get_store
|
|
from mlflow.utils.string_utils import _create_table
|
|
from mlflow.utils.time import conv_longdate_to_str
|
|
|
|
RUN_ID = click.option("--run-id", type=click.STRING, required=True)
|
|
|
|
|
|
@click.group("runs")
|
|
def commands():
|
|
"""
|
|
Manage runs. To manage runs of experiments associated with a tracking server, set the
|
|
MLFLOW_TRACKING_URI environment variable to the URL of the desired server.
|
|
"""
|
|
|
|
|
|
@commands.command("list")
|
|
@click.option(
|
|
"--experiment-id",
|
|
envvar=MLFLOW_EXPERIMENT_ID.name,
|
|
type=click.STRING,
|
|
help="Specify the experiment ID for list of runs.",
|
|
required=True,
|
|
)
|
|
@click.option(
|
|
"--view",
|
|
"-v",
|
|
default="active_only",
|
|
help="Select view type for list experiments. Valid view types are "
|
|
"'active_only' (default), 'deleted_only', and 'all'.",
|
|
)
|
|
def list_run(experiment_id, view):
|
|
"""
|
|
List all runs of the specified experiment in the configured tracking server.
|
|
"""
|
|
store = _get_store()
|
|
view_type = ViewType.from_string(view) if view else ViewType.ACTIVE_ONLY
|
|
runs = store.search_runs([experiment_id], None, view_type)
|
|
table = []
|
|
for run in runs:
|
|
run_name = run.info.run_name or ""
|
|
table.append([conv_longdate_to_str(run.info.start_time), run_name, run.info.run_id])
|
|
click.echo(_create_table(sorted(table, reverse=True), headers=["Date", "Name", "ID"]))
|
|
|
|
|
|
@commands.command("delete")
|
|
@RUN_ID
|
|
def delete_run(run_id):
|
|
"""
|
|
Mark a run for deletion. Return an error if the run does not exist or
|
|
is already marked. You can restore a marked run with ``restore_run``,
|
|
or permanently delete a run in the backend store.
|
|
"""
|
|
store = _get_store()
|
|
store.delete_run(run_id)
|
|
click.echo(f"Run with ID {run_id} has been deleted.")
|
|
|
|
|
|
@commands.command("restore")
|
|
@RUN_ID
|
|
def restore_run(run_id):
|
|
"""
|
|
Restore a deleted run.
|
|
Returns an error if the run is active or has been permanently deleted.
|
|
"""
|
|
store = _get_store()
|
|
store.restore_run(run_id)
|
|
click.echo(f"Run with id {run_id} has been restored.")
|
|
|
|
|
|
@commands.command("describe")
|
|
@RUN_ID
|
|
def describe_run(run_id):
|
|
"""
|
|
All of run details will print to the stdout as JSON format.
|
|
"""
|
|
store = _get_store()
|
|
run = store.get_run(run_id)
|
|
json_run = json.dumps(run.to_dictionary(), indent=4)
|
|
click.echo(json_run)
|