此工作得到 Anaconda Inc 的支持

为了增加透明度,我正尝试更频繁地撰写博客,介绍 Dask 及相关项目的当前工作进展。此处所述内容均未达到生产就绪状态。这篇博客文章写得仓促,因此请勿期待精炼润色。

上周,许多 Dask 开发者聚集参加了一年一度的 SciPy 2018 大会。因此,实际完成的工作量很少,但许多项目得以启动或进行了讨论。为了反映活动焦点的这种转变,这篇博客文章将重点介绍可能的变化和机会,以供读者进一步参与开发。

Dask 在 HPC 机器上

dask-jobqueue 项目在大会上大受欢迎。dask-jobqueue 帮助人们在传统的作业调度系统上启动 Dask,例如 PBS、SGE、SLURM、Torque、LSF 等在高性能计算机上很常见的系统。这些系统在科学、研究和高性能机器学习团队中非常普遍,但通常除了 MPI 之外,使用其他工具会有些困难。

这个项目在Pangeo 演讲、闪电演讲以及 Dask Birds of a Feather 会议中被提及。

在冲刺开发期间,许多人前来,我们一起走过了在 Cheyenne、Titan 和 Cori 等常见超级计算机上配置 Dask 的流程。这个过程通常需要大约十五分钟,并可能成为未来博客文章的主题。我们在配置文档中发布了这些集群的已知可行配置。

此外,有一个关于JupyterHub 的议题 (issue),旨在改进关于在这些机器上部署 JupyterHub 的最佳实践文档。社区已经成功完成过几次,也许是时候写点东西分享给大家了。

参与进来

如果您可以使用超级计算机,请尝试一下。在dask-jobqueue 文档中有一个 30 分钟的 YouTube 视频演示 (screencast),应该可以帮助您入门。

如果您是超级计算机的管理员,您可以考虑帮助构建一个配置文件,并将其放在 /etc/dask 中供用户使用。您也可以参与关于在 HPC 上使用 JupyterHub 的讨论。

Dask / Scikit-learn 演讲

Olivier Grisel 和 Tom Augspurger 准备并发表了一个精彩的演讲,介绍了新的 Dask-ML 项目的现状。

MyBinder 和 Bokeh 服务器

这并非 Dask 的变化,但 Min Ragan-Kelley 展示了如何通过mybinder.org 运行服务,这些服务不仅仅是 Jupyter。举个例子,这里有一个仓库,只需点击一下即可部署 Bokeh 服务器应用。

我认为通过与 Binder 结合使用,Min 实际上刚刚创建了免费使用的托管 Bokeh 服务器服务。据推测,这个相同的模式也可以很容易地很容易地应用于其他应用。

Dask 和使用 TPOT 进行自动化机器学习

Dask 和 TPOT 开发者正在讨论并行化自动化机器学习工具TPOT

TPOT 使用遗传算法在 scikit-learn 风格的 pipeline(流程)空间中进行搜索,以自动寻找表现不错的 pipeline 和模型。这涉及到相当多的计算量,Dask 可以帮助将其并行化到多台机器上。

参与进来

一些简单的功能现在已经可用,但要使其高效,我们需要深入研究。如果有人想参与的话,扩展该拉取请求以深入到 pipeline 内部将是一项不错的任务。这将有助于在 pipeline 之间共享中间结果。

Dask 和 Scikit-Optimize

在各种功能中,Scikit-optimize 提供了一个 BayesSearchCV 对象,它类似于 Scikit-Learn 的 GridSearchCVRandomSearchCV,但在根据先前结果选择新的参数进行测试方面更智能一些。超参数优化对于当前的 Dask-ML 工作负载而言是一个容易实现的目标,所以我们研究了这个项目如何能提供帮助。

到目前为止,我们只是在实验利用 Scikit-Learn/Dask 通过 joblib 的集成,查看有哪些机会。Dask 和 Scikit-Optimize 开发者之间的讨论正在这里进行

将 PyData/Scipy 教程集中到 Binder 上

我们正在将大量的 PyData/SciPy 教程放到 Binder 上,并希望将 YouTube 视频片段嵌入到 notebook 本身中。

这项工作在这里进行

动机

PyData 和 SciPy 社区提供教程作为大多数大会的一部分。这项活动既产生了教育性的 Jupyter notebook,也产生了讲解如何使用生态系统的视频。

然而,这些内容在大会之后并不容易被发现。人们可以在 YouTube 上搜索他们感兴趣的主题,并希望能找到 notebook 的链接以便本地下载,但这是一个相对杂乱的过程。不清楚应该选择哪个教程,并且在练习时很难将视频与 notebook 对应起来。我们可能没有充分利用这些资源。

为了帮助提高可访问性,我们将尝试以下几点

  1. 构建一个集中式网站,提供每个主题最近教程的链接
  2. 确保这些 notebook 可以在 Binder 上轻松运行
  3. 将 YouTube 演讲中的章节嵌入到每个 notebook 中,以便章节讲解与练习关联起来

参与进来

这只有在社区维护模式下才能长期有效。到目前为止,我们只工作了几小时,以下任务仍有很多工作要做

  1. 寻找合适的教程纳入
  2. 确保它们在mybinder.org 上运行良好
    • 是独立的,不依赖外部脚本运行
    • 有 environment.yml 或 requirements.txt 文件
    • 不需要太多资源
  3. 寻找教程视频
  4. 提交一个拉取请求到教程仓库,以便在每个 notebook 的适当时间点将其顶部单元格中嵌入 YouTube 演讲链接

Dask、Actor 和 Ray

我非常喜欢关于Ray 的演讲,这是另一个用于 Python 的分布式任务调度器。我猜想 Dask 会借鉴一些用于状态操作的 Actor 的想法。我希望 Ray 能采纳使用标准 Python 接口的想法,这样社区能更快地采用它。我鼓励大家观看这个演讲并尝试使用 Ray。它很简洁。

Dask-ML 的规划讨论

Dask 和 Scikit-learn 开发者再次有机会坐下来,并提出了一些议题 (issues),以帮助规划近期开发。这主要集中在构建重要的案例研究以激励未来开发,以及确定作为近期集成目标的算法和其他项目。

案例研究

算法

参与进来

我们在构建案例研究方面需要帮助,以推动项目的未来开发。在算法方面也有几个可以参与的地方。Dask-ML 是一个年轻且快速发展的项目,为新开发者提供了许多参与机会。

Dask 和用于低维嵌入的 UMAP

Leland McKinnes 发表了一个精彩的演讲 流形逼近和投影降维 (Uniform Manifold Approximation and Projection for Dimensionality Reduction),他在其中阐述了一个基础扎实的降维算法,类似于 PCA 或 T-SNE,但具有一些不错的特性。他与一些 Dask 开发者合作,我们发现了一些由于对 dask array 进行随机ish 切片 (slicing) 而带来的挑战。

解决这个问题的提案在这里,如果有人想找个有趣的问题来解决

Dask 故事

我们软启动了Dask 故事,这是一个收集和分享用户故事的网页和项目,讲述人们实际如何使用 Dask。今天我们也将发布一篇单独的博客文章介绍此事。

查看博客文章:谁在使用 Dask?

如果您使用 Dask 并想分享您的故事,我们非常欢迎您的经验分享。像您这样的人分享他们如何使用 Dask 对于项目来说非常重要。


博客评论由 Disqus 提供支持