利用 Dask 讓 Python 資料科學進入企業就緒狀態

作者 NVIDIA Developer

NVIDIA 正在推動資料科學、機器學習和人工智慧領域進行變革。驅使我們前進的主要趨勢,如下所示:

Dask 是這些趨勢的交集,是一種為了將現有之 Python 堆疊平行化而設計的開放原始碼函式庫。於本文中,我們將探討 Dask、它是什麼、NVIDIA 如何使用它,以及為何它在大型企業中具有龐大的潛力。最後,我們強調 Dask 對於企業的支援,以及 CoiledAnacondaQuansight 等公司滿足小型和大型客戶之需求的需求日益升高。

Dask:解決擴充 Python 的歷史挑戰

Python 很慢。最初在 1989 年,Guido Van Rossum 是將 Python 當成假日嗜好專案開發而成,不適合目前運算量龐大的組織用於處理 TB 級生產工作負載。為什麼呢?

由於 Python 的實用性高,因此使其變成「膠水語言」。它將如 Fortran 和 CUDA 等高效能語言和 API 連接至輕量型人性化 API。它將可及性與效能結合,而受到科學家、領域專家及其他可能不具備傳統電腦科學背景的資料從業人員廣泛採用。NumPyscikit-learnpandas 等成功專案,改變了我們對於資料科學和機器學習可及性的看法。

這些專案是在巨量資料使用案例變普遍之前開發而成,因此沒有強大的平行化解決方案。Python 是單核心運算的首選,但是使用者不得不針對多核心或多機器平行化尋找其他的解決方案。此情形會導致使用者體驗中斷和挫敗。

許多優秀的開發人員都在嘗試解決此挫敗。mrjob for HadoopPySpark for Apache Spark 等函式庫可以使用 Python 將運算平行化,但是使用者體驗與 NumPy、pandas、scikit-learn 等常用的選擇不同。形成了必須完成兩次工作的模式:在 pandas 和 scikit-learn 中開發構想,然後在 PySpark 和 MLlib 中重構,以進行大規模運作。通常此工作是由兩個獨立的團隊完成,並在不同的團隊進行溝通以排除錯誤時,減緩部署速度及產生額外支出。

此時 Dask 登場。由於在擴充 Python 工作負載方面的需求不斷升高,導致 Dask 在過去五年內自然成長。同時受到網頁開發人員青睞之 Python 具有穩健的網路堆疊,而 Dask 可利用此堆疊建構靈活、高效能的分散式運算系統,進而能擴充各種工作負載。Dask 的靈活性使其與其他巨量資料解決方案不同,例如 Hadoop 或 Apache Spark。它可以支援原生程式碼,對於 Python 使用者和 C/C++/CUDA 開發人員而言特別容易使用。

Dask 迅速受到 Python 開發人員社群採用。現在,Dask 是由涵蓋數十個機構,以及 pandas、Jupyter、scikit-learn 等 PyData 專案的開發人員社群負責管理。Dask 與這些熱門工具整合後,導致採用率迅速上升,在需要 Pythonic 巨量資料工具的開發人員中,採用率大約為 20%。

圖 1:Python 開發人員使用的巨量資料工具 (>100%)。源自 JetBrains

Dask 和 NVIDIA:推動易於取得的加速分析

NVIDIA 瞭解 GPU 可為資料分析提供的強大能力,因此我們正在嘗試協助您充分利用資料。我們在看見 Dask 的能力和可及性之後,開始將其使用在 RAPIDS 專案中,目標是將加速資料分析工作負載橫向擴充至多個 GPU 和以 GPU 為基礎的系統。

由於 Python 介面易取得性以及資料科學之外的多用途性,使Dask 延伸至 NVIDIA 的其他專案,成為從剖析 JSON 到管理端對端深度學習工作流程等新應用的首選。我們使用 Dask 進行了許多專案和協作,以下是其中一些範例。

RAPIDS

RAPIDS 是由開放原始碼軟體函式庫和 API 組成的套件,完全在 GPU 上執行資料科學工作流程,通常可以將訓練時間從數天縮短成數分鐘。RAPIDS 是以 為基礎,整合了繪圖、機器學習、高效能運算(HPC)等領域的多年發展。

雖然 CUDA-X 令人難以置信地強大,但是大多數資料分析從業人員仍偏好使用 NumPy、pandas、scikit-learn 等 Python 工具集,測試、建構和訓練模型。Dask 是 RAPIDS 生態系統的重要組成部分,可以透過熟悉的 Python 使用者體驗,更輕鬆地利用加速運算。

NVTabular

NVTabular 是特徵工程和預處理函式庫,可以輕鬆快速地處理數 TB 的表格式資料集。它是以 Dask-cuDF 函式庫為基礎,提供高階抽象層,簡化大規模高效能 ETL 操作的建立方式。NVTabular 可以使用 RAPIDS 和 Dask 擴充至數千個 GPU,以消除等待完成 ETL 程序的瓶頸。

BlazingSQL

