如何修复MLflow服务器上显示的HDFS模型/制品路径错误问题
MLflow UI Artifact Path Bug with HDFS (Version 1.2.0)
问题背景
你在使用MLflow 1.2.0时碰到了一个UI路径渲染的问题,具体操作和现象如下:
- 启动MLflow服务器的命令:
mlflow server --host myhost -p myport --backend-store-uri mysql://user@localhost/mlflow --default-artifact-root hdfs://myhost/user/myid/mlflow_test - 运行实验:
mlflow run sklearn_elasticnet_wine -P alpha=0.5 --no-conda - 通过
mlflow.sklearn.log_model(lr, "model")将模型日志到HDFS存储 - 在UI中,
model目录的路径显示正确(run_id/artifacts/model),但点击该目录下的MLmodel文件时,路径错误地变为run_id/artifacts/MLmodel,缺失了关键的model子目录
问题原因
这是MLflow 1.2.0版本中一个已知的bug,当使用HDFS作为artifact存储后端时,UI在生成子目录下文件的访问路径时,会错误地省略中间的目录层级。这个问题已经在MLflow 1.3.0及后续的版本中被官方修复。
解决方案
1. 升级MLflow到稳定版本(推荐方案)
最彻底的解决方式是升级MLflow到最新的稳定版本,这样可以直接修复这个UI路径问题。执行以下命令完成升级:
pip install --upgrade mlflow
升级完成后,重启你的MLflow服务器,重新运行实验,此时UI中点击MLmodel文件时,路径会正确显示为run_id/artifacts/model/MLmodel。
2. 临时 workaround(无法升级时)
如果暂时无法升级MLflow版本,你可以通过以下两种方式访问MLmodel文件:
- 手动拼接HDFS路径访问:正确的HDFS路径为
hdfs://myhost/user/myid/mlflow_test/<你的run_id>/artifacts/model/MLmodel,你可以使用HDFS命令直接查看内容:hdfs dfs -cat hdfs://myhost/user/myid/mlflow_test/<run_id>/artifacts/model/MLmodel - 直接构造UI访问URL:在浏览器地址栏中手动补全缺失的
model路径,将错误的URLmyhost:myport/#/experiments/0/runs/run_id/artifacts/MLmodel修改为myhost:myport/#/experiments/0/runs/run_id/artifacts/model/MLmodel,即可正确查看文件内容。
另外需要确认的是,你的模型日志代码mlflow.sklearn.log_model(lr, "model")是完全符合标准的,没有语法或逻辑错误,所以问题的核心确实是MLflow 1.2.0版本的UI渲染bug。
内容的提问来源于stack exchange,提问作者Kyle Chen
相关产品推荐
相关产品推荐

