这项工作由 Anaconda Inc 提供支持
为了增加透明度,我正在努力更频繁地撰写关于 Dask 及相关项目当前进展的博客。这里的一切都尚未准备好投入生产。这篇博文匆忙写成,因此请勿期待文笔精炼。
上周,许多 Dask 开发者齐聚参加年度 SciPy 2018 会议。因此,完成的工作非常少,但开始或讨论了许多项目。为了反映这种活动变化,这篇博文将重点介绍可能的变更以及读者进一步参与开发的机会。
“[dask-jobqueue](https://cloudprovider.dask.org.cn/)” 项目在会议上大受欢迎。Dask-jobqueue 帮助人们在传统的作业调度器上启动 Dask,例如 PBS、SGE、SLURM、Torque、LSF 以及高性能计算机上常见的其他调度器。这些在科学、研究和高性能机器学习领域*非常常见*,但通常除 MPI 外很难与其他工具一起使用。
这个项目在 [Pangeo 演讲](https://youtu.be/2rgD5AJsAbE)、闪电演讲和 Dask Birds of a Feather(BOF)会议中被提及。
在冲刺(sprints)期间,许多人前来,我们一起完成了在 Cheyenne、Titan 和 Cori 等常见超级计算机上配置 Dask 的过程。这个过程通常需要大约十五分钟,并且很可能成为未来博文的主题。我们在[配置文档](https://cloudprovider.dask.org.cn/en/latest/configurations.html)中发布了这些集群的已知良好配置。
此外,有一个 [JupyterHub 问题](https://github.com/jupyterhub/batchspawner/issues/101) 旨在改进关于在这些机器上部署 JupyterHub 最佳实践的文档。社区现在已经成功做过几次,可能是时候为大家写点东西了。
如果您可以访问超级计算机,请尝试一下。在 [dask-jobqueue](https://cloudprovider.dask.org.cn/) 文档中有一个 30 分钟的 Youtube 视频演示,应该能帮助您入门。
如果您是超级计算机的管理员,可以考虑帮助构建一个配置文件并将其放在 /etc/dask 中供您的用户使用。您可能还想参与到关于 [HPC 上的 JupyterHub](https://cloudprovider.dask.org.cn/en/latest/configurations.html) 的讨论中。
Olivier Grisel 和 Tom Augspurger 准备并发表了一场精彩的演讲,介绍了新的 Dask-ML 项目的当前状态。
这不是 Dask 的变化,但 Min Ragan-Kelley 展示了如何通过 [mybinder.org](https://mybinder.org/) 运行不仅仅是 Jupyter 的服务。举个例子,这是一个只需单击即可部署 Bokeh 服务器应用程序的仓库。
我认为通过与 Binder 结合,Min 实际上创造了一个免费使用的托管 Bokeh 服务器服务。想必同样的模式也可以很容易地应用于其他应用程序。
Dask 和 TPOT 开发者正在讨论如何并行化自动化机器学习工具 [TPOT](http://epistasislab.github.io/tpot/)。
TPOT 使用遗传算法在 scikit-learn 风格的管道空间中搜索,以自动找到性能不错的管道和模型。这涉及到相当多的计算,Dask 可以帮助将其并行化到多台机器上。
现在一些简单的事情已经可以工作,但要使其高效,我们需要更深入地研究一下。如果有人想参与,扩展该拉取请求以深入到管道内部将是一项不错的任务。这将有助于在管道之间共享中间结果。
在各种功能中,[Scikit-optimize](https://scikit-optimize.github.io/) 提供了一个 [BayesSearchCV](https://scikit-optimize.github.io/#skopt.BayesSearchCV) 对象,它类似于 Scikit-Learn 的 GridSearchCV 和 RandomSearchCV,但在如何根据先前结果选择新的参数进行测试方面更智能一些。超参数优化是目前 Dask-ML 工作负载的易得成果,因此我们研究了这个项目在这里可能如何提供帮助。
目前我们只是通过 joblib 实验使用 Scikit-Learn/Dask 集成,看看有哪些机会。Dask 和 Scikit-Optimize 开发者之间的讨论正在这里进行
我们正在将许多 PyData/Scipy 教程放到 Binder 上,并希望将 Youtube 视频片段嵌入到笔记本中。
这项工作在这里进行
PyData 和 SciPy 社区在大多数会议上提供教程。这项活动产生了教育性的 Jupyter 笔记本和讲解视频,教人们如何使用生态系统。
然而,这些内容在会议*之后*不太容易被发现。人们可以在 Youtube 上搜索他们选择的主题,并希望能找到笔记本的链接以便在本地下载,但这一个有些嘈杂的过程。不清楚该选择哪个教程,并且在练习过程中很难将视频与笔记本对应起来。我们可能没有充分利用这些资源的价值。
为了帮助提高访问便利性,我们将尝试做一些事情
这只有在社区维护模式下才能长期有效。到目前为止,我们只做了几个小时的工作,以下任务还有很多工作要做
我非常喜欢关于 [Ray](https://youtu.be/D_oz7E4v-U0) 的演讲,它是另一个用于 Python 的分布式任务调度器。我猜 Dask 会借鉴关于[用于有状态操作的 Actor 模型](https://github.com/dask/distributed/issues/2109) 的想法。我希望 Ray 能采纳使用标准 Python 接口的想法,以便更多社区成员能更快地采用它。我鼓励大家看看这个演讲并试试 Ray。它相当不错。
Dask 和 Scikit-learn 开发者有机会再次坐下来,提出一些问题,帮助规划近期开发。这主要集中在构建重要的案例研究以推动未来开发,并确定近期要集成的算法和其他项目。
我们可以利用帮助来构建案例研究,以推动项目的未来发展。还有几个算法方面可以参与。Dask-ML 是一个年轻且快速发展的项目,为新开发者提供了许多参与机会。
Leland McKinnes 发表了一场精彩的演讲 [用于降维的均匀流形逼近与投影(Uniform Manifold Approximation and Projection for Dimensionality Reduction)](https://youtu.be/nq6iPZVUxZU),他在其中阐述了一个成熟的降维算法,类似于 PCA 或 T-SNE,但具有一些不错的特性。他与一些 Dask 开发者合作,我们发现由于 dask 数组切片带有随机性切片而带来一些挑战。
解决此问题的提案在这里,如果有人想解决一个有趣的问题,可以看看
我们软启动了 [Dask 故事](http://dask-stories.readthedocs.io/en/latest/),这是一个网页和项目,旨在收集用户故事并分享人们在实践中如何使用 Dask 的故事。我们今天还将发布一篇关于此的单独博文。
参见博文:[谁在使用 Dask?](/2018/07/16/dask-stories)
如果您使用 Dask 并想分享您的故事,我们非常欢迎您的经验。有像您这样的人分享他们如何使用 Dask 对这个项目来说非常重要。