分布式dask调度程序节点是否需要与工作节点相同的环境?

分布式dask调度程序节点是否需要与工作节点相同的环境?,dask,dask-distributed,Dask,Dask Distributed,当使用基本CLI方法(即dask调度程序、dask工作程序)设置分布式dask群集时,dask调度程序节点是否也需要与工作程序节点相同的环境(例如包)?我有一个docker swarm,其中NVIDIA Jetson AGX(Arm64v8+GPU)单元作为工作单元,Intel x86-64服务器作为调度程序(无GPU),因此要拥有相同的环境并不容易(如果不可能的话)。请求将主要来自Jetson单位提供的Jupyter笔记本电脑。因此,请求和计算环境是相同的(不同的容器,但图像相同),只是调度程

当使用基本CLI方法(即dask调度程序、dask工作程序)设置分布式dask群集时,dask调度程序节点是否也需要与工作程序节点相同的环境(例如包)?我有一个docker swarm,其中NVIDIA Jetson AGX(Arm64v8+GPU)单元作为工作单元,Intel x86-64服务器作为调度程序(无GPU),因此要拥有相同的环境并不容易(如果不可能的话)。请求将主要来自Jetson单位提供的Jupyter笔记本电脑。因此,请求和计算环境是相同的(不同的容器,但图像相同),只是调度程序不同。

答案大致是“是”。客户端和工作程序共享代码所涉及的所有包的相同(或兼容,这几乎是一样的)包版本是至关重要的,因为对象将在一个环境中被pickle,而在另一个环境中被取消pickle

对于调度程序,是dask/distributed必须完全匹配,因为某些内部消息传递逻辑可能已更改。但是你也应该试着让通讯中使用的其他软件包的版本也一样;很难给出详尽的清单。差异可能导致失败。目前,
client.get\u versions
方法检查以下版本:python、dask、distributed、msgpack、cloudpickle、tornado、toolz、numpy、lz4、blosc。如果这些都是相同的,你可能有一个很好的机会