How to fix Artifacts not showing in MLflow UI

Question:

I’d used MLflow and logged parameters using the function below (from pydataberlin).

def train(alpha=0.5, l1_ratio=0.5):
    # train a model with given parameters
    warnings.filterwarnings("ignore")
    np.random.seed(40)

    # Read the wine-quality csv file (make sure you're running this from the root of MLflow!)
    data_path = "data/wine-quality.csv"
    train_x, train_y, test_x, test_y = load_data(data_path)

    # Useful for multiple runs (only doing one run in this sample notebook)    
    with mlflow.start_run():
        # Execute ElasticNet
        lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
        lr.fit(train_x, train_y)

        # Evaluate Metrics
        predicted_qualities = lr.predict(test_x)
        (rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)

        # Print out metrics
        print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio))
        print("  RMSE: %s" % rmse)
        print("  MAE: %s" % mae)
        print("  R2: %s" % r2)

        # Log parameter, metrics, and model to MLflow
        mlflow.log_param(key="alpha", value=alpha)
        mlflow.log_param(key="l1_ratio", value=l1_ratio)
        mlflow.log_metric(key="rmse", value=rmse)
        mlflow.log_metrics({"mae": mae, "r2": r2})
        mlflow.log_artifact(data_path)
        print("Save to: {}".format(mlflow.get_artifact_uri()))
        
        mlflow.sklearn.log_model(lr, "model")

Once I run train() with its parameters, in UI I cannot see Artifacts, but I can see models and its parameters and Metric.

In artifact tab it’s written No Artifacts Recorded Use the log artifact APIs to store file outputs from MLflow runs. But in finder in models folders all Artifacts existe with models Pickle.

help

Asked By: abdoulsn

||

Answers:

Is this code not being run locally? Are you moving the mlruns folder perhaps? I’d suggest checking the artifact URI present in the meta.yaml files. If the path there is incorrect, such issues might come up.

Answered By: aebeljs

Had a similar issue. In my case, I solved it by running mlflow ui inside the mlruns directory of your experiment.

See the full discussion on Github here

Hope it helps!

Answered By: Cristobal

I had the same problem (for mlflow.pytorch). For me it is fixed by replacing log_model() and log_atrifacts().

So the one that logged the artifact is:

mlflow.log_metric("metric name", [metric value])
mlflow.pytorch.log_model(model, "model")
mlflow.log_artifacts(output_dir)

Besides, for ui in terminal, cd to the directory where mlruns is. For example if the location of the mlruns is ...your-projectmlruns:

cd ...your-project

go to the environment where mlflow is installed.

...your-project> conda activate [myenv]

Then, run mlflow ui

(myenv) ...your-project> mlflow ui
Answered By: Maryam Bahrami

I had a similar problem.
After I changed the script folder, my UI is not showing the new runs.

The solution that worked for me is to stop all the MLflow UI before starting a new UI, in case you are changing the folder.

Answered By: Aneesh Cherian K

I had this issue when running mlflow server and storing artifacts in S3. Was able to fix by installing boto3

Answered By: Fernando Wittmann

I am running the same Python code in my Jupyter Notebook hosted locally, and the issue was solved for me when I ran mlflow ui in the directory which contains my Jupyter Notebook.

Answered By: Teodora Petkova
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.