我无法在MLFlow中存储、查看和检索工件。无论是否创建新实验,工件文件夹均为空,并分配正确的实验名称和位置。
服务器:mlflow server --backend-store-uri mlruns/ --default-artifact-root mlruns/ --host 0.0.0.0--port 5000
创建一个实验:mlflow.create_experiment(exp_name,artifact_location='mlruns/')
with mlflow.start_run():
mlflow.log_metric("mse", float(binary))
mlflow.log_artifact(data_path, "data")
# log model
mlflow.keras.log_model(model, "models")
代码编译并运行,但没有记录任何工件。它有mlflow.log-model.history文件,但没有model.h5
4条答案
按热度按时间c90pui9n1#
当我开始在MLflow上工作时,我遇到了同样的问题。
所以这个概念是有两个不同的东西
tracking uri
和artifact uri
。tracking uri
存储日志,artifact uri
存储工件(如yaml、pkl等)。但是如果你想要一个通用的uri,你可以使用SQLite作为本地数据库,然后你的命令将是这样的...
mlflow服务器--backend-store-uri sqlite:///mlruns.db--host 0.0.0.0--端口5000
Note:
如果您正在使用远程服务器,那么您的工件存储也应该是远程存储,它不适用于本地数据库并且不要忘记显式地设置跟踪URI,有两种方法:
mlflow.set_tracking_uri("sqlite:///mlruns.db")
export MLFLOW_TRACKING_URI=sqlite:///mlruns.db
beq87vna2#
工件存储需要对服务器和客户端都可访问。如果您的客户机从远程机器连接,并且您没有配置像S3这样的远程工件存储,那么它们的工件文件将保存在本地。您可以查看本地存储
这里有一个关于目前支持的不同工件存储的解释:https://mlflow.org/docs/latest/tracking.html#artifact-stores
yzxexxkh3#
我遇到了同样的问题(对于
mlflow.pytorch
)。对我来说,通过替换log_model()
和log_atrifacts()
来修复它。所以记录藏物的是:
此外,对于终端中的
ui
,cd到mlruns
所在的目录。例如,如果mlruns
的位置是...\your-project\mlruns
:转到安装
mlflow
的环境。然后,运行
mlflow ui
我在这篇文章中也回答了这个问题:
6l7fqoea4#
我发现我的问题是,通过使用PyCharm和Docker,它自动将我的跟踪uri设置为
/opt/project
,这是PyCharm自动设置的共享卷,用于与其“调试器容器”和实际的Python容器一起使用我的代码。这样,如果我在同一个容器中运行ui,我就可以找到并看到工件,但如果我使用不同的docker容器,我就不能找到并看到工件。如果关键字“artifact_location”类似于“file:///opt/project/mlruns/0”,则可以通过检查
mlruns
文件夹中的meta.yaml
文件来验证这是否是您的问题。我通过在导入后设置跟踪URI来修复它: