提交新活动

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。

提交新闻专题

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。

订阅新闻通讯

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。
2018年9月5日

Dask 0.19.0 版本发布

作者

这项工作由 Anaconda 公司提供支持。

我很高兴宣布 Dask 0.19.0 版本发布。这是一个包含错误修复和新功能的主要版本。上一个版本 0.18.2 于 7 月 23 日发布。这篇博文概述了自 6 月 14 日发布的 0.18.0 版本博文以来的显著变化。

您可以使用 conda 安装 Dask

conda install dask

或者从 PyPI 使用 pip 安装

pip install dask[complete] --upgrade

完整的更新日志可在此处获取

显著变化

在过去两个月里,完成了大量工作,但大多数变化都是微小而分散的。与上游库(如 Numpy 和 Pandas)的稳定性、功能对等性以及性能都得到了显著提升,但这些改进难以浓缩成博文形式。

话虽如此,新版本中还有一些更令人兴奋的变化。

Python 版本

我们已放弃对 Python 3.4 的官方支持,并增加了对 Python 3.7 的官方支持。

部署到 Hadoop 集群

在过去几个月里,Jim Crist 构建了一套工具,用于在 YARN(Hadoop 集群中使用的主要集群管理器)上部署应用程序。

  • Conda-pack:打包 Conda 环境,以便分发到分布式集群,尤其是在可能没有 Python 或 Conda 的情况下。
  • Skein:轻松地从非 JVM 系统启动和管理 YARN 应用程序
  • Dask-Yarn:一个围绕 Skein 的精简库,用于启动和管理 Dask 集群

Jim 在最近的两篇博文中介绍了 Skein 和 Dask-Yarn

实现 Actor

一些高级工作负载需要直接管理和修改工作节点上的状态。像 Dask 这样基于任务的框架可以通过使用长时间运行任务来强制执行这种工作负载,但这是一种不舒服的体验。

为了解决这个问题,我们在 Dask 中添加了一个实验性的 Actor 框架,与标准的任务调度系统并行。这降低了延迟,消除了调度开销,并提供了直接修改工作节点上状态的能力,但失去了一些优点,如弹性和诊断。采纳 Actor 的想法是厚颜无耻地借鉴了 Ray 项目 :)

class Counter
def __init__(self)
self.n = 0

def increment(self)
self.n += 1
return self.n

counter = client.submit(Counter, actor=True).result()

>>> future = counter.increment()
>>> future.result()
1

您可以在 Actor 文档中阅读更多关于 actor 的信息。

仪表盘改进

Dask 仪表盘是理解分布式性能的关键工具。我们在本次发布中解决了一些让初学者困惑的易用性问题。

保存任务流图

现在可以通过将计算包装在 get_task_stream 上下文管理器中来保存任务流记录。

from dask.distributed import Client, get_task_stream
client = Client(processes=False)

import dask
df = dask.datasets.timeseries()

with get_task_stream(plot='save', filename='my-task-stream.html') as ts
df.x.std().compute()

