让所有 dask worker 都可以使用服务中的所有导入的最佳方法是什么?
What is the best approach to make all the imports with in the service available across all dask workers?
我有几个关于如何让 Dask 工作人员可以使用导入的问题。
1) 我看到使用 upload_file 功能可以使文件可供工作人员使用。
除了这个之外还有什么其他选择可以完成这项工作?
2)如果我们为所有导入包含 upload_file,对于后端的每个服务调用,它会继续上传给工作人员吗?任务执行后会被移除吗?
是的,有很多方法可以做到这一点,具体取决于您部署 dask 的方式。
举几个例子:
- 所有工作人员都可以访问 NFS,因此请将您的代码文件放在那里并将其包含在 python 路径中
- workers 是通过 SSH 访问的,所以使用 scp 将你的代码复制到所有 worker 机器上
- 您正在通过 docker/kubernetes 进行部署,因此请在图像中包含代码
- 您正在通过 dask-yarn 进行部署:查找 conda-pack
upload_file 将代码放入工人 python 路径上的临时位置。该文件将保留在那里,至少直到工作进程结束时,它不会在任务之间重新上传。它将被代码作为正常 python 模块导入(即,再次导入将使用缓存版本)。在 upload_file 命令后加入的新工作人员将没有文件副本。
我有几个关于如何让 Dask 工作人员可以使用导入的问题。 1) 我看到使用 upload_file 功能可以使文件可供工作人员使用。 除了这个之外还有什么其他选择可以完成这项工作? 2)如果我们为所有导入包含 upload_file,对于后端的每个服务调用,它会继续上传给工作人员吗?任务执行后会被移除吗?
是的,有很多方法可以做到这一点,具体取决于您部署 dask 的方式。
举几个例子:
- 所有工作人员都可以访问 NFS,因此请将您的代码文件放在那里并将其包含在 python 路径中
- workers 是通过 SSH 访问的,所以使用 scp 将你的代码复制到所有 worker 机器上
- 您正在通过 docker/kubernetes 进行部署,因此请在图像中包含代码
- 您正在通过 dask-yarn 进行部署:查找 conda-pack
upload_file 将代码放入工人 python 路径上的临时位置。该文件将保留在那里,至少直到工作进程结束时,它不会在任务之间重新上传。它将被代码作为正常 python 模块导入(即,再次导入将使用缓存版本)。在 upload_file 命令后加入的新工作人员将没有文件副本。