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

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

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


Greenplum庫內集成的高級分析功能apache

首先來說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基金會頂級開源項目,這個組件裏面集成了大量的基於傳統數學分析統計的算法、圖計算的算法以及一些常見的機器學習的算法。網絡

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

這個算法庫直接在庫內集成,您能夠直接到MADlib.apache.org 的網站上下載,而後在Greenplum或者Postgres數據庫裏部署。由於Greenplum是跟Postgres社區是深度整合的,因此咱們這個MADlib算法庫會提供Postgres和Greenplum的版本。併發

MADlib的發展歷程框架

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

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

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上可以很好處理的算法。

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

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

人工智能算法概覽

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

人工智能算法概覽

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

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

常見深度學習算法

常見的深度學習算法有多層感知器(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,你們能夠想象一下,若是是這樣一種架構的話,可以進行多大規模的深度學習的模型的訓練,或者預測。對客戶來說,包括對深度學習整個算法體系來說,可能都是一個很是好的平臺架構,能夠直接在庫內對這些深度學習算法,進行全量數據的加速的模型訓練、預測、評估的整套過程

大規模集羣計算

固然這個是咱們如今正在研發、正在作的部分。在實現了以上想法以後,咱們能夠經過用對庫內內置的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 數據倉庫 + 文本分析

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

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

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

天然語言處理和AI的整合

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

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

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

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

GPText的分佈式框架

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

GPText - 分佈式架構

各平臺底部二維碼圖-20200415-102856.png

相關文章
相關標籤/搜索