如何判斷面向GPU的數據庫是否適合你的大數據項目?
譯文GPU承諾會徹底改變大數據分析領域,但是它并不是適合每種應用的***選擇。
Hadoop很酷,Spark很快,但有時候你需要經過優化的硬件,處理越來越龐大的數據工作負載。這正是Kinetica基于的前提,這種內存中數據庫充分發揮了大規模分布式圖形處理單元(GPU)的強大功能:有望將實時分析性能提升100倍至1000倍。
考慮到如今可用的一堆大數據分析方案,這種承諾讓人有點犯暈。但它有點樂觀了,因為GPU非常擅長處理依賴高度并行化矩陣數學的工作負載,但是未必適合一系列更廣泛的大數據應用。
至少現在是這樣。
GPU在大數據領域的崛起
Kinetica(前身是GPUdb)問世已有好幾個年頭了,由于它可以在大規模部署環境取代甲骨文及其他行業巨頭,因而屢獲獎項。首先,美國政府使用跟蹤恐怖分子的數據庫來跟蹤和擊斃恐怖分子。***,美國郵政服務部門部署了Kinetica,以減少欺詐、簡化運營。
取得了什么樣的效果?不妨考慮這一點:2015年投遞了1500多億封郵件,行駛里程卻減少了7000萬英里,因而省下了700萬加侖燃油。在這一切的同時,從213000多個掃描設備獲取數據,美國各地的郵局和處理中心有15000多個并發用戶,另外結合了地理空間數據來預測實時事件。順便說一下,相比美國郵政服務部門一直使用的關系數據庫,這將性能提升了200倍。
雖然看似不一樣,但這種工作負載恰恰發揮了GPU的長處,正如MapD公司的創始人兼***執行官托德·莫斯塔科(Todd Mostak)所寫:“GPU擅長處理需要大量數學密集型運算的任務,比如視覺模擬、超快數據庫事務、計算視覺和機器學習等任務。”
搞清楚GPU適合的地方
如此說來,關鍵在于搞清楚將面向GPU的數據庫運用在何處,因為它們并不同樣適用于所有大數據應用。
正如內存數據庫公司MemSQL的***技術官兼聯合創始人尼基塔·沙姆古諾夫(Nikita Shamgunov)告訴我:“毫無疑問,GPU為某些工作負載提供了優勢,尤其是深度學習之類的應用。GPU之所以非常適合深度學習,是因為問題可以分解成許多小的操作單位,每一個小小的操作單位可以同時在大批核心上加以執行。”
除此之外,VMware的高級工程主管賈里德·羅索夫(Jared Rosoff)告知我:“單單一個GPU就有上千個針對矩陣數學運算經過優化的核心。深度學習涉及大量的超并行化矩陣數學。”如此一來,“像計算機圖形這種深度學習依賴非常適合GPU的大量并行化矩陣數學”,也就不足為奇了。
然而,除了深度學習和數據可視化之類的應用外,久經考驗的面向CPU的數據庫常常是更好的選擇,沙姆古諾夫繼續說:
就深度學習之外的領域而言,關于使用GPU相比CPU的總體成本/效益仍存在著爭論。英特爾等公司在以低成本封裝CPU能力方面非常高效。而圍繞CPU的行業基礎設施仍讓GPU方面的任何相似基礎設施相形見絀。
換句話說,利用CPU往往成本更低,生產力開銷極小,而且行業對CPU的支持力度要大得多。另外,大數據的一些方面完全更適合CPU。
沙姆古諾夫說:“比如說,數據處理查詢的其他方面以join和shuffle等操作為主,比如跨集群根據不同的鍵對數據重新分區。這些操作在CPU上來得極其高效。”
羅索夫也對此發表了意見,表示“大多數軟件無法充分利用這種程度的并行化,也無法用GPU有限的指令集來處理”,因而讓它成為非常適合深度學習這類應用的理想解決方案,但是不太適合其他工作負載。
當然,隨著時間的推移,我們可能會看到企業結合這兩種方法,將GPU用在它擅長的地方,將CPU用在其余每個地方。隨著GPU變得更普遍,數據庫也可能會開始加大支持GPU的力度。