>>> ts.data
[{'key': "('make-timeseries-edc372a35b317f328bf2bb5e636ae038', 0)",
'nbytes': 8175440,
'startstops': [('compute', 1535661384.2876947, 1535661384.3366017)],
'status': 'OK',
'thread': 139754603898624,
'worker': 'inproc://192.168.50.100/15417/2'},

...

这提供了在此期间每个工作节点上完成的每个任务的开始和停止时间。它还将这些数据保存为 HTML 文件,您可以与他人分享。这对于团队内部沟通性能问题非常有价值。我通常将 HTML 文件作为 gist 上传,然后使用 rawgit.com 分享。

$ gist my-task-stream.html
https://gist.github.com/f48a121bf03c869ec586a036296ece1a

适应不同屏幕尺寸

仪表盘的布局设计用于单屏幕使用,与 Jupyter notebook 并排显示。许多 Dask 开发者在使用笔记本电脑时都是这样操作的,但是许多用户并非如此,原因有二:

  1. 他们在办公室环境中工作,有多个屏幕
  2. 他们是 Dask 的新手,不习惯将屏幕分成两半

在这些情况下,仪表盘的样式会变得很奇怪。幸运的是,Luke CanavanDerek Ludwig 最近大大改进了仪表盘的 CSS,使其可以在窄屏和宽屏之间切换。这是一张截图。

Jupyter Lab 扩展

现在可以使用新更新的 dask-labextension 直接在 Jupyter Lab 中嵌入仪表盘窗格。

jupyter labextension install dask-labextension

这允许您直接在 JupyterLab 中布局自己的仪表盘。您可以组合来自不同页面的图表,控制它们的大小等等。您需要提供仪表盘服务器的地址(本地机器上默认为 http://localhost:8787),但之后一切都应该在会话之间保持不变。现在,当我打开 JupyterLab 并启动 Dask Client 时,我看到的是这样

感谢 Ian Rose 在此完成了大部分工作。

推广

Dask 用户故事

使用 Dask 的用户一直在 Dask 用户故事中撰写他们的经验。在过去几个月里,以下人员撰写并贡献了他们的经验

  1. Sidewalk Labs 的城市建模,作者 Brett Naul
  2. 蚊子基因组测序,作者 Alistair Miles
  3. Full Spectrum 的贷款和银行服务,作者 Hussain Sultan
  4. IceCube 的宇宙射线探测,作者 James Bourbeau
  5. Pangeo 的大数据地球科学,作者 Ryan Abernathey
  6. 国家大气研究中心的流域水文建模,作者 Joe Hamman
  7. 移动网络建模,作者 Sameer Lalwani
  8. 空间科学与工程中心的卫星图像处理,作者 David Hoese

这些故事帮助人们了解 Dask 的适用场景和不适用场景,并提供了关于其在实践中如何使用的有用背景信息。我们欢迎对此项目做出进一步贡献。这对于更广泛的社区非常有价值。

Dask 示例

Dask-Examples 仓库维护了在小型机器上使用 Dask 的易于运行的示例,适用于入门级笔记本电脑或小型云实例。这些示例托管在 mybinder.org 上,并集成到我们的文档中。最近出现了一些新的示例,尤其是在机器学习方面。我们鼓励大家点击下方链接试用它们。

Binder

其他项目

  • dask-image 项目最近发布了。它包含了一些围绕 dask 数组的图像处理程序。
  • 该项目主要由 John Kirkham 维护。
  • Dask-ML 最近发布了一个错误修复版本
  • 用于自动化机器学习的 TPOT 库最近发布了一个新版本,增加了 Dask 支持以并行化其模型训练。更多信息可在 TPOT 文档中获取。

致谢

自 6 月 14 日以来,以下人员为以下仓库做出了贡献

用于并行算法的核心 Dask 仓库

  • Anderson Banihirwe
  • Andre Thrill
  • Aurélien Ponte
  • Christoph Moehl
  • Cloves Almeida
  • Daniel Rothenberg
  • Danilo Horta
  • Davis Bennett
  • Elliott Sales de Andrade
  • Eric Bonfadini
  • GPistre
  • George Sakkis
  • Guido Imperiale
  • Hans Moritz Günther
  • Henrique Ribeiro
  • Hugo
  • Irina Truong
  • Itamar Turner-Trauring
  • Jacob Tomlinson
  • James Bourbeau
  • Jan Margeta
  • Javad
  • Jeremy Chen
  • Jim Crist
  • Joe Hamman
  • John Kirkham
  • John Mrziglod
  • Julia Signell
  • Marco Rossi
  • Mark Harfouche
  • Martin Durant
  • Matt Lee
  • Matthew Rocklin
  • Mike Neish
  • Robert Sare
  • Scott Sievert
  • Stephan Hoyer
  • Tobias de Jong
  • Tom Augspurger
  • WZY
  • Yu Feng
  • Yuval Langer
  • minebogy
  • nmiles2718
  • rtobar

用于分布式计算的 dask/distributed 仓库

  • Anderson Banihirwe
  • Aurélien Ponte
  • Bartosz Marcinkowski
  • Dave Hirschfeld
  • Derek Ludwig
  • Dror Birkman
  • Guillaume EB
  • Jacob Tomlinson
  • Joe Hamman
  • John Kirkham
  • Loïc Estève
  • Luke Canavan
  • Marius van Niekerk
  • Martin Durant
  • Matt Nicolls
  • Matthew Rocklin
  • Mike DePalatis
  • Olivier Grisel
  • Phil Tooley
  • Ray Bell
  • Tom Augspurger
  • Yu Feng

用于易于运行的示例的 dask/dask-examples 仓库

  • Albert DeFusco
  • Dan Vatterott
  • Guillaume EB
  • Matthew Rocklin
  • Scott Sievert
  • Tom Augspurger
  • mholtzscher