Dask 0.15.3 版本发布
这项工作由 Anaconda Inc. 和来自 Moore Foundation 的数据驱动发现计划提供支持。
我很高兴宣布发布 Dask 0.15.3 版本。此版本包含稳定性增强和错误修复。本博客文章概述了自 8 月 30 日 0.15.2 版本发布以来的一些重要变更。
您可以使用 conda 安装 Dask
conda install -c conda-forge dask
或者从 PyPI 使用 pip 安装
pip install dask[complete] --upgrade
Conda 包在 conda-forge 通道中均可用。几天后将在 defaults 通道中可用。
完整的变更日志可在此处查看
以下是一些重要变更。
掩码数组
Dask.array 现在支持 类似于 NumPy 的掩码数组。
In [1]: import dask.array as da
In [2]: x = da.arange(10, chunks=(5,))
In [3]: mask = x % 2 == 0
In [4]: m = da.ma.masked_array(x, mask)
In [5]: m
Out[5]: dask.array<masked_array, shape=(10,), dtype=int64, chunksize=(5,)>
In [6]: m.compute()
Out[6]:
masked_array(data = [-- 1 -- 3 -- 5 -- 7 -- 9],
mask = [ True False True False True False True False True False],
fill_value = 999999)
这项工作主要由 Jim Crist 完成,并得到英国气象局的部分资助,以支持 Iris 项目。
atop
中的常量
Dask.array 专家会对 atop 函数很熟悉,该函数为相当一部分 dask.array 功能提供支持,并常用于构建自定义算法。当给定索引为 None
时,此函数现在支持常量。
atop(func, 'ijk', x, 'ik', y, 'kj', CONSTANT, None)
Worker 的内存管理
Dask worker 在达到分配内存限制的 60% 时会将多余数据溢写到磁盘。之前,我们只通过累加 worker 生成的每块数据的内存使用量来衡量内存使用。这在某些情况下可能会失效:
- 我们对每块数据的估计有误
- 用户代码消耗了大量内存而我们未能跟踪到
为了弥补这一点,我们现在还使用带有 psutil 模块的系统工具定期检查 worker 的内存使用情况。如果进程使用率上升到 70% 左右,我们会将数据转储到磁盘;如果上升到 80% 以上,则停止运行新任务;如果上升到 95% 以上,则重启 worker(假设 worker 有一个 nanny 进程)。
破坏性变更:之前,dask-worker
进程的 --memory-limit
关键字指定了 60% 的“开始推送到磁盘”限制。因此,如果您有 100GB 内存,之前您可能这样启动 dask-worker:
dask-worker ... --memory-limit 60e9 # before specify 60% target
一旦 worker 内存中达到 60GB 数据,它就会开始推送到磁盘。然而,现在我们将此含义更改为分配给进程的全部内存量。
dask-worker ... --memory-limit 100e9A # now specify 100% target
当然,您不必指定此限制(许多人不会)。它会为您自动选择。如果您之前从未关心过这个,那么现在也不必开始关心。
关于内存管理的更多信息请参见此处:https://distributed.dask.org.cn/en/latest/worker.html?highlight=memory-limit#memory-management
统计分析 (Statistical Profiling)
Worker 现在每 10ms 轮询其 worker 线程,并记录正在使用的函数。此信息可在诊断仪表板的新“Profile”页面上查看。它提供了与典型任务流图正交且通常更详细的信息。
这些图表可在每个 worker 上查看,聚合视图可在 scheduler 上查看。底部的时序图允许您选择计算的时间窗口以限制并行分析。
关于诊断性能的更多信息请参见此处:https://distributed.dask.org.cn/en/latest/diagnosing-performance.html
致谢
自 8 月 30 日 0.15.2 版本发布以来,以下人员对 dask/dask 仓库做出了贡献:
- Adonis
- Christopher Prohm
- Danilo Horta
- jakirkham
- Jim Crist
- Jon Mease
- jschendel
- Keisuke Fujii
- Martin Durant
- Matthew Rocklin
- Tom Augspurger
- Will Warner
自 9 月 2 日 1.18.3 版本发布以来,以下人员对 dask/distributed 仓库做出了贡献:
- Casey Law
- Edrian Irizarry
- Matthew Rocklin
- rbubley
- Tom Augspurger
- ywangd
博客评论由 Disqus 提供支持