导读 使用Python和Dask进行数据科学,分析和分布式机器学习的Nvidia GPUNvidia希望将GPU的成功范围从图形和深度学习扩展到完整的数据科学体验。
使用Python和Dask进行数据科学,分析和分布式机器学习的Nvidia GPU
Nvidia希望将GPU的成功范围从图形和深度学习扩展到完整的数据科学体验。开源Python库Dask是关键。
人工智能
英特尔在量子计算领域提供AI突破
人工智能的进步在孤岛和文化问题中得到了充分发挥
调查:在企业中管理AI和ML
Facebook首次推出AI工具来解决复仇色情问题
IBM通过分享AI人脸识别(CNET)照片激起争议
企业无法获得AI网络安全工具的工作方式(TechRepublic)
Nvidia长期以来不仅仅是一家硬件公司。由于其GPU广泛用于运行机器学习工作负载,因此机器学习已成为Nvidia的重中之重。在本周的GTC活动中,Nvidia提出了许多相关要点,旨在建立机器学习并扩展到数据科学和分析。
Nvidia希望“将软件与硬件相结合,以提供将数据转化为洞察力和智能所需的计算能力。”Nvidia首席执行官Jensen Huang强调了芯片架构,系统,算法和应用之间的协作方面。
另外:
因此,Nvidia专注于构建GPU开发人员生态系统。根据Huang的说法,GPU开发者生态系统正在快速增长:开发人员数量从去年的80万增长到120多万。您可以构建一个开发人员生态系统吗?开源软件。
Nvidia在GTC上宣布了用于GPU加速数据科学的CUDA-X AI SDK。Nvidia称CUDA-X AI是一个加速数据科学的端到端平台,涵盖了数据科学工作流程的许多部分。目标是使用GPU尽可能地并行化这些任务,从而加快它们的速度。
CUDA-X AI的一个关键部分是RAPIDS。RAPIDS是一套开源软件库,用于完全在GPU上执行端到端数据科学和分析管道。RAPIDS的一个关键部分是Dask。Dask是一个开源框架,其目标是本地扩展Python。
由于Python是大多数数据科学工作的首选语言,因此您可以看到为什么Nvidia选择将其作为其战略的关键部分。ZDNet与Dask创作者Matthew Rocklin进行了问答,他最近开始为Nvidia工作。
扩展PYTHON
Rocklin说,Dask是从PyData生态系统(Pandas,NumPy,Scikit-Learn,Jupyter等)发展而来的。PyData深受数据科学家的喜爱,因为它速度快(主要用C / C ++编写),非专家很容易使用。问题是PyData通常不能很好地扩展,这是数据集大小增加时的一个限制。
此外:Streamlio,一个用于云时代的开放核心流数据结构
Dask旨在扩展现有的PyData项目,并将它们引入并行计算,而无需完全重写。Rocklin在Anaconda Inc(当时名为Continuum)工作时开始使用Dask,但Dask很快成长为一个社区项目,其中包括来自大多数主要PyData库的贡献者。
数据科学工作负载可能需要一段时间才能执行。加速它们是Dask的意思,这就是它被Nvidia采用的原因。
(图片来源:Nvidia)
Anaconda投资该项目是因为他们有许多喜欢Pandas,Scikit-Learn和朋友的客户,但他们正在努力应对更大的数据量。Rocklin表示,显然社区和市场需要使PyData处理更大的规模,但也存在许多技术和社会挑战:
“我们不得不在生态系统中堵塞大数据方面缺少的漏洞。大数据空间中有许多技术当时并不是Python中可用的:像Parquet,Orc和Avro这样的数据格式,数据存储系统,如HDFS,GCS,S3,YARN等部署解决方案。“
他继续补充说,在Python生态系统中,许多技术几乎没有支持,使它们在面向性能的环境中并不真正有用。Dask开始专注于单节点重型工作站用例。目标是将Python扩展到现代CPU的所有核心,并将数据大小限制从可用RAM(~100GB)的数量扩展到单个工作站上的可用磁盘数量(~10TB)。
当时,这被视为高生产力的最佳点。罗克林表示,“Dask是Python原生的,易于使用,很多群体都有Numpy / Pandas / Scikit学习这种规模的风格问题(这是大多数人)非常喜欢它。”
然而,他继续补充说,人们扩展到更大的数据集的能力似乎是无法满足的,所以大约一年后,Dask被扩展到分布式计算环境中工作,该环境具有或多或少与系统类似的扩展属性火花。
Apache Spark是一个非常受欢迎的数据科学和机器学习开源平台,由Databricks提供商业支持。Spark支持内存处理,并通过群集进行扩展。然而,Spark对许多Python用户的问题在于对Python的支持是有限的,并且部署和调优集群并非易事。
另外:
Dask是为解决这个问题而开发的。那么Dask和Spark如何比较呢?罗克林说这是他经常遇到的一个问题,所以经常会有一个详细的答案。外卖是Dask体积更小,重量更轻。Dask的功能少于Spark,并且旨在与其他Python库一起使用。
DASK通过GPU帮助加速整个数据科学家的工作流程
最近,Rocklin加入了Nvidia,以帮助用Dask扩展RAPIDS。他指出,Nvidia已经做了一段时间了,但是想要更多的火力来支持Dask的努力:
“NVIDIA最近一直是开源生态系统中的支持者,所以我对这个机会感到很兴奋。借助RAPIDS,NVIDIA希望将GPU的成功范围从图形和深度学习扩展到完整的数据科学体验。这意味着构建GPU – 用于更广泛任务的加速库。“
Nvidia的T4 GPU。但是,如果没有适当的软件堆栈,它将无法帮助您。
(图片来源:Nvidia)
计划的结果是能够加速整个数据科学家的工作流程,而不仅仅是深度学习时的最终培训和预测部分。传统的机器学习算法,数据帧操作,如groupby-aggregations,连接和时间序列操作。数据提取,如CSV和JSON解析。和阵列计算一样,如图像处理和图形分析:
“当我第一次听到这个时,我非常怀疑。我一直认为GPU仅适用于高度规则和计算密集的计算,就像在深度学习中发生的矩阵倍增一样。
但是当我看到NVIDIA已经构建时一个CSV解析器(一个高度不规则的计算),比我卖掉的Pandas标准快了20倍。这些机器出来的性能数字非常惊人。“
Rocklin说,今天RAPIDS使用Dask(和MPI)将这些库中的一些扩展到多个GPU和多个节点。就像Dask可以在分布式CPU集群中管理许多Pandas数据帧一样,它也可以在GPU的分布式集群中管理许多GPU加速的Pandas数据帧。他继续补充说,这最终比人们预期的更容易,原因有两个。
首先,因为Dask被设计为围绕其他库进行并行化,所以它处理负载平衡和弹性等问题,但是没有强加任何适合NVIDIA需求的特定计算系统,因为它希望定义自己的节点计算。
其次,Dask已经拥有适用于Numpy,Pandas,Scikit-Learn和朋友的算法,并且其中许多算法对于等效的RAPIDS库也是开箱即用的,它们也复制了这些API。
分布式机器学习做与不做
但这真的很容易吗?最近,Google Cloud AI的技术负责人Viacheslav Kovalevskyi警告不要使用分发,除非绝对必要。我们想知道Rocklin对此的看法是什么,以及他认为未来分布式机器学习面临的最大挑战和机遇。
另外:
罗克林指出,在这个领域有效地进行计算仍然需要相当多的专业知识。当然,有很多机器学习问题,比如深度学习应用程序中使用的参数服务器,如果你分发而不是非常小心,你可能会遭受巨大的性能损失。
“童话区”:只是在问题上投入更多硬件并不一定能让机器学习更快。这一切都取决于问题的类型。
(图片来源:Viacheslav Kovalevskyi)
他补充说,使用集群会产生非常实际的人力和管理成本。集群很复杂,通常由数据科学之外的其他团队管理,难以调试,并且通常会在分析师和洞察者之间设置障碍。
Rocklin认为,单个大型机器的生产效率很高,无论是从性能/硬件角度还是从人/管理障碍的角度来看。如果您可以在非分布式系统上解决问题,那么这几乎总是正确的选择:
“然而,机器学习是一个广泛的术语。从计算的角度来看,机器学习有很多种。有些东西适用于某些问题,有些则不适用。很难做出一揽子陈述。
有很多问题扩展是非常自然的,并且几乎没有性能损失。在我们的社会中有一些关键应用真正需要大规模扩展才能取得进展(想想基因组学,气候变化,成像)。理想情况下我们在小/中等数据上使用的工具一台机器可以和我们在千节点集群上使用的工具相同。“
下一步IT转型
在实现边缘计算之前您需要了解的内容
这些是您的公司在沿着边缘分析和处理路线前应该问的问题。
阅读更多
汽车,引擎和社交动态:DASK作为PYTHON世界的调度程序
说到集群,并回到Dask和Spark之间的比较,在通过Dask API时会有另一个显而易见的差异:它是一个较低级别的API。例如,调度任务等事情实施起来更加细微。它看起来像Dask可能是Python用户分发其代码(和数据)的“快速而肮脏”的方式,但是这种权衡更倾向于使用细节。
再一次,就像PyTorch的情况一样,答案就是这是一个功能,而不是一个bug。Rocklin表示,Dask的最初目标是提供Numpy和Pandas的高级并行实现,需要一个相当复杂的任务调度器来处理负载平衡,弹性,任务放置,网络通信等问题。
此外:
他们发现,对于大约一半的用户来说,这很棒。他们正在进行相当传统的业务分析或科学工作负载,并且不需要任何其他工作。然而,另一半正在进行更加复杂的计算。对于他们来说,并行的Numpy / Pandas实现没有用,但底层的任务调度器是:
“这就像我们制造了一辆豪华轿车,人们说”太棒了!我只需要引擎“。那是因为他们正在建造与预期完全不同的东西,比如火箭飞船或潜水艇或赛格威。他们想要内部调度机器,但想把它插入他们自己的高度定制解决方案。这就是低级API的来源。
今天大多数用户仍然从Dask的高级API开始,然后他们遇到了复杂的问题并转向了低级API.Dask的设计使其易于来回切换,所以人们根据需要混合搭配。“
调度很难。Dask需要构建调度功能,在某些情况下,人们选择将其用作调度程序。
(图片来源:Nvidia)
Rockin指出,今天的Python社区中有很大一部分的功能远远超出了传统的商业智能领域。他们正在发明新的模型,并构建以前没有真正构建过的复杂系统。引擎(任务调度程序)仍然有用,但车轮,转向柱和传输(数据框算法)不适用于他们想去的地方。
这是与Dask结束时要记住的事情。由于Java世界在YARN中有调度程序,并且云原生世界有Kubernetes,因此Python世界似乎也在使用Dask。罗克林表示,在Dask上工作是一项伟大的社交和社区建设实验:
“我们和其他几个团体正试图推动整个PyData生态系统,这在范围上都是巨大的,并且还分裂成数百个不同的群体。我们花了很多时间建立共识,弄清楚最终用户需要什么,哪些机构愿意参与,哪些机构能够并且愿意开展这项工作。过去几年来,各种不同群体的筹备工作重新抬头,令人兴奋。 “
未经允许不得转载:87头条 » 使用Python和Dask进行数据科学,分析和分布式机器学习的Nvidia GPU进行数据科学 分析和分布式机器学习的Nvidia GPU