Holm
Holm

Reputation: 3365

Delete a run in the experiment of mlflow from the UI so the run does not exist in backend store

I found deleting a run only change the state from active to deleted, because the run is still visible in the UI if searching by deleted.

Is it possible to remove a run from the UI to save the space? When removing a run, does the artifact correspond to the run is also removed?

If not, can the run be removed through rest call?

Upvotes: 8

Views: 10369

Answers (2)

JustDanyul
JustDanyul

Reputation: 14044

Whilst Grzegorz already provided a solution, I just wanted to provide an alternative solution using the MLFlow cli.

The cli has a command, mlfLow gc, which deletes runs in the deleted lifecycle stage.

check https://mlflow.org/docs/latest/cli.html#mlflow-gc

Upvotes: 3

Grzegorz
Grzegorz

Reputation: 1353

The accepted answer indeed deletes the experiment, not the run of an experiment.

In order to remove the directory one can use the mlflow API. Here is the script that removes all deleted runs:

import mlflow
import shutil
    
def get_run_dir(artifacts_uri):
    return artifacts_uri[7:-10]
    
    
def remove_run_dir(run_dir):
    shutil.rmtree(run_dir, ignore_errors=True)
    
experiment_id = 1
deleted_runs = 2
    
exp = mlflow.tracking.MlflowClient(tracking_uri='./mlflow/mlruns')
    
runs = exp.search_runs(str(experiment_id), run_view_type=deleted_runs)
    
_ = [remove_run_dir(get_run_dir(run.info.artifact_uri)) for run in runs]

Upvotes: 6

Related Questions