提交新活动

谢谢!您的提交已收到!
糟糕!提交表单时出错了。

提交新闻稿

谢谢!您的提交已收到!
糟糕!提交表单时出错了。

订阅电子报

谢谢!您的提交已收到!
糟糕!提交表单时出错了。
2017年9月24日

Dask 0.15.3 版本发布

作者

这项工作由 Anaconda Inc.和 MooreFoundation 的数据驱动发现计划支持。

我很高兴宣布 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 通道上可用。几天后它们将在默认通道上提供。

完整的更新日志可在此处查看

以下是一些值得注意的变化。

掩码数组

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)

工作进程的内存管理

Dask 工作进程在达到分配的内存限制的 60% 时会将多余数据溢出到磁盘。此前,我们仅通过累加工作进程生成的每块数据的内存使用量来衡量内存使用。这在以下几种情况下可能会失败:

  1. 我们的每数据估算有误
  2. 用户代码消耗了大量内存而我们没有跟踪

为了弥补这一点,我们现在还会使用 psutil 模块的系统工具定期检查工作进程的内存使用情况。如果进程使用率超过 70%,我们将数据转储到磁盘;如果超过 80%,将停止运行新任务;如果超过 95%(假设工作进程有 nanny 进程),将重启工作进程。

重大变更:此前,dask-worker 进程的 --memory-limit 关键字指定的是 60% 的“开始将数据推送到磁盘”限制。因此,如果您有 100GB 内存,之前您可能这样启动 dask-worker:

dask-worker ... --memory-limit 60e9 # 之前指定 60% 目标

工作进程会在内存数据达到 60GB 时开始将数据推送到磁盘。但是,现在我们将此含义更改为分配给进程的全部内存量。

dask-worker ... --memory-limit 100e9A # 现在指定 100% 目标

当然,您不必指定此限制(许多人也不指定)。系统会为您自动选择。如果您之前从未关心过这一点,那么现在也不必开始关心。

更多关于内存管理的信息在此处:https://distributed.dask.org.cn/en/latest/worker.html?highlight=memory-limit#memory-management

统计分析

工作进程现在每 10ms 轮询其工作线程,并记录正在使用的函数的计数。此信息可在诊断仪表板的新“Profile”页面上查看。它提供的信息是正交的,并且通常比典型的任务流图更详细。

这些图表可在每个工作进程上查看,调度器上也提供聚合视图。底部的时序图允许您选择计算的时间窗口,以限制并行分析的范围。

更多关于性能诊断的信息在此处: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