選型指南:詳解八大支持機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)
選擇平臺(tái)的首要原則是“靠近數(shù)據(jù)”,讓代碼靠近數(shù)據(jù)是保持低延遲的必要條件。
機(jī)器學(xué)習(xí),特別是深度學(xué)習(xí)往往會(huì)多次遍歷所有數(shù)據(jù)(遍歷一次被稱為一個(gè)epoch)。對(duì)于非常大的數(shù)據(jù)集來(lái)說(shuō),理想的情況是在存儲(chǔ)數(shù)據(jù)的地方建立模型,這樣就不需要大量的數(shù)據(jù)傳輸。目前已經(jīng)有部分?jǐn)?shù)據(jù)庫(kù)在一定程度上支持這種功能。我們會(huì)很自然地問(wèn)到一個(gè)問(wèn)題,即哪些數(shù)據(jù)庫(kù)支持內(nèi)部機(jī)器學(xué)習(xí),它們又是如何做到的?下面我將對(duì)這些數(shù)據(jù)庫(kù)進(jìn)行探討。
Amazon Redshift
Amazon Redshift為托管的PB級(jí)數(shù)據(jù)倉(cāng)庫(kù)服務(wù),旨在讓使用現(xiàn)有商業(yè)智能工具對(duì)數(shù)據(jù)進(jìn)行分析的工作變得更加簡(jiǎn)單且經(jīng)濟(jì)高效。其專門(mén)針對(duì)數(shù)據(jù)集進(jìn)行了優(yōu)化,成本合算下來(lái)每年每TB不到1000美元。
Amazon Redshift ML可讓SQL用戶能夠更加輕松地使用SQL命令創(chuàng)建、訓(xùn)練和部署機(jī)器學(xué)習(xí)模型。Redshift SQL中的CREATE MODEL命令可定義用于訓(xùn)練和目標(biāo)列的數(shù)據(jù),然后通過(guò)同一區(qū)域中加密的Amazon S3 bucket將數(shù)據(jù)傳輸給Amazon SageMaker Autopilot以用于訓(xùn)練。
在AutoML訓(xùn)練之后,Redshift ML將編譯最佳模型并將其注冊(cè)為Redshift集群中的預(yù)測(cè)函數(shù)。隨后,用戶可以通過(guò)在SELECT語(yǔ)句中調(diào)用預(yù)測(cè)函數(shù)的方式調(diào)用模型進(jìn)行推測(cè)。
總結(jié):通過(guò)SQL語(yǔ)句,Redshift ML可使用SageMaker Autopilot利用指定數(shù)據(jù)自動(dòng)創(chuàng)建預(yù)測(cè)模型。在這過(guò)程中,SQL語(yǔ)句會(huì)被提取到S3 bucket中。最佳的預(yù)測(cè)函數(shù)會(huì)被注冊(cè)在Redshift集群中。
BlazingSQL
BlazingSQL是一個(gè)建立在RAPIDS生態(tài)系統(tǒng)頂層上的由GPU加速的SQL引擎,雖然是開(kāi)源項(xiàng)目,但是提供付費(fèi)服務(wù)。RAPIDS為一套得到了Nvidia支持的開(kāi)源軟件庫(kù)和API,其使用了CUDA并且采用了Apache Arrow列式內(nèi)存格式。作為RAPIDS的一部分,cuDF為一個(gè)類(lèi)似于Pandas的GPU數(shù)據(jù)幀庫(kù),主要用途是對(duì)數(shù)據(jù)進(jìn)行加載、連接、聚合、過(guò)濾等操作。
開(kāi)源工具Dask可將Python套件擴(kuò)展到多臺(tái)機(jī)器上。此外,Dask還可在同一系統(tǒng)或多節(jié)點(diǎn)集群中通過(guò)多個(gè)GPU分發(fā)數(shù)據(jù)和計(jì)算。整合了RAPIDS cuDF、XGBoost和RAPIDS cuML的Dask可用于GPU加速的數(shù)據(jù)分析和機(jī)器學(xué)習(xí)當(dāng)中。
總結(jié):BlazingSQL可以在Amazon S3的數(shù)據(jù)湖上運(yùn)行GPU加速的查詢,然后將生成的數(shù)據(jù)幀傳輸給cuDF進(jìn)行數(shù)據(jù)操作,最后再使用RAPIDS XGBoost和cuML執(zhí)行機(jī)器學(xué)習(xí),或是使用PyTorch和TensorFlow執(zhí)行深度學(xué)習(xí)。
谷歌Cloud BigQuery
BigQuery是谷歌Cloud托管理的PB級(jí)數(shù)據(jù)倉(cāng)庫(kù)。用戶可以通過(guò)BigQuery對(duì)大量數(shù)據(jù)進(jìn)行近實(shí)時(shí)分析。BigQuery ML允許用戶使用SQL查詢?cè)贐igQuery中創(chuàng)建和執(zhí)行機(jī)器學(xué)習(xí)模型。
BigQueryML支持用于預(yù)測(cè)的線性回歸、用于分類(lèi)的二元多類(lèi)邏輯回歸、用于數(shù)據(jù)分割的K-均值聚類(lèi)、用于創(chuàng)建產(chǎn)品推薦系統(tǒng)的矩陣分解、用于執(zhí)行時(shí)間序列預(yù)測(cè)的時(shí)間序列、XGBoost分類(lèi)和回歸模型、分類(lèi)和回歸模型專用的基于TensorFlow的深度神經(jīng)網(wǎng)絡(luò)、AutoML Tables、TensorFlow模型導(dǎo)入。用戶可以使用來(lái)自多個(gè)BigQuery數(shù)據(jù)集的數(shù)據(jù)模型進(jìn)行訓(xùn)練和預(yù)測(cè)。雖然BigQuery ML不會(huì)從數(shù)據(jù)倉(cāng)庫(kù)中提取數(shù)據(jù),但是用戶可以使用CREATE MODEL語(yǔ)句中的TRANSFORM子句,通過(guò)BigQuery ML執(zhí)行特征工程。
總結(jié):BigQuery ML通過(guò)SQL語(yǔ)法將谷歌Cloud機(jī)器學(xué)習(xí)引入到了BigQuery數(shù)據(jù)倉(cāng)庫(kù),從而不從數(shù)據(jù)倉(cāng)庫(kù)中提取數(shù)據(jù)。
IBM Db2 Warehouse
雖然IBM Db2 Warehouse是一個(gè)托管的公有云服務(wù),但是用戶可以在本地或在私有云中部署它們。作為一個(gè)數(shù)據(jù)倉(cāng)庫(kù),IBM Db2 Warehouse包含有內(nèi)存數(shù)據(jù)處理和用于在線分析處理的列式表格等功能。其N(xiāo)etezza技術(shù)提供了強(qiáng)大的分析功能,可高效查詢數(shù)據(jù)。此外,IBM Db2 Warehouse的大量的庫(kù)和函數(shù)可以幫助用戶獲得所需的精確洞察力。
Db2 Warehouse支持Python、R和SQL中的數(shù)據(jù)庫(kù)機(jī)器學(xué)習(xí)。IDAX模塊中有分析存儲(chǔ)程序,包括方差分析、關(guān)聯(lián)規(guī)則、數(shù)據(jù)轉(zhuǎn)換、決策樹(shù)、診斷、K均值聚類(lèi)、K近鄰、線性回歸、元數(shù)據(jù)管理、naive貝葉斯分類(lèi)、主要素分析、概率分布、隨機(jī)抽樣、回歸樹(shù)、序列模式與規(guī)則,以及參數(shù)和非參數(shù)統(tǒng)計(jì)等等。
總結(jié):IBM Db2 Warehouse包含一系列數(shù)據(jù)庫(kù)內(nèi)SQL分析,例如一些基本的機(jī)器學(xué)習(xí)功能。此外,IBM Db2 Warehouse對(duì)R和Python也提供數(shù)據(jù)庫(kù)內(nèi)支持。
Kinetica
Kinetica 流數(shù)據(jù)倉(cāng)庫(kù)(Streaming Data Warehouse)將以往的流數(shù)據(jù)分析與本地的智能和人工智能整合在了一個(gè)單一的平臺(tái)上,所有這些都可以通過(guò)API和SQL進(jìn)行訪問(wèn)。Kinetica為GPU加速數(shù)據(jù)庫(kù),不僅具有快速、分布式、柱狀和內(nèi)存優(yōu)先等特點(diǎn),還整合了過(guò)濾、可視化和聚合等功能。
為了實(shí)現(xiàn)大規(guī)模的實(shí)時(shí)預(yù)測(cè)分析,Kinetica將機(jī)器學(xué)習(xí)模型和算法與用戶的數(shù)據(jù)集成在一起,并且允許用戶對(duì)分析數(shù)據(jù)管道、機(jī)器學(xué)習(xí)模型、數(shù)據(jù)工程的生命周期以及流計(jì)算功能進(jìn)行優(yōu)化。Kinetica為GPU加速的機(jī)器學(xué)習(xí)提供了一個(gè)全生命周期解決方案,包括管理Jupyter筆記本,通過(guò)RAPIDS進(jìn)行模型訓(xùn)練,以及Kinetica平臺(tái)中的自動(dòng)模型部署和推理。
總結(jié):Kinetica為GPU加速的機(jī)器學(xué)習(xí)提供了一個(gè)完整的數(shù)據(jù)庫(kù)生命周期解決方案,并且可以利用流數(shù)據(jù)進(jìn)行預(yù)測(cè)。
微軟SQL Server
微軟SQL Server機(jī)器學(xué)習(xí)服務(wù)在SQL Server RDBMS中支持R、Python、Java、PREDICT T-SQL命令和rx_Predict存儲(chǔ)程序,在SQL Server Big Data Clusters中支持SparkML。在R和Python語(yǔ)言中,微軟提供了多個(gè)用于機(jī)器學(xué)習(xí)的套件和庫(kù)。用戶可以將經(jīng)過(guò)訓(xùn)練的模型存儲(chǔ)在數(shù)據(jù)庫(kù)中或是數(shù)據(jù)庫(kù)外部。Azure SQL Managed Instance支持Python和R專用的Machine Learning Services進(jìn)行預(yù)覽。
R語(yǔ)言可以處理來(lái)自磁盤(pán)和內(nèi)存中的數(shù)據(jù)。SQL Server提供了一個(gè)擴(kuò)展框架,以便R、Python和Java代碼可以使用SQL Server數(shù)據(jù)和函數(shù)。SQL Server Big Data Clusters可在Kubernetes中運(yùn)行SQL Server、Spark和HDFS。當(dāng)SQL Server調(diào)用Python代碼時(shí),Azure機(jī)器學(xué)習(xí)也可以被調(diào)用,生成的模型將被保存在數(shù)據(jù)庫(kù)中以用于預(yù)測(cè)。
總結(jié):當(dāng)前版本的SQL Server可使用多種編程語(yǔ)言訓(xùn)練和推斷機(jī)器學(xué)習(xí)模型。
甲骨文數(shù)據(jù)庫(kù)
甲骨文云基礎(chǔ)設(shè)施(OCI) Data Science 是一款托管無(wú)服務(wù)器平臺(tái),可供數(shù)據(jù)科學(xué)團(tuán)隊(duì)使用包括Oracle Autonomous Database和Oracle Autonomous Data Warehouse在內(nèi)的OCI構(gòu)建、訓(xùn)練和管理機(jī)器學(xué)習(xí)模型。該平臺(tái)包含有由開(kāi)放源碼社區(qū)和Oracle Accelerated Data Science (ADS) Library開(kāi)發(fā)的以Python為中心的工具、庫(kù)和套件,支持預(yù)測(cè)模型端到端的生命周期:
- 數(shù)據(jù)采集、分析、準(zhǔn)備和可視化
- 特征工程
- 模型訓(xùn)練(包括Oracle AutoML)
- 模型評(píng)估、解釋和說(shuō)明(包括Oracle MLX)
- Oracle Functions中的模型部署
OCI Data Science還與包括Functions、Data Flow、Autonomous Data Warehouse和對(duì)象存儲(chǔ)等OCI堆棧進(jìn)行了整合。
目前支持的模型包括:
- Oracle AutoML
- Keras
- Scikit-learn機(jī)器學(xué)習(xí)庫(kù)
- XGBoost
- ADSTuner (超參數(shù)優(yōu)化)
此外,ADS還支持MLX(機(jī)器學(xué)習(xí)可解釋性)。
總結(jié):甲骨文云基礎(chǔ)設(shè)施(OCI)可以托管與其數(shù)據(jù)倉(cāng)庫(kù)、對(duì)象存儲(chǔ)和函數(shù)集成的數(shù)據(jù)科學(xué)資源,從而實(shí)現(xiàn)完整的模型開(kāi)發(fā)生命周期。
Vertica
Vertica分析平臺(tái)為可擴(kuò)展的列式存儲(chǔ)數(shù)據(jù)倉(cāng)庫(kù),其有兩種運(yùn)行模式:Enterprise和EON,前一種模式將數(shù)據(jù)存儲(chǔ)在本地組成數(shù)據(jù)庫(kù)的節(jié)點(diǎn)內(nèi)的文件系統(tǒng)中,后一種模式將數(shù)據(jù)存儲(chǔ)在公共的計(jì)算節(jié)點(diǎn)上。
Vertica使用大規(guī)模并行運(yùn)算處理PB級(jí)數(shù)據(jù),并通過(guò)數(shù)據(jù)并行進(jìn)行內(nèi)部機(jī)器學(xué)習(xí)。該產(chǎn)品有8個(gè)用于數(shù)據(jù)準(zhǔn)備的內(nèi)置算法、3個(gè)回歸算法、4個(gè)分類(lèi)算法、2個(gè)聚類(lèi)算法以及多個(gè)模型管理函數(shù),并具備將已訓(xùn)練的TensorFlow和PMML模型導(dǎo)入至其他地方的功能。在導(dǎo)入了模型之后,用戶就可以使用它們進(jìn)行預(yù)測(cè)。Vertica 還允許用戶使用由C++、Java、Python或R等語(yǔ)言編譯的自定義擴(kuò)展程序。此外,用戶還可以使用SQL語(yǔ)法進(jìn)行訓(xùn)練和推理。
總結(jié):Vertica內(nèi)置了一套優(yōu)秀的機(jī)器學(xué)習(xí)算法,并且可以導(dǎo)入TensorFlow和PMML模型。用戶既可以使用導(dǎo)入的模型進(jìn)行預(yù)測(cè),也可以使用自己訓(xùn)練的模型進(jìn)行預(yù)測(cè)。
其它選擇:MindsDB
如果用戶的數(shù)據(jù)庫(kù)不支持內(nèi)置機(jī)器學(xué)習(xí),那么他們可以使用MindsDB。該款產(chǎn)品集成了6個(gè)數(shù)據(jù)庫(kù)和5個(gè)商業(yè)智能工具,支持的數(shù)據(jù)庫(kù)包括MariaDB、MySQL、PostgreSQL、ClickHouse、微軟SQL Server和Snowflake。目前MindsDB還正在努力與MongoDB整合,2021年晚些時(shí)候還將會(huì)與流數(shù)據(jù)庫(kù)實(shí)現(xiàn)集成。MindsDB支持的商業(yè)智能工具包括SAS、Qlik Sense、微軟Power BI、Looker和Domo。
MindsDB的功能還包括AutoML、AI表和可解釋的人工智能(XAI)。用戶可以從MindsDB Studio、SQL INSERT語(yǔ)句或Python API調(diào)用中調(diào)用AutoML訓(xùn)練。用戶可以選擇使用GPU進(jìn)行訓(xùn)練,也可以選擇創(chuàng)建時(shí)間序列模型。
用戶可以將模型另存為數(shù)據(jù)庫(kù)表,然后從已保存模型專用的SQL SELECT語(yǔ)句、MindsDB Studio或Python API調(diào)用中調(diào)用它們。此外,用戶還可以通過(guò)MindsDB Studio對(duì)模型質(zhì)量實(shí)現(xiàn)評(píng)估、解釋和可視化。
與此同時(shí),用戶還可以將MindsDB Studio和 Python API 與本地和遠(yuǎn)程數(shù)據(jù)源聯(lián)接在一起。MindsDB還額外提供了一個(gè)可在PyTorch上運(yùn)行的簡(jiǎn)化版深度學(xué)習(xí)框架Lightwood。
總結(jié):MindsDB為許多不支持內(nèi)置機(jī)器學(xué)習(xí)的數(shù)據(jù)庫(kù)帶來(lái)了機(jī)器學(xué)習(xí)功能。
越來(lái)越多的數(shù)據(jù)庫(kù)開(kāi)始在內(nèi)部支持機(jī)器學(xué)習(xí)。雖然機(jī)制各不相同,但是有些機(jī)制確實(shí)性能更加出眾。如果擁有大量數(shù)據(jù),且需要為采樣子集選擇適當(dāng)?shù)哪P?,那么上面所列?個(gè)數(shù)據(jù)庫(kù),以及支持MindsDB的其他數(shù)據(jù)庫(kù)都可以幫助用戶為完整的數(shù)據(jù)集構(gòu)建模型,并且不需要擔(dān)心因數(shù)據(jù)導(dǎo)出導(dǎo)致費(fèi)用嚴(yán)重超支。