4

mlflow在此示例中描述的 docker 环境中使用,并以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 卷的推荐方法是什么?

4

2 回答 2

2

在 mlflow 问题跟踪器上提出了类似的问题,请参阅“从 Docker 环境中访问大数据”。它的摘录说:

但是,MLFlow Docker 环境目前只能访问存储到存储库或映像中的数据,或者必须为每次运行下载一个大型数据集。

...

一个潜在的解决方案是使用户能够将卷(例如,包含数据的本地目录)安装到 Docker 容器中

看起来这是其他人也会从中受益的功能。这里最好的做法是为坐骑提供支持,或者在其他人实施之前跟踪问题。

为什么首先需要挂载/data文件夹?还有另一个问题,一个PR包含与将工件存储在主机上的自定义位置相关的修复,这可能是您正在寻找的东西吗?

于 2019-07-18T07:49:00.697 回答
0

最后,为了避免上述问题并促进卷安装,我现在使用三个交互的 docker 容器运行我的实验。一个运行机器学习代码,一个运行mlflow服务器,一个运行postgresql服务器。我密切关注这篇演练文章进行设置。它工作得很好,并且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
于 2019-08-02T14:15:54.040 回答