提交新活动

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

提交新闻专题

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

订阅新闻通讯

谢谢!您的提交已收到!
糟糕!提交表单时出现问题。
2019年6月22日

Dask 2.0 版本发布

作者

请参与 2019年Dask用户调查。您的回复有助于确定未来工作的优先顺序。

我们很高兴宣布 Dask 2.0 版本发布。这是一个包含错误修复和新功能的主要版本。

大多数软件主要版本变更都预示着许多新的激动人心的功能。但本次发布并非如此。我们提升主要版本号是因为我们为了改进可维护性而破坏了一些 API,并且决定放弃对 Python 2 的支持。

这篇博文概述了这些变更。

安装

一如既往,您可以通过 conda 安装 Dask

conda install dask

或通过 pip 从 PyPI 安装

pip install "dask[complete]" --upgrade

完整变更日志请参见此处

放弃对 Python 2 的支持

Python 2 将于2020年结束生命周期,只剩下六个月了。大多数主要的 PyData 项目目前都放弃了对 Python 2 的支持。有关您喜爱的某些项目的更多详细信息,请参见 Python 3声明

Python 2 用户可以继续使用旧版本的 Dask,这些版本目前仍在广泛使用。寻求 Python 2 中 Dask 长期支持的机构可以联系营利性咨询公司,例如 Quansight

放弃对 Python 2 的支持将使维护者能够投入更多时间修复错误和开发新功能。这也将使项目能够采用更现代的开发实践。

一些不兼容的小变更

我们现在列出了大多数不兼容变更的简要说明

  • distributed.bokeh 模块已移至 distributed.dashboard
  • 各种 ncores 关键字已移至 nthreads
  • Client.map/gather/scatter 不再接受迭代器和 Python 队列对象。用户可以使用 submit/as_completed 自行处理,或者使用 Streamz 库。
  • worker /main 路由已移至 /status
  • Cluster.workers 现在是 worker 名称到 worker 的字典映射,而不是像以前那样的列表

一些更大的有趣变化

我们不只破坏了东西。我们还添加了一些新东西 :)

数组元数据

以前,Dask 数组由其形状、块形状和数据类型(如 float、int 等)定义。

现在,Dask 数组也知道其块的类型。过去这几乎总是 NumPy 数组,所以存储它没有意义,但现在 Dask 数组越来越多地与稀疏数组块和 GPU 数组块一起使用,我们现在也在 ._meta 属性中维护此信息。Dask 数据框已经这样工作了,因此该模块的高级用户应该会感到熟悉。

>>> import dask.array as da
>>> x = da.eye(1000000)
>>> x._meta
array([], shape=(0, 0), dtype=float64)

>>> import sparse
>>> s = x.map_blocks(sparse.COO.from_numpy)
>>> s._meta
<COO: shape=(0, 0), dtype=float64, nnz=0, fill_value=0.0>

这项工作主要由 Peter Entschev 完成

数组 HTML 输出

Dask 数组现在可以在 Jupyter Notebook 中很好地显示,显示关于其大小和块大小的信息表格,以及其块结构的视觉图。

import dask.array as da
x = da.ones((10000, 1000, 1000))

数组 块 字节 80.00 GB 125.00 MB 形状 (10000, 1000, 1000) (250, 250, 250) 数量 640 任务 640 块 类型 float64 numpy.ndarray 1000100010000

从调度器仪表板代理工作器仪表板

如果您使用过 Dask.distributed,您可能熟悉 Dask 的调度器仪表板,它通过实时交互式 Bokeh 仪表板显示集群上的计算状态。但是您可能不知道 Dask 工作器也有自己的仪表板,它显示了该单个工作器状态的完全独立的一组图表。

历史上,这些工作器仪表板的使用并不普遍,因为很难连接到它们。用户不知道它们的地址,或者网络规则不允许直接 Web 连接。幸运的是,调度器仪表板现在能够将用户的连接代理到工作器仪表板。

您可以通过单击“信息”选项卡,然后选择任意工作器旁边的“仪表板”链接来访问。您还需要安装 jupyter-server-proxy

pip install jupyter-server-proxy

感谢 Ben Zaitlen 的这项有趣补充。我们希望现在这些图表更易于查看,人们将更多地投入开发它们的图表。

到处使用 Black

我们现在在大多数 Dask 仓库中使用了 Black 代码格式化工具。这些仓库包含 pre-commit 钩子,我们建议在项目开发时使用。

cd /path/to/dask
git checkout master
git pull upstream master

pip install pre-commit
pre-commit install

然后,每当您尝试提交代码时,Git 都会调用 black 和 flake8。

