「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

目錄

可擴展的機器學習算法庫:MADlib

1+1>2:MADlib + Greenplum 的優勢

人工智能算法概覽

採用GPU加速的數據庫實現方式

結構化分析與非結構化分析的完美結合:GPText


Pivotal Greenplum —— 全世界首個開源、多雲數據平臺,專爲高級分析而打造。作爲一個開放的數據計算平臺,它集成了對數據進行挖掘和分析的高級功能,通過這些功能,用戶可以直接在Greenplum數據庫裏使用高級分析算法,對數據進行分析和處理。

本篇文章將從最近較熱的人工智能應用場景說起,詳細爲大家介紹如何運用 Greenplum 的內置算法進行機器學習,幫助企業或用戶從1到N,快速處理分析海量數據,獲得行業洞察。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

 

首先來講 Greenplum,我相信大家對 Greenplum 多少有些瞭解。Greenplum 是一個MPP架構的分佈式數據庫,其特點是可以做非常大規模的數據計算,它可以在幾百個節點的服務器規模的集羣內做數據的拓展,並且可以在PB級,就是一千個T或者幾千個T的數據容量上,做快速的數據存儲和計算。

傳統來講,它是一個數據庫,但實質上 Greenplum 不只是一個數據庫,因爲我們在庫內集成了很多高級分析的功能。這些高級分析的功能,可以使用戶更方便的使用數據,因爲數據本身要進行挖掘才能產生價值,對於傳統的友商,比如說像 Oracle、MySQL 或者 SQLServer 這樣的數據庫產品來講,它可能只是一個數據庫,您只能對數據進行傳統的,基於SQL的分析。但在 Greenplum,作爲一個開放的數據計算平臺,我們在庫內集成了非常多的數據挖掘和分析功能,通過這些功能,您不再需要把數據從庫內拿出來,直接在 Greenplum 數據庫裏就可以使用高級分析算法,對數據進行分析和處理。

在 Greenplum 內部我們集成了對地理信息的處理算法包、對文本處理的組件、對 Python 或者 R 等一些數據科學家使用的算法包、圖計算算法包以及機器學習的算法包等等。今天重點要介紹的就是 Greenplum 庫內集成的機器學習算法包和文本處理組件。通過這種庫內的集成算法,客戶可以直接在庫內對數據進行挖掘,不用把數據搬進搬出數據庫,從而提高數據的使用效率,降低數據挖掘的成本。

目前 Pivotal 研發人員正在試圖實現對集成深度學習算法庫內集成,接下來我們一起看下 Greenplum 目前在對機器學習領域的已有功能以及正在研發的路線圖。

可擴展的機器學習算法庫:MADlib

在 Greenplum 裏面集成的基於機器學習或者人工智能分析的算法包,叫 MADlib。您也許聽說過 MADlib 擴展包,這個擴展包已經是 Apache 基金會頂級開源項目,這個組件裏面集成了大量的基於傳統數學分析統計的算法、圖計算的算法以及一些常見的機器學習的算法。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

MADlib 可擴展的機器學習算法庫

這個算法庫直接在庫內集成,您可以直接到 MADlib.apache.org 的網站上下載,然後在 Greenplum 或者 Postgres 數據庫裏部署。因爲 Greenplum 是跟 Postgres 社區是深度整合的,所以我們這個 MADlib 算法庫會提供 Postgres 和 Greenplum 的版本。

MADlib 的發展歷程

簡單說一下 MADlib 的發展歷程。 MADlib 是 Pivotal 從2011年就開始的產研結合項目,公司跟UC伯克利大學的 Hellerstein 教授一起合作開發的。到今天爲止,包括 UC伯克利、斯坦福、維斯康辛、佛羅里達大學等衆多知名高校中的很多教授或科研人員,都加入了這個項目,爲它做出持續的貢獻,因此也是一個非常好的產研結合案例。

目前,我們已經實現的在庫內集成的算法包括哪些呢?在機器學習方面,有監督學習算法,比如支持向量機;迴歸類的算法,比如邏輯迴歸、線性迴歸、聚類;樹型模型,比如隨機森林、決策樹等。現在的 MADlib1.5 版本里,已經完全集成上述算法可以直接接下載並在庫內運算。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

MADlib 算法庫

除了機器學習算法,MADlib 還包括 Graph 處理,比如最短路徑,圖形直徑等等算法,此外還有一些效用函數、線性求解,或者傳統的統計分析類的彙總函數、統計分析函數、交叉驗證選型函數,都在庫內集成,非常方便。

