我试图将Hydra与MLFlow结合使用,因此我编写了最简单的脚本,以查看它们是否协同工作(导入等)。这两种方法各自都能很好地发挥作用,但当它们结合在一起时,我得到了一个奇怪的结果
我的脚本如下:
import hydra
from omegaconf import DictConfig
from mlflow import log_metric, log_param, log_artifact,start_run
@hydra.main(config_path="config.yaml")
def my_app(cfg : DictConfig):
# print(cfg.pretty())
# print(cfg['coordinates']['x0'])
log_param("a",2)
log_metric("b",3)
if __name__ == "__main__":
my_app()
但是,当运行时,我得到以下错误:
ilknull@nurmachine:~/Files/Code/Python/MLFlow_test$ python3 hydra_temp.py
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/home/ilknull/.local/lib/python3.7/site-packages/mlflow/tracking/fluent.py", line 164, in end_run
MlflowClient().set_terminated(_active_run_stack[-1].info.run_id, status)
File "/home/ilknull/.local/lib/python3.7/site-packages/mlflow/tracking/client.py", line 311, in set_terminated
self._tracking_client.set_terminated(run_id, status, end_time)
File "/home/ilknull/.local/lib/python3.7/site-packages/mlflow/tracking/_tracking_service/client.py", line 312, in set_terminated
end_time=end_time)
File "/home/ilknull/.local/lib/python3.7/site-packages/mlflow/store/tracking/file_store.py", line 377, in update_run_info
run_info = self._get_run_info(run_id)
File "/home/ilknull/.local/lib/python3.7/site-packages/mlflow/store/tracking/file_store.py", line 442, in _get_run_info
databricks_pb2.RESOURCE_DOES_NOT_EXIST)
mlflow.exceptions.MlflowException: Run '9066793c02604a6783d081ed965d5eff' not found
同样,当单独使用时,它们工作得非常好,但是它们一起导致了这个错误。有什么想法吗
谢谢你的报道。我没有意识到这个问题
这是因为Hydra正在更改每次运行的当前工作目录
我做了一些挖掘,这是你能做的:
顺便说一下,Hydra 1.0对设置环境变量有了新的支持:
这几乎起作用了:
不幸的是,Hydra在函数退出时清理环境变量,而MLFlow在进程退出时进行最终保存,因此不再设置环境变量。 MLFlow还不断重新初始化用于存储实验数据的FileStore对象。如果他们只初始化了它一次并重用了同一个对象,那么上面的方法就可以工作了
相关问题 更多 >
编程相关推荐