我在example中所述的docker环境中使用mlflow
,然后从mlflow run .
开始运行。
我得到这样的输出
2019/07/17 16:08:16 INFO mlflow.projects: === Building docker image mlflow-myproject-ab8e0e4 ===
2019/07/17 16:08:18 INFO mlflow.projects: === Created directory /var/folders/93/xt2vz36s7jd1fh9bkhkk9sgc0000gn/T/tmp1lxyqqw9 for downloading remote URIs passed to arguments of type 'path' ===
2019/07/17 16:08:18 INFO mlflow.projects: === Running command 'docker run
--rm -v /Users/foo/bar/mlruns:/mlflow/tmp/mlruns -e
MLFLOW_RUN_ID=ef21de61d8a6436b97b643e5cee64ae1 -e MLFLOW_TRACKING_URI=file:///mlflow/tmp/mlruns -e MLFLOW_EXPERIMENT_ID=0 mlflow-myproject-ab8e0e4 python train.py' in run with ID 'ef21de61d8a6436b97b643e5cee64ae1' ===
我想将一个名为my_docker_volume
的Docker卷安装到该容器
在
路径/data
。因此,我想代替上面显示的docker run
使用
docker run --rm --mount source=my_docker_volume,target=/data -v /Users/foo/bar/mlruns:/mlflow/tmp/mlruns -e MLFLOW_RUN_ID=ef21de61d8a6436b97b643e5cee64ae1 -e MLFLOW_TRACKING_URI=file:///mlflow/tmp/mlruns -e MLFLOW_EXPERIMENT_ID=0 mlflow-myproject-ab8e0e4 python train.py
我看到原则上我可以在没有安装卷的情况下运行一次,然后
复制docker run ...
并添加--mount source=my_volume,target=/data
,但是
我宁愿使用类似的
mlflow run --mount source=my_docker_volume,target=/data .
但这显然不起作用,因为--mount不是用于
mlflow run
。
那么挂载docker卷的推荐方式是什么?
为避免上述问题并简化卷安装,我现在使用三个交互的Docker容器运行实验。一种运行机器学习代码,一种运行mlflow
服务器,另一种运行postgresql
服务器。我密切关注此walk-through article进行设置。它运作良好,并且docker-compose
使批量安装变得容易。指标,参数和元数据存储在安装到本地持久卷的数据库中。工件记录在目录/mlflow
中。但是,UI仅显示指标和参数。即使将default-artifact-root
设置为/mlflow
,也无法在UI中显示工件。这是一个单独的问题。
答案 0 :(得分:1)
mlflow问题跟踪器出现了类似的问题,请参阅“ Access large data from within a Docker environment”。摘录说:
但是,MLFlow Docker环境当前只能访问存储在存储库或映像中的数据,或者每次运行都必须下载大型数据集。
...
一种潜在的解决方案是使用户能够将卷装入卷(例如,包含数据的本地目录)到Docker容器中。
看起来这是其他人也会从中受益的功能。最好的做法是为安装提供支持,或者跟踪问题,直到其他人实施为止。
为什么首先需要安装/data
文件夹?还有一个问题,PR包含与在主机上的自定义位置存储工件有关的修复程序,这可能是您要找的东西吗?
答案 1 :(得分:0)
最后,为了避免上述问题并简化卷安装,我现在使用三个交互的Docker容器运行实验。一种运行机器学习代码,一种运行mlflow
服务器,另一种运行postgresql
服务器。我密切关注此walk-through article进行设置。它运作良好,并且docker-compose
使批量安装变得容易。指标,参数和元数据存储在安装到本地持久卷的数据库中。工件记录在目录/mlflow
中,或者如果您愿意,也记录在Docker卷中。
在docker-compose.yml
中不应该
volumes:
- ./postgres-store:/var/lib/postgresql/data
它将绑定名为postgres-store
的本地文件夹。
相反,要挂载Docker卷postgres_store
,应使用
volumes:
- postgres-store:/var/lib/postgresql/data