如果您之前使用過相關機器學習算法,可能會用到隨機森林或者決策樹這樣的模型,或者用 Python 的庫函數包,用的時候需要把存儲在數據庫裏(如Oracle)的數據抽出來,抽取到一個文本或者圖形化工具裏面,然後再用 Python 程序對數據進行處理。有了這個算法庫之後,就不需要把數據來回倒騰,直接把數據存在 Greenplum 裏面,在 Greenplum 裏面使用這些算法庫,可以直接對這些數據進行模型訓練、預測或者是評估操作,會大大簡化操作過程。

此外我們整個算法都是集成在 SQL 接口裏面的,可以非常方便的使用 SQL 語句,像調用函數一樣來調用這些模型的訓練,可以直接把您數據表的名字作爲一個參數,您要分析的數據列也作爲一個參數,那些模型需要調整的參數作爲參數直接傳到函數裏面,然後直接用 SQL 語法就可以完成訓練,使用起來非常簡便,學習成本低。

1+1>2:MADlib + Greenplum 的優勢

接下來您可能會問,MADlib 加上 Greenplum 的優勢到底是什麼?傳統來講,這些算法都是公開提出的一些 paper,經過漫長工業界的使用,形成了算法庫,有 Python 算法庫,有R算法庫,包括 MADlib 也是一種算法庫。包括神經網絡、隨機森林的模型,都是八九十年代的算法,最終進行工業化落地的產品。您可能做了很多 Python 方面的編程。那麼用 MADlib 和 Greenplum 究竟有什麼樣的優勢呢?

首先,Greenplum 是一個MPP架構的分佈式計算的框架Greenplum + MADlib 之後,就等於我們在 MADlib 的基礎上把 MADlib 放到了一個分佈式計算框架的裏面,這樣做的好處就是我們可以併發對很大規模的數據進行模型訓練或者統計分析計算。而在一個單機分析體系裏,是沒有辦法實現的。通過這樣的結合,算法併發度更好,因爲作爲 Greenplum 來講,我們的數據是分散存儲在不同節點上的,一些算法也可以在不同的節點上對部分數據進行計算、訓練,再把最後的結果彙總後返回,這樣就會有一個非常好的併發度和擴展性。

這兩個功能可以使我們獲得更好的預測精度。因爲在做模型訓練的時候,如果沒有像Greenplum + MADlib 這樣的架構的話,就只能做採樣模型訓練,不能使用全量數據。比如您有一百億條數據,可能訓練模型的時候只能使用其中的一百萬或者一千萬條數據做訓練,然後再用這個模型去對一百億條數據進行預測,這個模型和預測的結果肯定準確度不如有條件做一百億條訓練出來的模型那麼準確。

我們在 MADlib + Greenplum 的架構下面,由於分佈式存儲、分佈式計算框架,您可以把數據直接在 Greenplum 的分佈式存儲計算結構裏面進行模型訓練,也就是說可以用全量數據進行模型訓練,這樣一來預測的精度肯定會比用部分採樣數據高得多。這就是我們說的,如果採用 MADlib + Greenplum 分析平臺可以得到的好處。

前面我們也提到了很多算法,而傳統的機器學習的算法,比如向量機或者隨機森林等算法,在CPU上都可以得到很好的模型訓練。但對於一些深度學習的算法,在CPU上已經沒有辦法很好的支持這種算法的模型的訓練了,包括一些預測。因爲神經網絡的算法需要消耗大量的算力,需要大量的計算節點同時工作,才能夠滿足這種計算的要求,所以我們在 Apache MADlib1.5的版本上面,主要是集成了在CPU上能夠很好處理的算法。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

Greenplum 支持的數據科學分析算法

還有一部分是深度學習的算法,可能需要在基於GPU的計算框架下才能夠發揮它的優勢,或者說才能真正跑起來。我們正在做的 Apache MADlib2.0 裏,就在試圖把這些深度學習的算法也集成到 MADlib 庫裏邊。比如卷積神經網絡、循環神經網絡,長短期記憶的模型,生成式的對抗網絡等模型。而爲了更好的支持這些算法,還我們會在整個計算框架上有一些調整從而來實現GPU加速等,這些是我們目前研發的重點方向。

人工智能算法概覽

下面跟大家介紹一下人工智能和機器學習的關係圖譜。人工智能是一個非常大的範疇,它可能包括諸多領域的高深理論。而目前現在在工業界和IT行業能夠落地實現的,主要是指機器學習,通過機器學習實現部分人工智能應用的方法,機器學習僅僅是人工智能的一部分實現。機器學習包括傳統的機器學習,像前面提到的隨機森林、樹型、向量機、線性迴歸、邏輯迴歸等等上世紀提出的一些算法的模型,以及近些年提出的深度學習算法。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

人工智能算法概覽

深度學習算法是試圖模仿生物大腦的工作原理,大腦工作原理裏有很多神經元,有一層一層的網絡,通過輸入、輸出,以及中間很多層級的網絡處理,讓每一層的輸出是基於上一層的輸入來計算得到分層次學習的概念,可能算法會非常複雜。

