KilledWorker异常在Dask中意味着什么?

KilledWorker异常在Dask中意味着什么?,dask,Dask,在Dask.distributed scheduler中使用Dask时,我的任务返回时出现KilledWorker异常。这些错误是什么意思?当Dask计划程序不再信任您的任务时,会生成此错误,因为当工作人员意外死亡时,此错误经常出现。它的设计目的是保护集群不受导致工作人员死亡的任务的影响,例如由于SEGFULTS或内存错误 每当某个工作进程意外死亡时,计划程序会记录该工作进程死亡时正在运行的任务。它会在其他员工身上重试这些任务,但也会将其标记为可疑。如果同一任务在多个工作线程死亡时出现,那么调度

在Dask.distributed scheduler中使用Dask时,我的任务返回时出现
KilledWorker
异常。这些错误是什么意思?

当Dask计划程序不再信任您的任务时,会生成此错误,因为当工作人员意外死亡时,此错误经常出现。它的设计目的是保护集群不受导致工作人员死亡的任务的影响,例如由于SEGFULTS或内存错误

每当某个工作进程意外死亡时,计划程序会记录该工作进程死亡时正在运行的任务。它会在其他员工身上重试这些任务,但也会将其标记为可疑。如果同一任务在多个工作线程死亡时出现,那么调度程序最终将放弃尝试重试此任务,并将其标记为失败,出现异常
KilledWorker

这通常意味着您的任务还有其他问题。可能是它导致了分段错误或分配了太多内存。也许它使用的库不是线程安全的。或许这只是非常不幸。无论如何,您应该检查员工日志,以确定员工失败的原因。这可能是一个比任务失败更大的问题

您可以通过修改
~/.config/dask/distributed.yaml
文件中的以下条目来控制此行为

allowed-failures: 3     # number of retries before a task is considered bad

在我的例子中,我通过跟踪UI看到的日志中没有关于任务崩溃原因的有用细节。是否有其他日志需要查找?在某个文件系统路径中转储要查看的文件?!作为标准实践,dask工作人员默认情况下登录到stdout。您可以在设置工作程序时将此输出重定向到文件。如果没有文件
~/.dask/config.yaml
,如何更改此参数?此文件已移动到
~/.config/dask/distributed.yaml
。我已经更新了答案