缓存忽略可用内存参数

Caching ignores available memory argument

我正在处理一个无法放入内存的大数据集,因此缓存是唯一的选择。

首先,Dask 的文档在缓存方面相当混乱。关于该主题有 2 个不同的部分建议类似的解决方案。

  1. Opportunistic Caching,仍被标记为 0.6.2 版本中引入的实验性功能(最新版本为 0.17.0)
  2. "How do I spill to disk?" in the FAQs, based on Chest

其次,缓存到磁盘似乎在我的代码中不起作用。我尝试了上面列出的两种方法。我实例化一个 Cache/Chest 对象并全局注册它,设置同步或线程或多处理调度程序。 缓存机制失败:它填满了整个 ram+swap 内存,忽略了 available_memory 参数。每当我指定缓存路径时,我都没有看到 .keys 文件的大小增加。

如何有效地溢出到磁盘?

使用 Dask v0.17.0、cachey v0.1.1、cloudpickle 0.5.2

今天溢出到磁盘的最简单方法就是使用较新的 dask.distributed 调度程序(它在单台机器上运行良好)。尝试 运行 以下操作:

from dask.distributed import Client
client = Client()

所有计算现在都应默认使用此调度程序(除非您明确用 get= 覆盖)。默认情况下,此调度程序将处理溢出到磁盘。

请注意,第一个 link 中提到的机会缓存与溢出到磁盘以避免内存问题有很大不同。