Dask 是一個靈活的開源庫,適用于 Python 中的并行和分布式計算。
什么是 DASK ?
Dask 是一個開源庫,旨在為現(xiàn)有 Python 堆棧提供并行性。Dask 與 Python 庫(如 NumPy 數(shù)組、Pandas DataFrame 和 scikit-learn)集成,無需學(xué)習(xí)新的庫或語言,即可跨多個核心、處理器和計算機實現(xiàn)并行執(zhí)行。
Dask 由兩部分組成:
用于并行列表、數(shù)組和 DataFrame 的 API 集合,可原生擴展 Numpy 、NumPy 、Pandas 和 scikit-learn ,以在大于內(nèi)存環(huán)境或分布式環(huán)境中運行。Dask 集合是底層庫的并行集合(例如,Dask 數(shù)組由 Numpy 數(shù)組組成)并運行在任務(wù)調(diào)度程序之上。
一個任務(wù)調(diào)度程序,用于構(gòu)建任務(wù)圖形,協(xié)調(diào)、調(diào)度和監(jiān)控針對跨 CPU 核心和計算機的交互式工作負(fù)載優(yōu)化的任務(wù)。
Dask 包含三個并行集合,即 DataFrame 、Bag 和數(shù)組,每個均可自動使用在 RAM 和磁盤之間分區(qū)的數(shù)據(jù),以及根據(jù)資源可用性分布在集群中多個節(jié)點之間的數(shù)據(jù)。對于可并行但不適合 Dask 數(shù)組或 DataFrame 等高級抽象的問題,有一個“延遲”函數(shù)使用 Python 裝飾器修改函數(shù),以便它們延遲運行。這意味著執(zhí)行被延遲,并且函數(shù)及其參數(shù)被放置到任務(wù)圖形中。
Dask 的任務(wù)調(diào)度程序可以擴展至擁有數(shù)千個節(jié)點的集群,其算法已在一些全球最大的超級計算機上進(jìn)行測試。其任務(wù)調(diào)度界面可針對特定作業(yè)進(jìn)行定制。Dask 可提供低用度、低延遲和極簡的序列化,從而加快速度。
在分布式場景中,一個調(diào)度程序負(fù)責(zé)協(xié)調(diào)許多工作人員,將計算移動到正確的工作人員,以保持連續(xù)、無阻塞的對話。多個用戶可能共享同一系統(tǒng)。此方法適用于 Hadoop HDFS 文件系統(tǒng)以及云對象存儲(例如 Amazon 的 S3 存儲)。
該單機調(diào)度程序針對大于內(nèi)存的使用量進(jìn)行了優(yōu)化,并跨多個線程和處理器劃分任務(wù)。它采用低用度方法,每個任務(wù)大約占用 50 微秒。
為何選擇 DASK?
Python 的用戶友好型高級編程語言和 Python 庫(如 NumPy 、Pandas 和 scikit-learn)已經(jīng)得到數(shù)據(jù)科學(xué)家的廣泛采用。
這些庫是在大數(shù)據(jù)用例變得如此普遍之前開發(fā)的,沒有強大的并行解決方案。Python 是單核計算的首選,但用戶不得不為多核心或多計算機并行尋找其他解決方案。這會中斷用戶體驗,還會讓用戶感到非常沮喪。
過去五年里,對 Python 工作負(fù)載擴展的需求不斷增加,這導(dǎo)致了 Dask 的自然增長。Dask 是一種易于安裝、快速配置的方法,可以加速 Python 中的數(shù)據(jù)分析,無需開發(fā)者升級其硬件基礎(chǔ)設(shè)施或切換到其他編程語言。啟動 Dask 作業(yè)所使用的語法與其他 Python 操作相同,因此可將其集成,幾乎不需要重新寫代碼。
此外,由于擁有強大的網(wǎng)絡(luò)建設(shè)堆棧,Python 受到網(wǎng)絡(luò)開發(fā)者的青睞,Dask 可利用該堆棧構(gòu)建一個靈活、功能強大的分布式計算系統(tǒng),能夠擴展各種工作負(fù)載。Dask 的靈活性使其能夠從其他大數(shù)據(jù)解決方案(如 Hadoop 或 Apache Spark)中脫穎而出,而且它對本機代碼的支持使得 Python 用戶和 C/C++/CUDA 開發(fā)者能夠輕松使用。
Dask 已被 Python 開發(fā)者社區(qū)迅速采用,并且隨著 Numpy 和 Pandas 的普及而增長,這為 Python 提供了重要的擴展,可以解決特殊分析和數(shù)學(xué)計算問題。
Dask 的擴展性遠(yuǎn)優(yōu)于 Pandas,尤其適用于易于并行的任務(wù),例如跨越數(shù)千個電子表格對數(shù)據(jù)進(jìn)行排序。加速器可以將數(shù)百個 Pandas DataFrame 加載到內(nèi)存中,并通過單個抽象進(jìn)行協(xié)調(diào)。
如今, Dask 由一個開發(fā)者社區(qū)管理,該社區(qū)涵蓋數(shù)十家機構(gòu)和 PyData 項目,例如 Pandas 、Jupyter 和 Scikit-Learn 。Dask 與這些熱門工具的集成促使采用率迅速提高,在需要 Pythonic 大數(shù)據(jù)工具的開發(fā)者中采用率約達(dá) 20%。
為何 DASK 在應(yīng)用 GPU 后表現(xiàn)更出色
在架構(gòu)方面,CPU 僅由幾個具有大緩存內(nèi)存的核心組成,一次只可以處理幾個軟件線程。相比之下,GPU 由數(shù)百個核心組成,可以同時處理數(shù)千個線程。
GPU 可提供曾經(jīng)深奧難測的并行計算技術(shù)。
| Dask + NVIDIA:推動可訪問的加速分析
NVIDIA 了解 GPU 為數(shù)據(jù)分析提供的強大性能。因此,NVIDIA 致力于幫助數(shù)據(jù)科學(xué)、機器學(xué)習(xí)和人工智能從業(yè)者從數(shù)據(jù)中獲得更大價值。鑒于 Dask 的性能和可訪問性,NVIDIA 開始將其用于 RAPIDS 項目,目標(biāo)是將加速數(shù)據(jù)分析工作負(fù)載橫向擴展到多個 GPU 和基于 GPU 的系統(tǒng)。
得益于可訪問的 Python 界面和超越數(shù)據(jù)科學(xué)的通用性,Dask 發(fā)展到整個 NVIDIA 的其他項目,成為從解析 JSON 到管理端到端深度學(xué)習(xí)工作流程等新應(yīng)用程序的不二選擇。以下是 NVIDIA 使用 Dask 正在進(jìn)行的許多項目和協(xié)作中的幾個:
| RAPIDS
RAPIDS 是一套開源軟件庫和 API,用于完全在 GPU 上執(zhí)行數(shù)據(jù)科學(xué)流程,通??梢詫⒂?xùn)練時間從幾天縮短至幾分鐘。RAPIDS 基于 NVIDIA CUDA-X AI 構(gòu)建,并結(jié)合了圖形、機器學(xué)習(xí)、高性能計算 (HPC)等方面的多年開發(fā)經(jīng)驗。
雖然 CUDA-X 功能強大,但大多數(shù)數(shù)據(jù)分析從業(yè)者更喜歡使用 Python 工具集(例如前面提到的 NumPy、Pandas 和 Scikit-learn)來試驗、構(gòu)建和訓(xùn)練模型。Dask 是 RAPIDS 生態(tài)系統(tǒng)的關(guān)鍵組件,使數(shù)據(jù)從業(yè)者能夠更輕松地通過基于 Python 的舒適用戶體驗利用加速計算。
| NVTabular
NVTabular 是一個特征工程和預(yù)處理庫,旨在快速輕松地處理 TB 級表格數(shù)據(jù)集。它基于 Dask-cuDF 庫構(gòu)建,可提供高級抽象層,從而簡化大規(guī)模高性能 ETL 運算的創(chuàng)建。NVTabular 能夠利用 RAPIDS 和 Dask 擴展至數(shù)千個 GPU ,消除等待 ETL 進(jìn)程完成這一瓶頸。
| BlazingSQL
BlazingSQL 是一個在 GPU 上運行的速度超快的分布式 SQL 引擎,也是基于 Dask-cuDF 構(gòu)建的。它使數(shù)據(jù)科學(xué)家能夠輕松將大規(guī)模數(shù)據(jù)湖與 GPU 加速的分析連接在一起。借助幾行代碼,從業(yè)者可以直接查詢原始文件格式(例如 HDFS 和 AWS S3 等數(shù)據(jù)湖中的 CSV 和 Apache Parquet),并直接將結(jié)果傳輸至 GPU 顯存。
BlazingSQL 背后的公司 BlazingDB Inc 是 RAPIDS 的核心貢獻(xiàn)者,并與 NVIDIA 進(jìn)行了大量合作。
| cuStreamz
在 NVIDIA 內(nèi)部,我們正在使用 Dask 為我們的部分產(chǎn)品和業(yè)務(wù)運營提供動力。我們使用 Streamz、Dask 和 RAPIDS 構(gòu)建了 cuStreamz ,這是一個 100% 使用原生 Python 的加速流數(shù)據(jù)平臺。借助 cuStreamz,我們能夠針對某些要求嚴(yán)苛的應(yīng)用程序(例如 GeForce NOW、NVIDIA GPU Cloud 和 NVIDIA Drive SIM)進(jìn)行實時分析。雖然這是一個新興項目,但與使用支持 Dask 的 cuStreamz 的其他流數(shù)據(jù)平臺相比,TCO 已顯著降低。
DASK 用例
Dask 能夠高效處理數(shù)百 TB 的數(shù)據(jù),因此成為將并行性添加到 ML 處理、實現(xiàn)大型多維數(shù)據(jù)集分析的更快執(zhí)行以及加速和擴展數(shù)據(jù)科學(xué)制作流程或工作流程的強大工具。因此,它可以用于 HPC 、金融服務(wù)、網(wǎng)絡(luò)安全和零售行業(yè)的各種用例。例如,Dask 與 Numpy 工作流程一起使用,在地球科學(xué)、衛(wèi)星圖像、基因組學(xué)、生物醫(yī)學(xué)應(yīng)用程序和機器學(xué)習(xí)算法中實現(xiàn)多維數(shù)據(jù)分析。
借助 Pandas DataFrame ,Dask 可以在時間序列分析、商業(yè)智能和數(shù)據(jù)準(zhǔn)備方面啟用應(yīng)用程序。Dask-ML 是一個用于分布式和并行機器學(xué)習(xí)的庫,可與 Scikit-Learn 和 XGBoost 一起使用,以針對大型模型和數(shù)據(jù)集創(chuàng)建可擴展的訓(xùn)練和預(yù)測。開發(fā)者可以使用標(biāo)準(zhǔn)的 Dask 工作流程準(zhǔn)備和設(shè)置數(shù)據(jù),然后將數(shù)據(jù)交給 XGBoost 或 Tensorflow 。
DASK + RAPIDS:在企業(yè)中實現(xiàn)創(chuàng)新
許多公司正在同時采用 Dask 和 RAPIDS 來擴展某些重要的業(yè)務(wù)。NVIDIA 的一些大型合作伙伴都是各自行業(yè)的領(lǐng)導(dǎo)者,他們正在使用 Dask 和 RAPIDS 來為數(shù)據(jù)分析提供支持。以下是最近一些令人興奮的例子:
| Capital One
Capital One 的使命是“變革銀行業(yè)務(wù)”,投入巨資進(jìn)行大規(guī)模數(shù)據(jù)分析,為客戶提供更好的產(chǎn)品和服務(wù),并提高整個企業(yè)的運營效率。憑借一大群對 Python 情有獨鐘的數(shù)據(jù)科學(xué)家,Capital One 使用 Dask 和 RAPIDS 來擴展和加速傳統(tǒng)上難以并行化的 Python 工作負(fù)載,并顯著減少大數(shù)據(jù)分析的學(xué)習(xí)曲線。
NERSC 致力于為基礎(chǔ)科學(xué)研究提供計算資源和專業(yè)知識,是通過計算加速科學(xué)發(fā)現(xiàn)的世界領(lǐng)導(dǎo)者。該使命的一部分是讓研究人員能夠使用超級計算來推動科學(xué)探索。借助 Dask 和 RAPIDS ,超級計算背景有限的研究人員和科學(xué)家可以輕松訪問其新的超級計算機“Perlmutter”的驚人功能。他們利用 Dask 創(chuàng)建一個熟悉的界面,讓科學(xué)家掌握超級計算能力,推動各領(lǐng)域取得潛在突破。
| 沃爾瑪實驗室
作為零售領(lǐng)域巨頭,沃爾瑪利用海量數(shù)據(jù)集更好地服務(wù)客戶、預(yù)測產(chǎn)品需求并提高內(nèi)部效率。借助大規(guī)模數(shù)據(jù)分析來實現(xiàn)這些目標(biāo),沃爾瑪實驗室轉(zhuǎn)而使用 Dask 、XGBoost 和 RAPIDS,將訓(xùn)練時間縮短 100 倍,實現(xiàn)快速模型迭代和準(zhǔn)確性提升,從而進(jìn)一步發(fā)展業(yè)務(wù)。借助 Dask ,數(shù)據(jù)科學(xué)家可以利用 NVIDIA GPU 的能力解決他們最棘手的問題。
DASK 在企業(yè)中的應(yīng)用:日益壯大的市場
隨著其在大型機構(gòu)中不斷取得成功,越來越多的公司開始滿足企業(yè)對 Dask 產(chǎn)品和服務(wù)的需求。以下是一些正在滿足企業(yè) Dask 需求的公司,它們表明市場已進(jìn)入成熟期:
| Anaconda
像 SciPy 生態(tài)系統(tǒng)的大部分內(nèi)容一樣,Dask 從 Anaconda Inc 開始,在那里受到關(guān)注并發(fā)展為更大的開源社區(qū)。隨著社區(qū)的發(fā)展和企業(yè)開始采用 Dask ,Anaconda 開始提供咨詢服務(wù)、培訓(xùn)和開源支持,以簡化企業(yè)的使用。作為開源軟件的主要支持者,Anaconda 還聘請了許多 Dask 維護(hù)人員,為企業(yè)客戶提供對該軟件的深入理解。
| Coiled
由 Dask 維護(hù)人員(例如 Dask 項目主管和前 NVIDIA 員工 Matthew Rocklin)創(chuàng)立的 Coiled 提供圍繞 Dask 的托管解決方案,以在云和企業(yè)環(huán)境中輕松運行,還提供幫助優(yōu)化機構(gòu)內(nèi) Python 分析的企業(yè)支持。他們公開托管的托管部署產(chǎn)品為同時使用 Dask 和 RAPIDS 提供了一種強大而直觀的方式。
| Quansight
Quansight 致力于幫助企業(yè)從數(shù)據(jù)中創(chuàng)造價值,提供各種服務(wù),推動各行各業(yè)的數(shù)據(jù)分析。與 Anaconda 類似,Quansight 為使用 Dask 的企業(yè)提供咨詢服務(wù)和培訓(xùn)。借助 PyData 和 NumFOCUS 生態(tài)系統(tǒng),Quansight 還為需要在開源軟件中增強功能或修復(fù)問題的企業(yè)提供支持。
為何 DASK 對數(shù)據(jù)科學(xué)團隊很重要
這一切都與加速和效率有關(guān)。開發(fā)交互式算法的開發(fā)者希望快速執(zhí)行,以便對輸入和變量進(jìn)行修補。在運行大型數(shù)據(jù)集時,內(nèi)存有限的臺式機和筆記本電腦可能會讓人感到沮喪。Dask 功能開箱即用,即使在單個 CPU 上也可以提高處理效率。當(dāng)應(yīng)用于集群時,通常可以通過單一命令在多個 CPU 和 GPU 之間執(zhí)行運算,將處理時間縮短 90% 。Dask 可以啟用非常龐大的訓(xùn)練數(shù)據(jù)集,這些數(shù)據(jù)集通常用于機器學(xué)習(xí),可在無法支持這些數(shù)據(jù)集的環(huán)境中運行。
Dask 擁有低代碼結(jié)構(gòu)、低用度執(zhí)行模型,并且可輕松集成到 Python、Pandas 和 Numpy 工作流程中,因此 Dask 正迅速成為每個 Python 開發(fā)者的必備工具。
原文標(biāo)題:NVIDIA 大講堂 | 什么是 DASK ?
文章出處:【微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5309瀏覽量
106414 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86761 -
分布式計算
+關(guān)注
關(guān)注
0文章
28瀏覽量
4607
原文標(biāo)題:NVIDIA 大講堂 | 什么是 DASK ?
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用VirtualLab Fusion中分布式計算的AR波導(dǎo)測試圖像模擬
VirtualLab Fusion應(yīng)用:基于分布式計算的AR光波導(dǎo)中測試圖像的仿真
分布式云化數(shù)據(jù)庫有哪些類型
適用于Oracle的Python連接器:可訪問托管以及非托管的數(shù)據(jù)庫
基于ptp的分布式系統(tǒng)設(shè)計
HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)文件資產(chǎn)遷移
HarmonyOS Next 應(yīng)用元服務(wù)開發(fā)-分布式數(shù)據(jù)對象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)
適用于PoE應(yīng)用的低成本隔離式電源

Prolith和HyperLith?主要用于mask-in-stepper lithography仿真、光刻設(shè)計
分布式輸電線路故障定位中的分布式是指什么

適用于汽車應(yīng)用中HMI的電容式感應(yīng)、電感式感應(yīng)和霍爾感應(yīng)

適用于筆記本計算應(yīng)用中Raptor Lake處理器的非隔離式直流/直流設(shè)計

適用于筆記本計算應(yīng)用中Alder Lake的非隔離式直流/直流解決方案

適用于筆記本計算應(yīng)用中Alder Lake處理器的非隔離式直流/直流解決方案

評論