在 NVIDIA ,我们正在推动数据科学、机器学习和人工智能的变革。推动我们前进的一些主要趋势如下:
- Python 作为最常用的数据分析语言的崛起
- 对高可用性分布式计算的需求增加
- 需要更多的计算能力
- 开源软件成为业界主流
这些趋势的交叉点是 Dask,一个开源库,旨在为现有的 Python 堆栈提供并行性。在这篇文章中,我们将讨论 Dask ,它是什么,我们如何在 NVIDIA 中使用它,以及为什么它在大型企业中有如此大的潜力。最后,我们强调了对企业 Dask 支持的日益增长的需求,以及像 Coiled 、Anaconda 和 Quansight 这样的公司正在满足小型和大型客户的需求。
Dask :应对伸缩 Python 的历史挑战
蟒蛇很慢。 Python 最初是由 Guido Van Rossum 在 1989 年作为一个假日爱好项目开发的,它并不打算处理它今天在一些计算量最大的组织中所做的 tb 级生产工作负载。怎么搞的?
Python 是一种高度可用的语言,它将 Fortran 和 CUDA 等高性能语言和 api 与轻量级、用户友好的 api 相连接。通过将可访问性与性能相结合,它已被科学家、主题专家和其他可能没有传统计算机科学背景的数据从业人员所采用。成功的项目如 NumPy 、 学习工具 scikit ,尤其是 pandas 改变了我们对数据科学和机器学习的可访问性的看法。
在大数据用例变得如此流行之前,这些项目并没有一个强大的并行解决方案。 Python 是单核计算的选择,但是用户不得不为多核或多机器并行寻找其他解决方案。这导致了用户体验的中断和挫折感。
许多伟大的开发人员试图解决这种挫折。类似 Hadoop 的 mrjob 和 Apache 的 PySpark 这样的库允许您将计算与 Python 并行化,但用户体验与 NumPy 、 pandas 和 scikit Learning 等收藏夹的体验不同。这就创建了一种模式,工作必须两次完成:在 pandas 中开发您的想法,然后在 PySpark 和 MLlib 公司 中重构,以实现规模化工作。通常,这项工作由两个独立的团队完成,在不同团队通信以排除错误时,会减慢部署速度并创建开销。
输入 Dask 。 这种在 Python 中扩展工作负载的日益增长的需求导致了 Dask 在过去五年中的自然增长。同样受到 web 开发人员的欢迎, Python 有一个健壮的网络栈, Dask 利用它来构建一个灵活、高效、分布式的计算系统,能够扩展各种工作负载。 Dask 的灵活性有助于它在其他大数据解决方案(如 Hadoop 或 ApacheSpark )中脱颖而出。其对本机代码的支持使得它特别容易用于 Python 用户和 C / C ++ +/ CUDA 开发人员。
Dask 很快被 Python 开发人员社区采用。今天, Dask 是由一个开发人员社区管理的,他们跨越了几十个机构和 PyData 项目,比如 pandas 、 Jupyter 和 scikitlearn 。 Dask 与这些流行工具的集成使得采用率迅速上升,在需要 Pythonic 大数据工具的开发人员中,采用率约为 20% 。
Dask 和 NVIDIA :推动无障碍加速分析
NVIDIA 了解 GPUs 提供给数据分析的能力。这就是为什么我们一直在努力帮助你从数据中获得最大的信息。在了解 Dask 的强大功能和可访问性之后,我们开始在 RAPIDS 项目上使用 Dask ,目标是将加速数据分析工作负载水平扩展到多个 GPUs 和 GPU – 系统。
由于可访问的 Python 接口和数据科学以外的多功能性, Dask 在整个 NVIDIA 中扩展到其他项目,成为从解析 JSON 到管理端到端深度学习工作流的新应用程序的自然选择。以下是我们使用 Dask 的许多正在进行的项目和合作中的一些。
RAPIDS
RAPIDS 是一套开源软件库和 api ,用于完全在 GPUs 上执行数据科学管道,通常将培训时间从几天缩短到几分钟。基于 NVIDIA CUDA -X AI , RAPIDS 结合了多年来在图形、机器学习、高性能计算( HPC )等领域的发展。
虽然 CUDA -X 的功能非常强大,但大多数数据分析从业者更喜欢使用 Python 工具集(如 NumPy 、 pandas 和 scikit learn )进行实验、构建和培训模型。 Dask 是 RAPIDS 生态系统的重要组成部分,通过基于 Python 的舒适用户体验,使您更容易利用加速计算。
NVTabular
NVTabular 是一个功能工程和预处理库,旨在快速、轻松地操作 TB 的表格数据集。它建立在 Dask-cuDF 库之上,提供了一个高级抽象层,简化了大规模高性能 ETL 操作的创建。通过使用 RAPIDS 和 Dask , NVTabular 可以扩展到数千个 GPUs ,消除了等待 ETL 进程完成的瓶颈。
BlazingsQL
BlazingsQL 是 GPUs 上的一个非常快速的分布式 SQL 引擎,也是基于 Dask-cuDF 构建的。它使数据科学家能够轻松地将大型数据湖连接到 GPU —加速分析 。只需几行代码,就可以在 HDFS 和 Amazon S3 这样的数据湖中直接查询原始文件格式,如 CSV 和 apacheparquet ,然后直接将结果导入 GPU 内存。
BlazingDB , Inc .是 BlazingSQL 背后的公司,是 RAPIDS 的核心贡献者,并与 NVIDIA 进行了大量合作。
cuStreamz
在 NVIDIA ,我们在内部使用 Dask 为我们的部分产品和业务运营提供燃料。使用 Streamz 、 Dask 和 RAPIDS ,我们构建了cuStreamz ,一个使用 100% 原生 Python 的加速流数据平台。有了 cuStreamz ,我们可以对一些最苛刻的应用程序进行实时分析,比如 GeForce NOW 、 NVIDIA GPU Cloud ( NGC )和 NVIDIA Drive SIM 。虽然这是一个年轻的项目,但我们已经看到使用支持 Dask 的 cuStreamz 的其他流媒体数据平台的总体拥有成本显著降低。
Dask 和 RAPIDS :促进企业创新
许多公司都在采用 Dask 和 RAPIDS 来扩展其一些最重要的业务。 NVIDIA 的一些最大的合作伙伴,行业的领导者,正在使用 Dask 和 RAPIDS 来支持他们的数据分析。下面是一些最近令人兴奋的例子。
大写一
Capital One 以“改变银行业为己任”,在大规模数据分析方面投入巨资,为客户提供更好的产品和服务,提高整个企业的运营效率。借助一个对 Python 友好的大型数据科学家社区, 大写一使用 Dask 和 RAPIDS 可以扩展和加速传统上难以并行化的 Python 工作负载,并显著减少大数据分析的学习曲线。
国家能源研究科学计算中心
致力于为基础科学研究提供计算资源和专业知识, NERSC 是通过计算加速科学发现的世界领先者。这项任务的一部分是让研究人员能够使用超级计算机来推动科学探索。有了 Dask 和 RAPIDS , 他们最新的超级计算机“ Perlmutter ” 的不可思议的功能就可以很容易地被那些在超级计算方面背景有限的研究人员和科学家所利用。通过使用 Dask 创建一个熟悉的界面,他们将超级计算的能力交给了科学家,推动了跨领域的潜在突破。
橡树岭国家实验室
在全球大流行的情况下,橡树岭国家实验室( ORNL )正在通过建立一个“虚拟实验室”来推动创新的边界,以对抗 COVID-19 的药物发现。 使用 Dask 、 RAPIDS 、 BlazingSQL 和 NVIDIA GPUs , 研究人员可以利用他们笔记本电脑上的 Summit 超级计算机来筛选小分子化合物,以确定它们与 SARS-CoV-2 主要蛋白酶结合的能力。有了这样一个灵活的工具集,工程师们能够在不到两周的时间内启动并运行这个定制的工作流,并且可以看到次秒级的查询结果。
沃尔玛实验室
作为零售业的巨头,沃尔玛利用大量的数据集来更好地为客户服务,预测产品需求,提高内部效率。依靠大规模数据分析来实现这些目标, 沃尔玛实验室转向了达斯克、 XGBoost 和 RAPIDS 可将培训时间减少 100 倍,从而实现快速模型迭代和精度改进,以进一步推动其业务。利用 Dask ,他们向数据科学家开放了 NVIDIA GPUs 的能力,以解决他们最棘手的问题。
企业中的 Dask:一个成长中的市场
虽然企业中的实践者通常很容易尝试开源软件,但在生产中使用该软件则更具挑战性。随着新兴的、有希望的开源技术,企业可能会推出自己的部署来解决现实世界中的业务问题。随着开源软件的成熟和发展,公司纷纷涌现,开始满足企业级部署、集成和支持的需求。
随着其在大型机构中的日益成功,我们已经开始看到更多的公司满足企业对 Dask 产品和服务的需求。以下是一些正在满足企业需求的公司,标志着一个成熟市场的开始。
Anaconda
与 SciPy 生态系统的一大部分一样, Dask 从 Anaconda Inc 开始,在那里它获得了发展,并逐渐发展成为一个更大的开源社区。随着社区的发展和企业开始采用 Dask , Anaconda 开始提供咨询服务、培训和开源支持,以简化企业的使用。作为开源软件的主要支持者, Anaconda 还雇佣了许多 Dask 维护人员,为企业客户提供了对软件的深入理解。
Coiled
由 Dask 项目负责人和前 NVIDIA 员工 Matthew Rocklin 等 Dask 维护人员创建,Coiled 提供了一个围绕 Dask 的托管解决方案,使其在云环境和企业环境中都变得容易,同时还提供企业支持,帮助优化机构内的 Python 分析。最近 正式发布 ,他们的 公共托管托管部署产品 为今天使用 Dask 和 RAPIDS 提供了一种既健壮又直观的方法。
全视距
致力于帮助企业从其数据中创造价值, 全视距 提供多种服务,推动跨行业的数据分析。与 Anaconda 一样, Quansight 为使用 Dask 的企业提供咨询服务和培训。 Quansight 拥有 PyData 和 NumFOCUS 生态系统,它还为需要在开源软件中进行增强或缺陷修复的企业提供支持。
结论
Dask 是一个功能强大且可访问的开源项目,它允许数据分析从业者轻松地扩展 Python 工作负载。由于它的承诺和易用性, Dask 已经在数据科学家中引起了极大的兴趣,并且开始在企业环境中显示出惊人的结果。在 NVIDIA 上,我们相信 Dask 的变革能力,我们将其作为 RAPIDS 套件中的一个主要组件根深蒂固,允许通过 Python 接口访问加速计算的能力。
随着 Dask 的不断成熟,我们开始看到越来越多的公司满足对 Dask 管理部署和对企业支持的需求。这一成熟标志着数据分析行业的重大进步,推动更广泛的受众获得可访问的高性能分析,并使改变游戏规则、数据驱动的创新成为必然。
要了解更多关于 Dask 不断增长的创新,请关注 dask.org ,关注 Dask 博客 ,并加入我们的 GTC 2020 ,了解更多关于 大规模部署 Dask 和 RAPIDS 的信息。