在 Docker 个容器上实施 Dask 调度程序和工作程序
Implementing Dask scheduler and workers on Docker containers
我需要 运行 一个具有多个并行进程的 scikit-learn RandomForestClassifier。为此,我正在考虑用 N 个 worker 实现一个 Dask 调度程序,其中调度程序和每个 worker 运行 在一个单独的 Docker 容器中。
同样 运行 在单独的 Docker 容器中的客户端应用程序将首先连接到调度程序并使用 with joblib.parallel_backend('dask'):
启动 scikit-learn 进程。
用于训练机器学习模型的数据存储在客户端应用程序 Docker 容器中的镶木地板中。让工作人员访问数据的最佳做法是什么?数据是否应该位于其他地方,在共享目录中?
由于 Apach Parquet 是基于文件系统的,这完全取决于您正在构建的体系结构,这意味着您的项目 运行 是在单个服务器上还是分布在多个服务器上。
如果您 运行 在单个服务器上运行,那么容器之间 docker volume
的简单共享,甚至是本地文件存储上的公共挂载都可以完成这项工作。
另一方面,如果您尝试在多个服务器上设置分布式训练,那么您将需要某种类型的文件服务器来处理文件。
共享文件的一种简单方法是通过 NFS
服务器,其中一种常用的图像是 erichough/nfs-server。您将需要使用此容器 export
存储文件的本地文件夹,您将需要 mount
其余服务器上的 fs
。
我需要 运行 一个具有多个并行进程的 scikit-learn RandomForestClassifier。为此,我正在考虑用 N 个 worker 实现一个 Dask 调度程序,其中调度程序和每个 worker 运行 在一个单独的 Docker 容器中。
同样 运行 在单独的 Docker 容器中的客户端应用程序将首先连接到调度程序并使用 with joblib.parallel_backend('dask'):
启动 scikit-learn 进程。
用于训练机器学习模型的数据存储在客户端应用程序 Docker 容器中的镶木地板中。让工作人员访问数据的最佳做法是什么?数据是否应该位于其他地方,在共享目录中?
由于 Apach Parquet 是基于文件系统的,这完全取决于您正在构建的体系结构,这意味着您的项目 运行 是在单个服务器上还是分布在多个服务器上。
如果您 运行 在单个服务器上运行,那么容器之间 docker volume
的简单共享,甚至是本地文件存储上的公共挂载都可以完成这项工作。
另一方面,如果您尝试在多个服务器上设置分布式训练,那么您将需要某种类型的文件服务器来处理文件。
共享文件的一种简单方法是通过 NFS
服务器,其中一种常用的图像是 erichough/nfs-server。您将需要使用此容器 export
存储文件的本地文件夹,您将需要 mount
其余服务器上的 fs
。