【问题标题】:Why is MLFLow unable to log metrics, artifacts while using MLFlow Project in Docker environment?为什么 MLFLow 在 Docker 环境中使用 MLFlow 项目时无法记录指标、工件?
【发布时间】:2021-09-18 02:54:57
【问题描述】:

我正在尝试在 docker 环境中运行 MLProject 后将指标和工件存储在主机上。我希望当实验成功完成时,mlruns/ 文件夹中的工件、指标文件夹应该具有值并显示在 mlflow ui 上,但工件,mlruns/文件夹中的metrics文件夹是空的。 mlflow ui 也没有反映新的实验。

/home/mlflow_demo/mlflow-demo.py -

import mlflow
from mlflow.tracking import MlflowClient
from random import random
import pickle

client = MlflowClient()
experiment_id = client.create_experiment(name='first experiment')
run = client.create_run(experiment_id=experiment_id)
for i in range(1000):
 client.log_metric(run.info.run_id,"foo",random(),step=i)
with open("test.txt","w") as f:
 f.write("This is an artifact file")
client.log_artifact(run.info.run_id,"test.txt")
client.set_terminated(run.info.run_id)

/home/mlflow_demo/MLProject -

name: test-project
docker_env:
 image: kusur/apex-pytorch-image:latest
entry_points:
 main:
  command: "python mlflow-demo.py"

命令(在 /home/mlflow_demo 中执行):-mlflow run .

运行上述代码后,我得到以下日志-

2021/07/06 12:22:28 INFO mlflow.projects.docker: === Building docker image test-project ===
2021/07/06 12:22:28 INFO mlflow.projects.utils: === Created directory /home/mlflow_demo/mlruns/tmpwa8ydc5j for downloading remote URIs passed to arguments of type 'path' ===
2021/07/06 12:22:28 INFO mlflow.projects.backend.local: === Running command 'docker run --rm -v /home/mlflow_demo/mlruns:/mlflow/tmp/mlruns -v /home/mlflow_demo/mlruns/0/0978fdd89ba44bf7b49975ab84838e82/artifacts:/home/mlflow_demo/mlruns/0/0978fdd89ba44bf7b49975ab84838e82/artifacts -e MLFLOW_RUN_ID=0978fdd89ba44bf7b49975ab84838e82 -e MLFLOW_TRACKING_URI=file:///mlflow/tmp/mlruns -e MLFLOW_EXPERIMENT_ID=0 test-project:latest python mlflow-demo.py' in run with ID '0978fdd89ba44bf7b49975ab84838e82' ===

...

2021/07/06 12:22:33 INFO mlflow.projects: === Run (ID '0978fdd89ba44bf7b49975ab84838e82') succeeded ===

文件夹 mlruns/0/0978fdd89ba44bf7b49975ab84838e82/artifacts 和 mlruns/0/0978fdd89ba44bf7b49975ab84838e82/metrics 仍然是空的。

谁能提供指点。如果问题没有很好地提出,请告诉我。

【问题讨论】:

    标签: python-3.x mlflow mlops


    【解决方案1】:

    您已将代码发布为

    for i in range(1000):
    client.log_metric(run.info.run_id,"foo",random(),step=i)
    

    应该是这样的

    for i in range(1000):
        client.log_metric(run.info.run_id,"foo",random(),step=i)
    

    同样是完全没有缩进的情况

    with open("test.txt","w") as f:
    

    你能用正确的python缩进更新代码并重新运行吗

    【讨论】:

    • 这是问题本身的格式问题。在那里更正。实际代码中,缩进一直保持不变。
    • @kusur 您没有以正确的格式 .indentation 发布问题,为了获得正确的结果,所有这些都非常重要,您现在已经编辑了问题。
    • 是的。在你指出之后我更正了。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2019-10-05
    • 2021-12-18
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    相关资源
    最近更新 更多