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