请参与 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 集群。
致谢
自上次发布博文以来,已经发布了几个版本。以下人员自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
-
-