这项工作由 Anaconda Inc 支持
为了提高透明度,我正努力更频繁地撰写博客,介绍 Dask 及相关项目的当前工作进展。这里没有任何内容已准备好投入生产。这篇博客文章写得仓促,因此不应期待精雕细琢。
Dask 及相关项目在2018年6月的当前工作包括以下内容
Dask 开发者经常被问到如何将 Dask 部署到我的 Hadoop/Spark/Hive 集群上?。直到最近,我们才有了比较好的答案。
大多数 Hadoop/Spark/Hive 集群实际上是 Yarn 集群。Yarn 是许多集群最常用的集群管理器,这些集群通常用于运行 Hadoop/Spark/Hive 作业,包括从 Cloudera 或 Hortonworks 等供应商购买的任何集群。如果您的应用程序可以在 Yarn 上运行,那么它在这里就可以成为一等公民。
不幸的是,Yarn 之前只能通过 Java API 访问,这使得 Dask 很难与之交互。现在这种情况正在改变,有几个项目正在进行,包括
这项工作全部由 Jim Crist 完成,我相信他目前正在撰写一篇关于这个话题的博客文章。尽管 dask-yarn 上周已软发布,大家应该尝试一下并在 dask-yarn 问题跟踪器 上报告反馈。如果您想在集群上获得直接帮助,现在是时候了,因为 Jim 正积极开展这项工作,并且尚未被用户请求淹没,所以通常有很多时间来调查特定案例。
from dask_yarn import YarnCluster
from dask.distributed import Client
# 创建一个集群,每个 worker 有两个核心和八 GB 内存
cluster = YarnCluster(environment='environment.tar.gz',
worker_vcores=2,
worker_memory="8GB")
# 扩展到十个这样的 worker
cluster.scale(10)
# 连接到集群
client = Client(cluster)
Dask 维护了一个包含简单示例的 Binder,展示了使用该项目的各种方法。这使得人们可以在网页上点击链接,快速进入在云端运行的 Jupyter Notebook。这是一个快速体验和学习新项目的有趣方式。
以前,我们为数组、数据帧、延迟计算、机器学习等提供了单一示例。
现在 Scott Sievert 正在扩展机器学习部分的示例。到目前为止,他已经提交了以下两个示例
我相信他正在计划更多示例。如果您使用dask-ml 并有建议或想提供帮助,您可以参与 dask-ml 问题跟踪器 或 dask-examples 问题跟踪器。
上面提到的增量训练作为示例也是比较新的。这是一种 Scikit-Learn 风格的元估计器(meta-estimator),它包装了支持 `partial_fit` 方法的其他估计器。它使得能够以增量或批处理方式在大型数据集上进行训练。
from sklearn.linear_model import SGDClassifier
sgd = SGDClassifier(...)
import pandas as pd
for filename in filenames
df = pd.read_csv(filename)
X, y = ...
sgd.partial_fit(X, y)
from sklearn.linear_model import SGDClassifier
from dask_ml.wrappers import Incremental
sgd = SGDClassifier(...)
inc = Incremental(sgd)
import dask.dataframe as dd
df = dd.read_csv(filenames)
X, y = ...
inc.fit(X, y)
从并行计算的角度来看,这是一种非常简单且不酷的方式。但我的理解是它也非常实用。在分布式环境中,我们舍弃了许多可能的计算(解决方案本质上是顺序的),但看着模型在吸收各种数据块后在集群中跳转是很有趣的。
目前正在进行工作,研究如何最好地将此与管道(pipelines)和超参数搜索(hyper-parameter searches)等其他工作结合起来,以填补额外的计算空白。
这项工作主要由 Tom Augspurger 完成,Scott Sievert 提供了帮助。
Dask 开发者经常被问到“谁在使用 Dask?”。这是一个很难回答的问题,因为尽管我们收到了来自各种公司和研究小组的数千个帮助请求,但我们始终不确定谁介意将他们的信息与他人分享。
现在,我们正尝试通过让用户讲述自己的故事,以更明确的方式众包收集这些信息。希望这能帮助他们领域内的其他用户理解 Dask 如何提供帮助以及何时可能(或可能不)对他们有用。
我们最初在 Google 表单 中收集了这些信息,但后来将其转移到了 Github 仓库 中。最终,我们会将其发布为一个 正式网站 并包含在我们的文档中。
如果您使用 Dask 并想分享您的故事,这是为项目做出贡献的绝佳方式。可以说,与技术解决方案相比,Dask 更需要帮助来传播信息。
用于在传统 HPC 机器上部署 Dask 的 Dask Jobqueue 包即将发布新版本。我们更改了许多参数和配置选项,以改善新用户的入门体验。在最近与新团体的合作中进展非常顺利,但对于现有该子项目的用户来说,这意味着一个破坏性变更(breaking change)。