Dask 是一個靈活的開源庫,適用於 Python 中的並行和分散式計算。
什麼是 DASK ?
Dask 是一個開源庫,旨在為現有 Python 堆疊提供並行性。Dask 與 Python 庫(如 NumPy 陣列、Pandas DataFrame 和 scikit-learn)整合,無需學習新的庫或語言,即可跨多個核心、處理器和計算機實現並行執行。
Dask 由兩部分組成:
Dask 包含三個並行集合,即 DataFrame 、Bag 和陣列,每個均可自動使用在 RAM 和磁碟之間分割槽的資料,以及根據資源可用性分佈在叢集中多個節點之間的資料。對於可並行但不適合 Dask 陣列或 DataFrame 等高階抽象的問題,有一個“延遲”函式使用 Python 裝飾器修改函式,以便它們延遲執行。這意味著執行被延遲,並且函式及其引數被放置到任務圖形中。
Dask 的任務排程程式可以擴充套件至擁有數千個節點的叢集,其演算法已在一些全球最大的超級計算機上進行測試。其任務排程介面可針對特定作業進行定製。Dask 可提供低用度、低延遲和極簡的序列化,從而加快速度。
在分散式場景中,一個排程程式負責協調許多工作人員,將計算移動到正確的工作人員,以保持連續、無阻塞的對話。多個使用者可能共享同一系統。此方法適用於 Hadoop HDFS 檔案系統以及雲物件儲存(例如 Amazon 的 S3 儲存)。
該單機排程程式針對大於記憶體的使用量進行了最佳化,並跨多個執行緒和處理器劃分任務。它採用低用度方法,每個任務大約佔用 50 微秒。
為何選擇 DASK?
Python 的使用者友好型高階程式語言和 Python 庫(如 NumPy 、Pandas 和 scikit-learn)已經得到資料科學家的廣泛採用。
這些庫是在大資料用例變得如此普遍之前開發的,沒有強大的並行解決方案。Python 是單核計算的首選,但使用者不得不為多核心或多計算機並行尋找其他解決方案。這會中斷使用者體驗,還會讓使用者感到非常沮喪。
過去五年裡,對 Python 工作負載擴充套件的需求不斷增加,這導致了 Dask 的自然增長。Dask 是一種易於安裝、快速配置的方法,可以加速 Python 中的資料分析,無需開發者升級其硬體基礎設施或切換到其他程式語言。啟動 Dask 作業所使用的語法與其他 Python 操作相同,因此可將其整合,幾乎不需要重新寫程式碼。
此外,由於擁有強大的網路建設堆疊,Python 受到網路開發者的青睞,Dask 可利用該堆疊構建一個靈活、功能強大的分散式計算系統,能夠擴充套件各種工作負載。Dask 的靈活性使其能夠從其他大資料解決方案(如 Hadoop 或 Apache Spark)中脫穎而出,而且它對本機程式碼的支援使得 Python 使用者和 C/C++/CUDA 開發者能夠輕鬆使用。
Dask 已被 Python 開發者社群迅速採用,並且隨著 Numpy 和 Pandas 的普及而增長,這為 Python 提供了重要的擴充套件,可以解決特殊分析和數學計算問題。
Dask 的擴充套件性遠優於 Pandas,尤其適用於易於並行的任務,例如跨越數千個電子表格對資料進行排序。加速器可以將數百個 Pandas DataFrame 載入到記憶體中,並透過單個抽象進行協調。
如今, 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-X AI™ 構建,並結合了圖形、機器學習、高效能計算 (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 和 AWS S3 等資料湖中的 CSV 和 Apache Parquet),並直接將結果傳輸至 GPU 視訊記憶體。
BlazingSQL 背後的公司 BlazingDB Inc 是 RAPIDS 的核心貢獻者,並與 NVIDIA 進行了大量合作。
| cuStreamz
在 NVIDIA 內部,我們正在使用 Dask 為我們的部分產品和業務運營提供動力。我們使用 Streamz、Dask 和 RAPIDS 構建了 cuStreamz ,這是一個 100% 使用原生 Python 的加速流資料平臺。藉助 cuStreamz,我們能夠針對某些要求嚴苛的應用程式(例如 GeForce NOW、NVIDIA GPU Cloud 和 NVIDIA Drive SIM)進行實時分析。雖然這是一個新興專案,但與使用支援 Dask 的 cuStreamz 的其他流資料平臺相比,TCO 已顯著降低。
DASK 用例
Dask 能夠高效處理數百 TB 的資料,因此成為將並行性新增到 ML 處理、實現大型多維資料集分析的更快執行以及加速和擴充套件資料科學制作流程或工作流程的強大工具。因此,它可以用於 HPC 、金融服務、網路安全和零售行業的各種用例。例如,Dask 與 Numpy 工作流程一起使用,在地球科學、衛星影象、基因組學、生物醫學應用程式和機器學習演算法中實現多維資料分析。
藉助 Pandas DataFrame ,Dask 可以在時間序列分析、商業智慧和資料準備方面啟用應用程式。Dask-ML 是一個用於分散式和並行機器學習的庫,可與 Scikit-Learn 和 XGBoost 一起使用,以針對大型模型和資料集建立可擴充套件的訓練和預測。開發者可以使用標準的 Dask 工作流程準備和設定資料,然後將資料交給 XGBoost 或 Tensorflow 。
DASK + RAPIDS:在企業中實現創新
許多公司正在同時採用 Dask 和 RAPIDS 來擴充套件某些重要的業務。NVIDIA 的一些大型合作伙伴都是各自行業的領導者,他們正在使用 Dask 和 RAPIDS 來為資料分析提供支援。以下是最近一些令人興奮的例子:
| Capital One
Capital One 的使命是“變革銀行業務”,投入巨資進行大規模資料分析,為客戶提供更好的產品和服務,並提高整個企業的運營效率。憑藉一大群對 Python 情有獨鍾的資料科學家,Capital One 使用 Dask 和 RAPIDS 來擴充套件和加速傳統上難以並行化的 Python 工作負載,並顯著減少大資料分析的學習曲線。
| 美國國家能源研究科學計算中心 (NERSC)
NERSC 致力於為基礎科學研究提供計算資源和專業知識,是透過計算加速科學發現的世界領導者。該使命的一部分是讓研究人員能夠使用超級計算來推動科學探索。藉助 Dask 和 RAPIDS ,超級計算背景有限的研究人員和科學家可以輕鬆訪問其新的超級計算機“Perlmutter”的驚人功能。他們利用 Dask 建立一個熟悉的介面,讓科學家掌握超級計算能力,推動各領域取得潛在突破。
| 沃爾瑪實驗室
作為零售領域巨頭,沃爾瑪利用海量資料集更好地服務客戶、預測產品需求並提高內部效率。藉助大規模資料分析來實現這些目標,沃爾瑪實驗室轉而使用 Dask 、XGBoost 和 RAPIDS,將訓練時間縮短 100 倍,實現快速模型迭代和準確性提升,從而進一步發展業務。藉助 Dask ,資料科學家可以利用 NVIDIA GPU 的能力解決他們最棘手的問題。
DASK 在企業中的應用:日益壯大的市場
隨著其在大型機構中不斷取得成功,越來越多的公司開始滿足企業對 Dask 產品和服務的需求。以下是一些正在滿足企業 Dask 需求的公司,它們表明市場已進入成熟期:
| Anaconda
像 SciPy 生態系統的大部分內容一樣,Dask 從 Anaconda Inc 開始,在那裡受到關注並發展為更大的開源社群。隨著社群的發展和企業開始採用 Dask ,Anaconda 開始提供諮詢服務、培訓和開源支援,以簡化企業的使用。作為開源軟體的主要支持者,Anaconda 還聘請了許多 Dask 維護人員,為企業客戶提供對該軟體的深入理解。
| Coiled
由 Dask 維護人員(例如 Dask 專案主管和前 NVIDIA 員工 Matthew Rocklin)創立的 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 是一個靈活的開源庫,適用於 Python 中的並行和分散式計算。
什麼是 DASK ?
Dask 是一個開源庫,旨在為現有 Python 堆疊提供並行性。Dask 與 Python 庫(如 NumPy 陣列、Pandas DataFrame 和 scikit-learn)整合,無需學習新的庫或語言,即可跨多個核心、處理器和計算機實現並行執行。
Dask 由兩部分組成:
用於並行列表、陣列和 DataFrame 的 API 集合,可原生擴充套件 Numpy 、NumPy 、Pandas 和 scikit-learn ,以在大於記憶體環境或分散式環境中執行。Dask 集合是底層庫的並行集合(例如,Dask 陣列由 Numpy 陣列組成)並執行在任務排程程式之上。一個任務排程程式,用於構建任務圖形,協調、排程和監控針對跨 CPU 核心和計算機的互動式工作負載最佳化的任務。Dask 包含三個並行集合,即 DataFrame 、Bag 和陣列,每個均可自動使用在 RAM 和磁碟之間分割槽的資料,以及根據資源可用性分佈在叢集中多個節點之間的資料。對於可並行但不適合 Dask 陣列或 DataFrame 等高階抽象的問題,有一個“延遲”函式使用 Python 裝飾器修改函式,以便它們延遲執行。這意味著執行被延遲,並且函式及其引數被放置到任務圖形中。
Dask 的任務排程程式可以擴充套件至擁有數千個節點的叢集,其演算法已在一些全球最大的超級計算機上進行測試。其任務排程介面可針對特定作業進行定製。Dask 可提供低用度、低延遲和極簡的序列化,從而加快速度。
在分散式場景中,一個排程程式負責協調許多工作人員,將計算移動到正確的工作人員,以保持連續、無阻塞的對話。多個使用者可能共享同一系統。此方法適用於 Hadoop HDFS 檔案系統以及雲物件儲存(例如 Amazon 的 S3 儲存)。
該單機排程程式針對大於記憶體的使用量進行了最佳化,並跨多個執行緒和處理器劃分任務。它採用低用度方法,每個任務大約佔用 50 微秒。
為何選擇 DASK?
Python 的使用者友好型高階程式語言和 Python 庫(如 NumPy 、Pandas 和 scikit-learn)已經得到資料科學家的廣泛採用。
這些庫是在大資料用例變得如此普遍之前開發的,沒有強大的並行解決方案。Python 是單核計算的首選,但使用者不得不為多核心或多計算機並行尋找其他解決方案。這會中斷使用者體驗,還會讓使用者感到非常沮喪。
過去五年裡,對 Python 工作負載擴充套件的需求不斷增加,這導致了 Dask 的自然增長。Dask 是一種易於安裝、快速配置的方法,可以加速 Python 中的資料分析,無需開發者升級其硬體基礎設施或切換到其他程式語言。啟動 Dask 作業所使用的語法與其他 Python 操作相同,因此可將其整合,幾乎不需要重新寫程式碼。
此外,由於擁有強大的網路建設堆疊,Python 受到網路開發者的青睞,Dask 可利用該堆疊構建一個靈活、功能強大的分散式計算系統,能夠擴充套件各種工作負載。Dask 的靈活性使其能夠從其他大資料解決方案(如 Hadoop 或 Apache Spark)中脫穎而出,而且它對本機程式碼的支援使得 Python 使用者和 C/C++/CUDA 開發者能夠輕鬆使用。
Dask 已被 Python 開發者社群迅速採用,並且隨著 Numpy 和 Pandas 的普及而增長,這為 Python 提供了重要的擴充套件,可以解決特殊分析和數學計算問題。
Dask 的擴充套件性遠優於 Pandas,尤其適用於易於並行的任務,例如跨越數千個電子表格對資料進行排序。加速器可以將數百個 Pandas DataFrame 載入到記憶體中,並透過單個抽象進行協調。
如今, 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-X AI™ 構建,並結合了圖形、機器學習、高效能計算 (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 和 AWS S3 等資料湖中的 CSV 和 Apache Parquet),並直接將結果傳輸至 GPU 視訊記憶體。
BlazingSQL 背後的公司 BlazingDB Inc 是 RAPIDS 的核心貢獻者,並與 NVIDIA 進行了大量合作。
| cuStreamz
在 NVIDIA 內部,我們正在使用 Dask 為我們的部分產品和業務運營提供動力。我們使用 Streamz、Dask 和 RAPIDS 構建了 cuStreamz ,這是一個 100% 使用原生 Python 的加速流資料平臺。藉助 cuStreamz,我們能夠針對某些要求嚴苛的應用程式(例如 GeForce NOW、NVIDIA GPU Cloud 和 NVIDIA Drive SIM)進行實時分析。雖然這是一個新興專案,但與使用支援 Dask 的 cuStreamz 的其他流資料平臺相比,TCO 已顯著降低。
DASK 用例
Dask 能夠高效處理數百 TB 的資料,因此成為將並行性新增到 ML 處理、實現大型多維資料集分析的更快執行以及加速和擴充套件資料科學制作流程或工作流程的強大工具。因此,它可以用於 HPC 、金融服務、網路安全和零售行業的各種用例。例如,Dask 與 Numpy 工作流程一起使用,在地球科學、衛星影象、基因組學、生物醫學應用程式和機器學習演算法中實現多維資料分析。
藉助 Pandas DataFrame ,Dask 可以在時間序列分析、商業智慧和資料準備方面啟用應用程式。Dask-ML 是一個用於分散式和並行機器學習的庫,可與 Scikit-Learn 和 XGBoost 一起使用,以針對大型模型和資料集建立可擴充套件的訓練和預測。開發者可以使用標準的 Dask 工作流程準備和設定資料,然後將資料交給 XGBoost 或 Tensorflow 。
DASK + RAPIDS:在企業中實現創新
許多公司正在同時採用 Dask 和 RAPIDS 來擴充套件某些重要的業務。NVIDIA 的一些大型合作伙伴都是各自行業的領導者,他們正在使用 Dask 和 RAPIDS 來為資料分析提供支援。以下是最近一些令人興奮的例子:
| Capital One
Capital One 的使命是“變革銀行業務”,投入巨資進行大規模資料分析,為客戶提供更好的產品和服務,並提高整個企業的運營效率。憑藉一大群對 Python 情有獨鍾的資料科學家,Capital One 使用 Dask 和 RAPIDS 來擴充套件和加速傳統上難以並行化的 Python 工作負載,並顯著減少大資料分析的學習曲線。
| 美國國家能源研究科學計算中心 (NERSC)
NERSC 致力於為基礎科學研究提供計算資源和專業知識,是透過計算加速科學發現的世界領導者。該使命的一部分是讓研究人員能夠使用超級計算來推動科學探索。藉助 Dask 和 RAPIDS ,超級計算背景有限的研究人員和科學家可以輕鬆訪問其新的超級計算機“Perlmutter”的驚人功能。他們利用 Dask 建立一個熟悉的介面,讓科學家掌握超級計算能力,推動各領域取得潛在突破。
| 沃爾瑪實驗室
作為零售領域巨頭,沃爾瑪利用海量資料集更好地服務客戶、預測產品需求並提高內部效率。藉助大規模資料分析來實現這些目標,沃爾瑪實驗室轉而使用 Dask 、XGBoost 和 RAPIDS,將訓練時間縮短 100 倍,實現快速模型迭代和準確性提升,從而進一步發展業務。藉助 Dask ,資料科學家可以利用 NVIDIA GPU 的能力解決他們最棘手的問題。
DASK 在企業中的應用:日益壯大的市場
隨著其在大型機構中不斷取得成功,越來越多的公司開始滿足企業對 Dask 產品和服務的需求。以下是一些正在滿足企業 Dask 需求的公司,它們表明市場已進入成熟期:
| Anaconda
像 SciPy 生態系統的大部分內容一樣,Dask 從 Anaconda Inc 開始,在那裡受到關注並發展為更大的開源社群。隨著社群的發展和企業開始採用 Dask ,Anaconda 開始提供諮詢服務、培訓和開源支援,以簡化企業的使用。作為開源軟體的主要支持者,Anaconda 還聘請了許多 Dask 維護人員,為企業客戶提供對該軟體的深入理解。
| Coiled
由 Dask 維護人員(例如 Dask 專案主管和前 NVIDIA 員工 Matthew Rocklin)創立的 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 開發者的必備工具。