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

What do KilledWorker exceptions mean in Dask?

在将 Dask 与 dask.distributed 调度程序一起使用时,我的任务返回时出现 KilledWorker 异常。这些错误是什么意思?

当 Dask 调度程序不再信任您的任务时会生成此错误,因为当工作人员意外死亡时它经常出现。它旨在保护集群免受杀死工作人员的任务,例如段错误或内存错误。

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

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

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

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