Dask Gateway

我们还想向读者介绍一个相对较新的项目 DaskGateway,它使机构和 IT 部门能够为各种用户控制多个 Dask 集群。

Dask Gateway

致谢

自上次发布博文以来,已经发布了几个版本。以下人员自1月23日发布 1.1.0 版本以来对以下仓库做出了贡献

  • dask/dask
  • (Rick) Richard J Zamora
  • Abhinav Ralhan
  • Adam Beberg
  • Alistair Miles
  • Álvaro Abella Bascarán
  • Anderson Banihirwe
  • Aploium
  • Bart Broere
  • Benjamin Zaitlen
  • Bouwe Andela
  • Brett Naul
  • Brian Chu
  • Bruce Merry
  • Christian Hudon
  • Cody Johnson
  • Dan O’Donovan
  • Daniel Saxton
  • Daniel Severo
  • Danilo Horta
  • Dimplexion
  • Elliott Sales de Andrade
  • Endre Mark Borza
  • Genevieve Buckley
  • George Sakkis
  • Guillaume Lemaitre
  • HSR05
  • Hameer Abbasi
  • Henrique Ribeiro
  • Henry Pinkard
  • Hugo
  • Ian Bolliger
  • Ian Rose
  • Isaiah Norton
  • James Bourbeau
  • Janne Vuorela
  • John Kirkham
  • Jim Crist
  • Joe Corbett
  • Jorge Pessoa
  • Julia Signell
  • JulianWgs
  • Justin Poehnelt
  • Justin Waugh
  • Ksenia Bobrova
  • Lijo Jose
  • Marco Neumann
  • Mark Bell
  • Martin Durant
  • Matthew Rocklin
  • Michael Eaton
  • Michał Jastrzębski
  • Nathan Matare
  • Nick Becker
  • Paweł Kordek
  • Peter Andreas Entschev
  • Philipp Rudiger
  • Philipp S. Sommer
  • Roma Sokolov
  • Ross Petchler
  • Scott Sievert
  • Shyam Saladi
  • Søren Fuglede Jørgensen
  • Thomas Zilio
  • Tom Augspurger
  • Yu Feng
  • aaronfowles
  • amerkel2
  • asmith26
  • btw08
  • gregrf
  • mbarkhau
  • mcsoini
  • severo
  • tpanza
  • dask/distributed
  • Adam Beberg
  • Benjamin Zaitlen
  • Brett Jurman
  • Brett Randall
  • Brian Chu
  • Caleb
  • Chris White
  • Daniel Farrell
  • Elliott Sales de Andrade
  • George Sakkis
  • James Bourbeau
  • Jim Crist
  • John Kirkham
  • K.-Michael Aye
  • Loïc Estève
  • Magnus Nord
  • Manuel Garrido
  • Marco Neumann
  • Martin Durant
  • Mathieu Dugré
  • Matt Nicolls
  • Matthew Rocklin
  • Michael Delgado
  • Michael Spiegel
  • Muammar El Khatib
  • Nikos Tsaousis
  • Olivier Grisel
  • Peter Andreas Entschev
  • Sam Grayson
  • Scott Sievert
  • Tom Augspurger
  • Torsten Wörtwein
  • amerkel2
  • condoratberlin
  • deepthirajagopalan7
  • jukent
  • plbertrand
  • dask/dask-ml
  • Alejandro
  • Florian Rohrer
  • James Bourbeau
  • Julien Jerphanion
  • Matthew Rocklin
  • Nathan Henrie
  • Paul Vecchio
  • Ryan McCormick
  • Saadullah Amin
  • Scott Sievert
  • Sriharsha Atyam
  • Tom Augspurger
  • dask/dask-jobqueue
  • Andrea Zonca
  • Guillaume Eynard-Bontemps
  • Kyle Husmann
  • Levi Naden
  • Loïc Estève
  • Matthew Rocklin
  • Matyas Selmeci
  • ocaisa
  • dask/dask-kubernetes
  • Brian Phillips
  • Jacob Tomlinson
  • Jim Crist
  • Joe Hamman
  • Joseph Hamman
  • Matthew Rocklin
  • Tom Augspurger
  • Yuvi Panda
  • adam
  • dask/dask-examples
  • Christoph Deil
  • Genevieve Buckley
  • Ian Rose
  • Martin Durant
  • Matthew Rocklin
  • Matthias Bussonnier
  • Robert Sare
  • Tom Augspurger
  • Willi Rath
  • dask/dask-labextension
  • Daniel Bast
  • Ian Rose
  • Matthew Rocklin
  • Yuvi Panda