深度學習是機器學習的一部分,機器學習是人工智能的一部分,而我們在做數據分析或者數據挖掘的時候,管自己叫數據科學家或者數據分析員。數據科學裏面使用了很多深度學習的算法和機器學習的算法,包括其他人工智能領域的傳統數據統計分析的算法和方法論。包括Pivotal也有很好的數據科學團隊,來幫助您怎麼樣用、用什麼樣的模型、什麼樣的方式更好的來做數據的挖掘和創作。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

常見深度學習算法

常見的深度學習算法有多層感知器(MLP),MLP是上世紀90年代的算法模型,它是一個最初級的淺層的神經網絡模型,當時該模型的整個計算框架和理論模型被向量機模型逐漸取代,MLP也不能叫完全的深度學習。但它的確是一個模擬人腦工作的方式,是一個淺層的神經網絡的算法。隨着這幾年深度學習慢慢火熱起來,MLP也逐漸重新回到人們的視野中。

此外,遞歸神經網絡和卷積神經網絡是目前比較常見的深度學習算法,卷積神經網絡在圖像識別領域,主要做一些模式的匹配。遞歸神經網絡的算法,主要用於語義的分析、自然語言處理用得比較多。前面我們講的長短期記憶模型,也是對遞歸神經網絡算法的一個加強。

目前,數據挖掘分析來說,深度學習算法在這些領域,比方說對自然語音的識別,包括對視覺處理,對圖像識別、模式匹配,包括對視頻流的建模和處理,包括對翻譯自然語言語義的分析,以及對生物學的預測和探索,會應用得比較廣泛。

但是所有這些算法並不是每一個領域都可以拿來就用的,它只是一個工具,大家需要根據不同的領域、不同的數據類型、不同的應用來選擇。至於說怎麼用這個工具,比如把語音識別這樣的業務處理好,其實還是需要很多的打磨。

採用GPU加速的數據庫實現方式

前面我們提到的深度學習算法,很多是基於一個前提的,即現在的 CPU 處理很難滿足深度學習算法的算力要求,因爲深度學習算法很多程度上需要用大量的數據去訓練模型,這樣這個模型才能更好的學習或者預測的更精確。大量的數據訓練就不是 CPU 擅長的工作方式,CPU 的工作方式是面向延時的,要求延時非常低。而 GPU 的工作方式是面向吞吐量的,通過很小的處理核加上很小的緩存,進行大量的相對簡單的數據計算。所以說深度學習算法很多時候是依賴於 GPU 加速的方式,才能很好的進行訓練和使用。

採用GPU加速的數據庫實現方式

加速所有查詢的性能 :

  • 通常都是從數據底層實現的徹底改變。
  • 例如:Kinetica, MapD, SQream, Blazegraph, BlazingDB, Brytlyt, PG-Strom

針對特定深度學習算法的加速 :

  • 在現有數據庫基礎上對特定算法的擴展,對企業來說更容易適應。
  • 例如:Greenplum with Apache MADlib

因此在異構計算方面,其實也有不同的路徑。包括現在基於GPU加速的內存數據庫產品,通常從整個數據庫的底層算法開始做GPU加速。通過用GPU對大批量數據的同時的計算,來加快數據處理的過程,是對從下至上整個數據庫的完全的改造。比如SQream,MapD等等基於GPU的數據庫產品。

還有一種是現在Pivotal的想法,在現有的數據庫基礎上對特定的算法進行GPU加速擴展,怎麼說呢?就是對傳統的SQL、比如傳統的哈希等,因爲其性能已經在很大程度上滿足了企業級應用的要求性能,CPU的算力上已經足夠了。但是對於深度學習的算法,CPU是沒辦法滿足算力要求的,所以我們就針對Apache MADlib2.0裏面的深度學習算法,對這些特定的深度學習算法進行GPU的加速。通過這樣一種組合方式,能夠給用戶提供更好的體驗,而且整個適應的過程和成本都是最低的。因爲一般的業務或者非深度學習類的業務,還是跑在CPU的計算的平臺上面。而對深度學習的算法,是跑在GPU新的算力平臺上面的。通過這樣一種結合的方式,就可以提供更加強大的計算平臺給到企業客戶。

常規訓練深度學習算法的模型是這麼一個架構,會在一臺機器上插多塊GPU的處理卡,這是常規進行深度學習算法訓練的體系架構。

Greenplum現在的架構是,沒有GPU卡,但是是一個MPP的架構,存儲、CPU都可以通過MPP算法把一個大的集羣整合起來。如果把MPP架構和GPU的算力整合起來,會是什麼效果呢?那就是在集羣內部,每一臺節點上都可以插一塊到多塊GPU,大家可以想象一下,如果是這樣一種架構的話,能夠進行多大規模的深度學習的模型的訓練,或者預測。對客戶來講,包括對深度學習整個算法體系來講,可能都是一個非常好的平臺架構,可以直接在庫內對這些深度學習算法,進行全量數據的加速的模型訓練、預測、評估的整套過程。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

