什么是DASK

更新时间:02-10 教程 由 心偿~ 分享

Dask是一个灵活的开源库,适用于Python的并行和分布式计算。


什么是DASK?


Dask是一个开源库,旨在为现有Python堆栈提供并行性。Dask与Python库(如NumPy数组、PandasDataFrame和scikit-learn)集成,无需学习新的库或语言,即可跨多个核心、处理器和计算机实现并行执行。


Dask由两部分组成:


用于并行列表、数组和DataFrame的API集合,可原生扩展Numpy、NumPy、Pandas和scikit-learn,以在大于内存环境或分布式环境中运行。Dask集合是底层库的并行集合(例如,Dask数组由Numpy数组组成)并运行在任务调度程序之上。一个任务调度程序,用于构建任务图形,协调、调度和监控针对跨CPU核心和计算机的交互式工作负载优化的任务。



Dask包含三个并行集合,即DataFrame、Bag和数组,每个均可自动使用在RAM和磁盘之间分区的数据,以及根据资源可用性分布在集群中多个节点之间的数据。对于可并行但不适合Dask数组或DataFrame等高级抽象的问题,有一个“延迟”函数使用Python装饰器修改函数,以便它们延迟运行。这意味着执行被延迟,并且函数及其参数被放置到任务图形中。


Dask的任务调度程序可以扩展至拥有数千个节点的集群,其算法已在一些全球最大的超级计算机上进行测试。其任务调度界面可针对特定作业进行定制。Dask可提供低用度、低延迟和极简的序列化,从而加快速度。


在分布式场景中,一个调度程序负责协调许多工作人员,将计算移动到正确的工作人员,以保持连续、无阻塞的对话。多个用户可能共享同一系统。此方法适用于HadoopHDFS文件系统以及云对象存储(例如Amazon的S3存储)。


该单机调度程序针对大于内存的使用量进行了优化,并跨多个线程和处理器划分任务。它采用低用度方法,每个任务大约占用50微秒。


为何选择DASK?


Python的用户友好型高级编程语言和Python库(如NumPy、Pandas和scikit-learn)已经得到数据科学家的广泛采用。


这些库是在大数据用例变得如此普遍之前开发的,没有强大的并行解决方案。Python是单核计算的首选,但用户不得不为多核心或多计算机并行寻找其他解决方案。这会中断用户体验,还会让用户感到非常沮丧。


过去五年里,对Python工作负载扩展的需求不断增加,这导致了Dask的自然增长。Dask是一种易于安装、快速配置的方法,可以加速Python中的数据分析,无需开发者升级其硬件基础设施或切换到其他编程语言。启动Dask作业所使用的语法与其他Python操作相同,因此可将其集成,几乎不需要重新写代码。

此外,由于拥有强大的网络建设堆栈,Python受到网络开发者的青睐,Dask可利用该堆栈构建一个灵活、功能强大的分布式计算系统,能够扩展各种工作负载。Dask的灵活性使其能够从其他大数据解决方案(如Hadoop或ApacheSpark)中脱颖而出,而且它对本机代码的支持使得Python用户和C/C++/CUDA开发者能够轻松使用。


Dask已被Python开发者社区迅速采用,并且随着Numpy和Pandas的普及而增长,这为Python提供了重要的扩展,可以解决特殊分析和数学计算问题。


Dask的扩展性远优于Pandas,尤其适用于易于并行的任务,例如跨越数千个电子表格对数据进行排序。加速器可以将数百个PandasDataFrame加载到内存中,并通过单个抽象进行协调。


如今,Dask由一个开发者社区管理,该社区涵盖数十家机构和PyData项目,例如Pandas、Jupyter和Scikit-Learn。Dask与这些热门工具的集成促使采用率迅速提高,在需要Pythonic大数据工具的开发者中采用率约达20%。

为何DASK在应用GPU后表现更出色


在架构方面,CPU仅由几个具有大缓存内存的核心组成,一次只可以处理几个软件线程。相比之下,GPU由数百个核心组成,可以同时处理数千个线程。


GPU可提供曾经深奥难测的并行计算技术。


Dask+NVIDIA:推动可访问的加速分析


NVIDIA了解GPU为数据分析提供的强大性能。因此,NVIDIA致力于帮助数据科学、机器学习和人工智能从业者从数据中获得更大价值。鉴于Dask的性能和可访问性,NVIDIA开始将其用于RAPIDS项目,目标是将加速数据分析工作负载横向扩展到多个GPU和基于GPU的系统。

得益于可访问的Python界面和超越数据科学的通用性,Dask发展到整个NVIDIA的其他项目,成为从解析JSON到管理端到端深度学习工作流程等新应用程序的不二选择。以下是NVIDIA使用Dask正在进行的许多项目和协作中的几个:


RAPIDS


RAPIDS是一套开源软件库和API,用于完全在GPU上执行数据科学流程,通常可以将训练时间从几天缩短至几分钟。RAPIDS基于NVIDIA®CUDA-XAI™构建,并结合了图形、机器学习、高性能计算(HPC)等方面的多年开发经验。

虽然CUDA-X功能强大,但大多数数据分析从业者更喜欢使用Python工具集(例如前面提到的NumPy、Pandas和Scikit-learn)来试验、构建和训练模型。Dask是RAPIDS生态系统的关键组件,使数据从业者能够更轻松地通过基于Python的舒适用户体验利用加速计算。


NVTabular


NVTabular是一个特征工程和预处理库,旨在快速轻松地处理TB级表格数据集。它基于Dask-cuDF库构建,可提供高级抽象层,从而简化大规模高性能ETL运算的创建。NVTabular能够利用RAPIDS和Dask扩展至数千个GPU,消除等待ETL进程完成这一瓶颈。


