Martin Heller 陳琳華
在我2020年8月份發(fā)表的文章《如何選擇云機器學(xué)習(xí)平臺》中,我認(rèn)為選擇平臺的首要原則是“靠近數(shù)據(jù)”。讓代碼靠近數(shù)據(jù)是保持低延遲的必要條件。
機器學(xué)習(xí),特別是深度學(xué)習(xí)往往會多次遍歷所有數(shù)據(jù)(遍歷一次被稱為一個epoch)。對于非常大的數(shù)據(jù)集來說,理想的情況是在存儲數(shù)據(jù)的地方建立模型,這樣就不需要大量的數(shù)據(jù)傳輸。目前已經(jīng)有部分?jǐn)?shù)據(jù)庫在一定程度上支持這種功能。我們會很自然地問到一個問題,即哪些數(shù)據(jù)庫支持內(nèi)部機器學(xué)習(xí),它們又是如何做到的?下面我將對這些數(shù)據(jù)庫進(jìn)行探討。
Amazon Redshift為托管的PB級數(shù)據(jù)倉庫服務(wù),旨在讓使用現(xiàn)有商業(yè)智能工具對數(shù)據(jù)進(jìn)行分析的工作變得更加簡單且經(jīng)濟(jì)高效。其專門針對數(shù)據(jù)集進(jìn)行了優(yōu)化,成本合算下來每年每TB不到1000美元。
Amazon Redshift ML可讓SQL用戶能夠更加輕松地使用SQL命令創(chuàng)建、訓(xùn)練和部署機器學(xué)習(xí)模型。Redshift SQL中的CREATE MODEL命令可定義用于訓(xùn)練和目標(biāo)列的數(shù)據(jù),然后通過同一區(qū)域中加密的Amazon S3 bucket將數(shù)據(jù)傳輸給Amazon SageMaker Autopilot以用于訓(xùn)練。
在AutoML訓(xùn)練之后,Redshift ML將編譯最佳模型并將其注冊為Redshift集群中的預(yù)測函數(shù)。隨后,用戶可以通過在SELECT語句中調(diào)用預(yù)測函數(shù)的方式調(diào)用模型進(jìn)行推測。
總結(jié):通過SQL語句,Redshift ML可使用SageMaker Autopilot利用指定數(shù)據(jù)自動創(chuàng)建預(yù)測模型。在這過程中,SQL語句會被提取到S3 bucket中。最佳的預(yù)測函數(shù)會被注冊在Redshift集群中。
BlazingSQL是一個建立在RAPIDS生態(tài)系統(tǒng)頂層上的由GPU加速的SQL引擎,雖然是開源項目,但是提供付費服務(wù)。RAPIDS為一套得到了Nvidia支持的開源軟件庫和API,其使用了CUDA并且采用了Apache Arrow列式內(nèi)存格式。作為RAPIDS的一部分,cuDF為一個類似于Pandas的GPU數(shù)據(jù)幀庫,主要用途是對數(shù)據(jù)進(jìn)行加載、連接、聚合、過濾等操作。
開源工具Dask可將Python套件擴(kuò)展到多臺機器上。此外,Dask還可在同一系統(tǒng)或多節(jié)點集群中通過多個GPU分發(fā)數(shù)據(jù)和計算。整合了RAPIDS cuDF、XGBoost和RAPIDS cuML的Dask可用于GPU加速的數(shù)據(jù)分析和機器學(xué)習(xí)當(dāng)中。
總結(jié):BlazingSQL可以在Amazon S3的數(shù)據(jù)湖上運行GPU加速的查詢,然后將生成的數(shù)據(jù)幀傳輸給cuDF進(jìn)行數(shù)據(jù)操作,最后再使用RAPIDS XGBoost和cuML執(zhí)行機器學(xué)習(xí),或是使用PyTorch和TensorFlow執(zhí)行深度學(xué)習(xí)。
BigQuery是谷歌Cloud托管理的PB級數(shù)據(jù)倉庫。用戶可以通過BigQuery對大量數(shù)據(jù)進(jìn)行近實時分析。BigQuery ML允許用戶使用SQL查詢在BigQuery中創(chuàng)建和執(zhí)行機器學(xué)習(xí)模型。
BigQueryML支持用于預(yù)測的線性回歸、用于分類的二元多類邏輯回歸、用于數(shù)據(jù)分割的K-均值聚類、用于創(chuàng)建產(chǎn)品推薦系統(tǒng)的矩陣分解、用于執(zhí)行時間序列預(yù)測的時間序列、XGBoost分類和回歸模型、分類和回歸模型專用的基于TensorFlow的深度神經(jīng)網(wǎng)絡(luò)、AutoML Tables、TensorFlow模型導(dǎo)入。用戶可以使用來自多個BigQuery數(shù)據(jù)集的數(shù)據(jù)模型進(jìn)行訓(xùn)練和預(yù)測。雖然BigQuery ML不會從數(shù)據(jù)倉庫中提取數(shù)據(jù),但是用戶可以使用CREATE MODEL語句中的TRANSFORM子句,通過BigQuery ML執(zhí)行特征工程。
總結(jié): BigQuery ML通過SQL語法將谷歌Cloud機器學(xué)習(xí)引入到了BigQuery數(shù)據(jù)倉庫,從而不從數(shù)據(jù)倉庫中提取數(shù)據(jù)。
雖然IBM Db2 Warehouse一個托管的公有云服務(wù),但是用戶可以在本地或在私有云中部署它們。作為一個數(shù)據(jù)倉庫,IBM Db2 Warehouse包含有內(nèi)存數(shù)據(jù)處理和用于在線分析處理的列式表格等功能。其Netezza技術(shù)提供了強大的分析功能,可高效查詢數(shù)據(jù)。此外,IBM Db2 Warehouse的大量的庫和函數(shù)可以幫助用戶獲得所需的精確洞察力。
Db2 Warehouse支持Python、R和SQL中的數(shù)據(jù)庫機器學(xué)習(xí)。IDAX模塊中有分析存儲程序,包括方差分析、關(guān)聯(lián)規(guī)則、數(shù)據(jù)轉(zhuǎn)換、決策樹、診斷、K均值聚類、K近鄰、線性回歸、元數(shù)據(jù)管理、na?ve貝葉斯分類、主要素分析、概率分布、隨機抽樣、回歸樹、序列模式與規(guī)則,以及參數(shù)和非參數(shù)統(tǒng)計等等。
總結(jié):IBM Db2 Warehouse包含一系列數(shù)據(jù)庫內(nèi)SQL分析,例如一些基本的機器學(xué)習(xí)功能。此外,IBM Db2 Warehouse對R和Python也提供數(shù)據(jù)庫內(nèi)支持。
Kinetica 流數(shù)據(jù)倉庫(Streaming Data Warehouse)將以往的流數(shù)據(jù)分析與本地的智能和人工智能整合在了一個單一的平臺上,所有這些都可以通過API和SQL進(jìn)行訪問。Kinetica為GPU加速數(shù)據(jù)庫不僅具有快速、分布式、柱狀和內(nèi)存優(yōu)先等特點,還整合了過濾、可視化和聚合等功能。