大規模集羣計算

當然這個是我們現在正在研發、正在做的部分。在實現了以上想法之後,我們可以通過用對庫內內置的R和Python這樣的語言,直接對GPU進行一些處理,深度學習算法直接把這些負載分配到GPU上,而對傳統的數據庫操作還在CPU裏計算,這樣的體系架構纔是值得期待的。即在一個非常大的規模上進行擴展的計算,大規模集羣計算的情況下,以後的想象空間是非常誘人的。

當前Pivotal在深度學習庫內挖掘這部分的主要研發方向是研究在MADlib裏面實現使用GPU加速的深度學習算法在Greenplum裏面落地。尤其是Keras,Keras是一個算法庫,是跑在Tensorflow上面的算法庫、算法包,我們希望把Keras裏面的這些算法能夠集成到MADlib2.0裏面去,同時因爲Keras這些深度學習算法真的需要GPU加速才能很好的使用,畢竟GPU算力跟CPU還是有量級上的區別。我們需要把Keras集成到MADlib產品裏面去並通過GPU加速它的落地。

我們目前也可以在Greenplum裏用Tensorflow或者keras的算法。比如您可以直接把Tensorflow和keras裝到Greenplum裏面,用Python來調算法庫裏的內容,但是可能有些算法是跑不出來的,因爲沒有GPU加速,並且很多算法沒有辦法進行分佈式計算,還需要後續算法的優化。

我們研發的方向會有兩個主題,一個是在真的需要大量數據做建模和分析的時候,需要把keras裏面相應的一些算法做一個分佈式的處理,這樣就可以把算力分配到整個集羣上去,也是前面說的,實現一個全量數據或者大量數據處理的方式。

當前的研發方向

  • 積極探索在 madlib 中實現通過 GPU 加速的深度學習算法在 Greenplum 中落地的可能。
  • Keras 是當前工作的重點。
  • 主題:
  • 分佈式的算法模型
  • 併發數據的算法模型

此外,另一個是需要併發性的,比如有的數據可以按照國家或者一定的字段進行分組,可以建立很多個模型同時對不同的數據進行處理,每個模型可能放在一個節點上去做。其實這兩塊都是可能會對當前正在做的方向。

前面我們講述的都是 MADlib 這部分,集成了機器學習的機器學習、數據分析的算法庫,非常簡便易用。

結構化分析與非結構化分析的完美結合:GPText

接下來爲大家介紹GPText產品,GPText產品是在Greenplum裏可以直接內置在庫內的對非結構化的文本進行快速索引和檢索的組件,GPText集成了solr文本分析引擎,把結構化分析和非結構化分析完美的結合在一起,可以通過SQL對非結構化文本進行快速的檢索和索引。

GPText SQL 數據倉庫 + 文本分析

  • 文本檢索
  • 將文本分析功能與結構化數據分析完美整合

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

 

支持內、外部數據源的索引

  • 多種數據源支持(GPDB, 外部數據源)
  • 多種數據類型(word,pdf,excel,圖片)等

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

 

自然語言處理和AI的整合

  • 與Madlib整合使用機器學習算法對文本數據進行分析
  • 與PL/Python 、PL/Java 整合進行自然語言處理
  • 與Open NLP算法庫的集成

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

GPText -對文本進行索引和檢索

這種效果與剛纔 MADlib + Greenplum 的效果是一樣的,因爲 Greenplum 是一個分佈式計算的框架、平臺,結合了 solr 這個引擎之後,也可以把 solr 放到整個處理的大的平臺上面,做分佈式的文本的檢索,對數據量的處理的效率和能夠處理的能力有一個非常大的擴展。它可以支持比方說Word、PDF等等文件直接存入 Greenplum 裏面去,並且通過對文本的處理,再結合跟MADlib機器學習的算法對文本內容進行的分析。後面也會有一個例子專門介紹結合 GPText 的索引加上 MADlib 的模型分析,把非結構化文本,處理成我們結構化公告的例子。

此外,我們對 Open NLP 的算法包集成,可以直接用 Open NLP 的算法包,通過 PL/Python 的方式直接對庫內存儲的文本進行分析和處理。

GPText 的分佈式框架

GPText 的分佈式框架就是通過對 solr 引擎的集成,把 solr 放到每一個數據庫處理的實例上面,每一個 solr 實例都有相應的高可用配置,通過這樣操作,可以對非常大規模的文本文件信息進行高速有效的處理。

「揭祕GP」Greenplum 的人工智能應用場景:MADlib、GPText、GPU

GPText – 分佈式架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章