BlazingSQL 是在 GPU 上,以 Dask-cuDF 為基礎的超快速分散式 SQL 引擎。它讓資料科學家可以輕鬆地將大規模的資料湖泊,連接至 GPU 加速分析。僅需要幾行程式碼,即可在資料湖泊(例如 HDFS 和 Amazon 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 (NGC) 和 NVIDIA Drive SIM。雖然此專案尚未成熟,但是我們已發現相較於其他串流資料平台,使用以 Dask 為基礎的 cuStreamz,可以大幅降低整體擁有成本。

Dask 和 RAPIDS:實現企業創新

許多公司皆採用 Dask 和 RAPIDS 擴充某些最重要的業務。NVIDIA 最大的合作夥伴,亦即各產業的領導者,皆使用 Dask 和 RAPIDS 支援資料分析。以下為近期令人期待的部分範例。

Capital One

以「徹底改變銀行業」為使命的 Capital One,大量投資於大規模的資料分析,以為客戶提供更好的產品與服務,並提高整體企業的營運效率。由於熟悉 Python 之資料科學家的人數眾多,因此 Capital One 使用 Dask 和 RAPIDS 擴充和加快過去無法平行化的 Python 工作負載,並大幅縮短巨量資料分析的學習曲線。

國家能源研究科學運算中心

致力於為基礎科學研究提供運算資源和專業知識的國家能源研究科學運算中心(National Energy Research Scientific Computing Cente,NERSC),是透過運算加快科學探索的全球領導者。該任務的一部分是讓研究人員可以使用超級運算,以推動科學探索。使用 Dask 和 RAPIDS,即使是在超級運算方面之知識有限的研究人員和科學家,也能輕鬆使用他們最新的超級電腦「Perlmutter」之強大能力。他們使用 Dask 建立熟悉的介面,讓科學家可以掌握超級運算的能力,以推動各領域可能的突破。

橡樹嶺國家實驗室

在全球大流行的疫情下,橡樹嶺國家實驗室(Oak Ridge National Laboratory,ORNL)建立了探索藥物的「虛擬實驗室」對抗 COVID-19,突破了創新極限。研究人員可以利用 Dask、RAPIDS、BlazingSQL 和 NVIDIA GPU,透過筆記型電腦使用 Summit 超級電腦的能力,分析小分子化合物是否能與 SARS-CoV-2 主要蛋白酶結合。擁有此靈活的工具集,工程師即能在不到兩週的時間內啟用自訂工作流程,並查看次秒級查詢結果。

Walmart Labs

零售業巨頭沃爾瑪(Walmart)使用大規模資料集,為客戶提供更好的服務、預測產品需求及提高內部效率。仰賴大規模資料分析達成這些目標的 Walmart Labs 是採用 Dask、XGBoost 和 RAPIDS,將訓練時間縮短 100 倍,實現快速模型迭代和提升準確性以拓展事業。他們是透過 Dask,讓資料科學家可以利用 NVIDIA GPU 的能力,解決最棘手的問題。

Dask 在企業:不斷成長的市場

讓企業從業人員試用開放原始碼軟體通常是很容易的事,但是在實際工作中使用此類軟體的難度則較高。企業可以利用新興、具有前景的開放原始碼技術,自行展開部署,以解決實際的業務問題。在開放原始碼軟體成熟和普及後,如雨後春筍般冒出的公司,開始可以滿足在企業級部署、整合及支援方面的需求。

隨著大型機構的成功案例不斷增加,我們也開始看到更多公司可以滿足企業在 Dask 產品與服務方面的需求。以下公司滿足企業 Dask 需求,表示已開始進入成熟市場。

Anaconda

如同大部分的 SciPy 生態系統,Dask 在 Anaconda Inc. 中越來越受歡迎,並發展成更大的開放原始碼社群。隨著社群成長以及企業開始採用 Dask,Anaconda 開始提供諮詢服務、訓練和開放原始碼支援,以簡化企業使用。大力支持開放原始碼軟體的 Anaconda 也僱用了許多 Dask 維護人員,協助企業客戶深入瞭解軟體。

Coiled

Coiled 是由 Dask 維護人員(例如 Dask 專案負責人兼前 NVIDIA 員工 Matthew Rocklin)創辦,針對 Dask 提供代管解決方案,以使其適用於雲端和企業環境,並提供企業支援,協助最佳化機構內部的 Python 分析。最近,他們公開推出的託管式代管部署產品已全面上市,現在已能使用既穩健又直覺化的方式使用 Dask 和 RAPIDS。

Quansight

Quansight提供各種服務,以在各產業中推動資料分析,致力協助企業利用資料創造價值。如同 Anaconda,Quansight 亦為使用 Dask 的企業提供諮詢服務和訓練。Quansight 紮根於 PyData 和 NumFOCUS 生態系統,為需要開放原始碼軟體強化或錯誤修正的企業提供支援。

結論

Dask 是強大且易於取用的開放原始碼專案,讓資料分析從業人員可以輕鬆地擴充 Python 工作負載。由於Dask極具前景和易用性,而廣受資料科學家青睞,並開始在企業環境中展現出驚人的成果。NVIDIA 深信 Dask 的變革力,因此將它深植為 RAPIDS 套件的主要組成部分,讓使用者可以透過 Python 介面,取用加速運算的能力。

隨著 Dask 逐漸成熟,我們開始看到更多公司可以滿足企業在代管 Dask 部署和支援方面的需求。此成熟象徵了資料分析產業在將易於取用的高效能分析推向更廣大之受眾,並使顛覆性資料驅動創新成為必然趨勢方面,已獲得重大進步。

欲深入瞭解 Dask 的創新發展,請造訪 dask.org、關注 Dask 部落格及參加 GTC 2020,以進一步瞭解大規模部署 Dask 和 RAPIDS