BlazingSQL


BlazingSQL是一个在GPU上运行的速度超快的分布式SQL引擎,也是基于Dask-cuDF构建的。它使数据科学家能够轻松将大规模数据湖与GPU加速的分析连接在一起。借助几行代码,从业者可以直接查询原始文件格式(例如HDFS和AWSS3等数据湖中的CSV和ApacheParquet),并直接将结果传输至GPU显存。


BlazingSQL背后的公司BlazingDBInc是RAPIDS的核心贡献者,并与NVIDIA进行了大量合作。


cuStreamz


在NVIDIA内部,我们正在使用Dask为我们的部分产品和业务运营提供动力。我们使用Streamz、Dask和RAPIDS构建了cuStreamz,这是一个100%使用原生Python的加速流数据平台。借助cuStreamz,我们能够针对某些要求严苛的应用程序(例如GeForceNOW、NVIDIAGPUCloud和NVIDIADriveSIM)进行实时分析。虽然这是一个新兴项目,但与使用支持Dask的cuStreamz的其他流数据平台相比,TCO已显著降低。


DASK用例


Dask能够高效处理数百TB的数据,因此成为将并行性添加到ML处理、实现大型多维数据集分析的更快执行以及加速和扩展数据科学制作流程或工作流程的强大工具。因此,它可以用于HPC、金融服务、网络安全和零售行业的各种用例。例如,Dask与Numpy工作流程一起使用,在地球科学、卫星图像、基因组学、生物医学应用程序和机器学习算法中实现多维数据分析。


借助PandasDataFrame,Dask可以在时间序列分析、商业智能和数据准备方面启用应用程序。Dask-ML是一个用于分布式和并行机器学习的库,可与Scikit-Learn和XGBoost一起使用,以针对大型模型和数据集创建可扩展的训练和预测。开发者可以使用标准的Dask工作流程准备和设置数据,然后将数据交给XGBoost或Tensorflow。


DASK+RAPIDS:在企业中实现创新


许多公司正在同时采用Dask和RAPIDS来扩展某些重要的业务。NVIDIA的一些大型合作伙伴都是各自行业的领导者,他们正在使用Dask和RAPIDS来为数据分析提供支持。以下是最近一些令人兴奋的例子:


CapitalOne


CapitalOne的使命是“变革银行业务”,投入巨资进行大规模数据分析,为客户提供更好的产品和服务,并提高整个企业的运营效率。凭借一大群对Python情有独钟的数据科学家,CapitalOne使用Dask和RAPIDS来扩展和加速传统上难以并行化的Python工作负载,并显著减少大数据分析的学习曲线。


美国国家能源研究科学计算中心(NERSC)


NERSC致力于为基础科学研究提供计算资源和专业知识,是通过计算加速科学发现的世界领导者。该使命的一部分是让研究人员能够使用超级计算来推动科学探索。借助Dask和RAPIDS,超级计算背景有限的研究人员和科学家可以轻松访问其新的超级计算机“Perlmutter”的惊人功能。他们利用Dask创建一个熟悉的界面,让科学家掌握超级计算能力,推动各领域取得潜在突破。


沃尔玛实验室


作为零售领域巨头,沃尔玛利用海量数据集更好地服务客户、预测产品需求并提高内部效率。借助大规模数据分析来实现这些目标,沃尔玛实验室转而使用Dask、XGBoost和RAPIDS,将训练时间缩短100倍,实现快速模型迭代和准确性提升,从而进一步发展业务。借助Dask,数据科学家可以利用NVIDIAGPU的能力解决他们最棘手的问题。


DASK在企业中的应用:日益壮大的市场


随着其在大型机构中不断取得成功,越来越多的公司开始满足企业对Dask产品和服务的需求。以下是一些正在满足企业Dask需求的公司,它们表明市场已进入成熟期:


Anaconda


像SciPy生态系统的大部分内容一样,Dask从AnacondaInc开始,在那里受到关注并发展为更大的开源社区。随着社区的发展和企业开始采用Dask,Anaconda开始提供咨询服务、培训和开源支持,以简化企业的使用。作为开源软件的主要支持者,Anaconda还聘请了许多Dask维护人员,为企业客户提供对该软件的深入理解。


Coiled


由Dask维护人员(例如Dask项目主管和前NVIDIA员工MatthewRocklin)创立的Coiled提供围绕Dask的托管解决方案,以在云和企业环境中轻松运行,还提供帮助优化机构内Python分析的企业支持。他们公开托管的托管部署产品为同时使用Dask和RAPIDS提供了一种强大而直观的方式。


Quansight


Quansight致力于帮助企业从数据中创造价值,提供各种服务,推动各行各业的数据分析。与Anaconda类似,Quansight为使用Dask的企业提供咨询服务和培训。借助PyData和NumFOCUS生态系统,Quansight还为需要在开源软件中增强功能或修复问题的企业提供支持。


为何DASK对数据科学团队很重要


这一切都与加速和效率有关。开发交互式算法的开发者希望快速执行,以便对输入和变量进行修补。在运行大型数据集时,内存有限的台式机和笔记本电脑可能会让人感到沮丧。Dask功能开箱即用,即使在单个CPU上也可以提高处理效率。当应用于集群时,通常可以通过单一命令在多个CPU和GPU之间执行运算,将处理时间缩短90%。Dask可以启用非常庞大的训练数据集,这些数据集通常用于机器学习,可在无法支持这些数据集的环境中运行。


Dask拥有低代码结构、低用度执行模型,并且可轻松集成到Python、Pandas和Numpy工作流程中,因此Dask正迅速成为每个Python开发者的必备工具。

声明:关于《什么是DASK》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2166031.html