首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mlflow中记录hydra的多次运行

如何在mlflow中记录hydra的多次运行
EN

Stack Overflow用户
提问于 2020-06-26 04:30:55
回答 1查看 622关注 0票数 1

我正在尝试使用mlflow和hydra来管理机器学习的结果。因此,我尝试使用hydra的多运行功能来运行它。我使用以下代码作为测试。

代码语言:javascript
复制
import mlflow
import hydra
from hydra import utils
from pathlib import Path
import time


@hydra.main('config.yaml')
def main(cfg):
    print(cfg)


    mlflow.set_tracking_uri('file://' + utils.get_original_cwd() + '/mlruns')
    mlflow.set_experiment(cfg.experiment_name)


    mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)

    with mlflow.start_run() :
        mlflow.log_artifact(Path.cwd() / '.hydra/config.yaml')


if __name__ == '__main__':
    main()

此代码将不起作用。我得到了以下错误

代码语言:javascript
复制
Exception: Run with UUID [RUNID] is already active. To start a new run, first end the current run with mlflow.end_run(). To start a nested run, call start_run with nested=True

所以我修改了代码,如下所示

代码语言:javascript
复制
import mlflow
import hydra
from hydra import utils
from pathlib import Path
import time


@hydra.main('config.yaml')
def main(cfg):
    print(cfg)


    mlflow.set_tracking_uri('file://' + utils.get_original_cwd() + '/mlruns')
    mlflow.set_experiment(cfg.experiment_name)


    mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)

    with mlflow.start_run(nested=True) :
        mlflow.log_artifact(Path.cwd() / '.hydra/config.yaml')


if __name__ == '__main__':
    main()

此代码可以工作,但工件不会保存。进行了以下更正以保存工件。

代码语言:javascript
复制
import mlflow
import hydra
from hydra import utils
from pathlib import Path
import time


@hydra.main('config.yaml')
def main(cfg):
    print(cfg)


    mlflow.set_tracking_uri('file://' + utils.get_original_cwd() + '/mlruns')
    mlflow.set_experiment(cfg.experiment_name)


    mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)
    # mlflow.log_param('param1',5)

    
    mlflow.log_artifact(Path.cwd() / '.hydra/config.yaml')


if __name__ == '__main__':
    main()

因此,现在保存了工件。但是,当我运行以下命令时

代码语言:javascript
复制
python test.py model=A,B hidden=12,212,31 -m

只保存了最后一个执行条件的工件。

如何通过利用hydra的多运行特性来修改mlflow以管理实验的参数?

EN

回答 1

Stack Overflow用户

发布于 2020-06-29 15:22:03

MLFlow没有得到九头蛇的官方支持。在某种程度上,将会有一个plugin可以让这一切变得更流畅。

查看您正在报告的错误(而不运行代码):您可以尝试使用Joblib launcher plugin通过进程获得作业隔离(这需要Hydra1.0.0rc1或更高版本)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62583856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档