可以dask分布式处理不均匀的工作节点吗?
例如,如果4核计算机上有一个dask worker,而2核计算机上有第二个dask worker,那么是否会使用所有6个核心?
还是严格要求dask在所有计算机之间分配工作吗?也就是说,dask可以选择将所有工作发送到一台计算机,因为它确定如果分发会有太多的通信开销吗?
答案 0 :(得分:4)
可以dask分布式处理不均匀的工作节点吗?
是的,节点的核心数量,内存量可能不均匀,甚至还有像GPU这样的特殊硬件,Dask中有一些机制可以解决这个问题。
例如,如果4核计算机上有一个dask worker,而2核计算机上有第二个dask worker,那么是否会使用所有6个核心?
是的,Dask调度程序将自动相对于每台机器的核心数进行负载平衡。如果由于某种原因这是行为不端(例如核心数量不正确)那么工作窃取机制无论如何都会平衡它。
还是严格要求dask在所有计算机之间分配工作吗?也就是说,dask可以选择将所有工作发送到一台计算机,因为它确定如果分发会有太多的通信开销吗?
Dask调度程序维护每个中间结果的大小,并决定将数据移动到具有这些大小和预期运行时的某些计算机。当然,Dask会决定工人应该保持闲置,因为中间结果太昂贵而无法沟通。
如果您愿意,您也可以手动控制(虽然自动启发式应该没问题)。见http://distributed.readthedocs.io/en/latest/locality.html
有关此主题的更多信息,请访问http://distributed.readthedocs.io/en/latest/scheduling-policies.html