选择平台的首要原则是“靠近数据”,让代码靠近数据是保持低延迟的必要条件。
机器学习,特别是深度学习往往会多次遍历所有数据(遍历一次被称为一个epoch)。对于非常大的数据集来说,理想的情况是在存储数据的地方建立模型,这样就不需要大量的数据传输。目前已经有部分数据库在一定程度上支持这种功能。我们会很自然地问到一个问题,即哪些数据库支持内部机器学习,它们又是如何做到的?下面我将对这些数据库进行探讨。
Amazon Redshift
Amazon Redshift为托管的PB级数据仓库服务,旨在让使用现有商业智能工具对数据进行分析的工作变得更加简单且经济高效。其专门针对数据集进行了优化,成本合算下来每年每TB不到1000美元。
Amazon Redshift ML可让SQL用户能够更加轻松地使用SQL命令创建、训练和部署机器学习模型。Redshift SQL中的CREATE MODEL命令可定义用于训练和目标列的数据,然后通过同一区域中加密的Amazon S3 bucket将数据传输给Amazon SageMaker Autopilot以用于训练。
在AutoML训练之后,Redshift ML将编译最佳模型并将其注册为Redshift集群中的预测函数。随后,用户可以通过在SELECT语句中调用预测函数的方式调用模型进行推测。
总结:通过SQL语句,Redshift ML可使用SageMaker Autopilot利用指定数据自动创建预测模型。在这过程中,SQL语句会被提取到S3 bucket中。最佳的预测函数会被注册在Redshift集群中。
BlazingSQL
BlazingSQL是一个建立在RAPIDS生态系统顶层上的由GPU加速的SQL引擎,虽然是开源项目,但是提供付费服务。RAPIDS为一套得到了Nvidia支持的开源软件库和API,其使用了CUDA并且采用了Apache Arrow列式内存格式。作为RAPIDS的一部分,cuDF为一个类似于Pandas的GPU数据帧库,主要用途是对数据进行加载、连接、聚合、过滤等操作。
开源工具Dask可将Python套件扩展到多台机器上。此外,Dask还可在同一系统或多节点集群中通过多个GPU分发数据和计算。整合了RAPIDS cuDF、XGBoost和RAPIDS cuML的Dask可用于GPU加速的数据分析和机器学习当中。
总结:BlazingSQL可以在Amazon S3的数据湖上运行GPU加速的查询,然后将生成的数据帧传输给cuDF进行数据操作,最后再使用RAPIDS XGBoost和cuML执行机器学习,或是使用PyTorch和TensorFlow执行深度学习。
谷歌Cloud BigQuery
BigQuery是谷歌Cloud托管理的PB级数据仓库。用户可以通过BigQuery对大量数据进行近实时分析。BigQuery ML允许用户使用SQL查询在BigQuery中创建和执行机器学习模型。
BigQueryML支持用于预测的线性回归、用于分类的二元多类逻辑回归、用于数据分割的K-均值聚类、用于创建产品推荐系统的矩阵分解、用于执行时间序列预测的时间序列、XGBoost分类和回归模型、分类和回归模型专用的基于TensorFlow的深度神经网络、AutoML Tables、TensorFlow模型导入。用户可以使用来自多个BigQuery数据集的数据模型进行训练和预测。虽然BigQuery ML不会从数据仓库中提取数据,但是用户可以使用CREATE MODEL语句中的TRANSFORM子句,通过BigQuery ML执行特征工程。
总结:BigQuery ML通过SQL语法将谷歌Cloud机器学习引入到了BigQuery数据仓库,从而不从数据仓库中提取数据。
IBM Db2 Warehouse
虽然IBM Db2 Warehouse是一个托管的公有云服务,但是用户可以在本地或在私有云中部署它们。作为一个数据仓库,IBM Db2 Warehouse包含有内存数据处理和用于在线分析处理的列式表格等功能。其Netezza技术提供了强大的分析功能,可高效查询数据。此外,IBM Db2 Warehouse的大量的库和函数可以帮助用户获得所需的精确洞察力。
Db2 Warehouse支持Python、R和SQL中的数据库机器学习。IDAX模块中有分析存储程序,包括方差分析、关联规则、数据转换、决策树、诊断、K均值聚类、K近邻、线性回归、元数据管理、naive贝叶斯分类、主要素分析、概率分布、随机抽样、回归树、序列模式与规则,以及参数和非参数统计等等。
总结:IBM Db2 Warehouse包含一系列数据库内SQL分析,例如一些基本的机器学习功能。此外,IBM Db2 Warehouse对R和Python也提供数据库内支持。
Kinetica
Kinetica 流数据仓库(Streaming Data Warehouse)将以往的流数据分析与本地的智能和人工智能整合在了一个单一的平台上,所有这些都可以通过API和SQL进行访问。Kinetica为GPU加速数据库,不仅具有快速、分布式、柱状和内存优先等特点,还整合了过滤、可视化和聚合等功能。
为了实现大规模的实时预测分析,Kinetica将机器学习模型和算法与用户的数据集成在一起,并且允许用户对分析数据管道、机器学习模型、数据工程的生命周期以及流计算功能进行优化。Kinetica为GPU加速的机器学习提供了一个全生命周期解决方案,包括管理Jupyter笔记本,通过RAPIDS进行模型训练,以及Kinetica平台中的自动模型部署和推理。
总结:Kinetica为GPU加速的机器学习提供了一个完整的数据库生命周期解决方案,并且可以利用流数据进行预测。
微软SQL Server
微软SQL Server机器学习服务在SQL Server RDBMS中支持R、Python、Java、PREDICT T-SQL命令和rx_Predict存储程序,在SQL Server Big Data Clusters中支持SparkML。在R和Python语言中,微软提供了多个用于机器学习的套件和库。用户可以将经过训练的模型存储在数据库中或是数据库外部。Azure SQL Managed Instance支持Python和R专用的Machine Learning Services进行预览。
R语言可以处理来自磁盘和内存中的数据。SQL Server提供了一个扩展框架,以便R、Python和Java代码可以使用SQL Server数据和函数。SQL Server Big Data Clusters可在Kubernetes中运行SQL Server、Spark和HDFS。当SQL Server调用Python代码时,Azure机器学习也可以被调用,生成的模型将被保存在数据库中以用于预测。
总结:当前版本的SQL Server可使用多种编程语言训练和推断机器学习模型。
甲骨文数据库
甲骨文云基础设施(OCI) Data Science 是一款托管无服务器平台,可供数据科学团队使用包括Oracle Autonomous Database和Oracle Autonomous Data Warehouse在内的OCI构建、训练和管理机器学习模型。该平台包含有由开放源码社区和Oracle Accelerated Data Science (ADS) Library开发的以Python为中心的工具、库和套件,支持预测模型端到端的生命周期:
- 数据采集、分析、准备和可视化
- 特征工程
- 模型训练(包括Oracle AutoML)
- 模型评估、解释和说明(包括Oracle MLX)
- Oracle Functions中的模型部署
OCI Data Science还与包括Functions、Data Flow、Autonomous Data Warehouse和对象存储等OCI堆栈进行了整合。
目前支持的模型包括:
- Oracle AutoML
- Keras
- Scikit-learn机器学习库
- XGBoost
- ADSTuner (超参数优化)
此外,ADS还支持MLX(机器学习可解释性)。
总结:甲骨文云基础设施(OCI)可以托管与其数据仓库、对象存储和函数集成的数据科学资源,从而实现完整的模型开发生命周期。
Vertica
Vertica分析平台为可扩展的列式存储数据仓库,其有两种运行模式:Enterprise和EON,前一种模式将数据存储在本地组成数据库的节点内的文件系统中,后一种模式将数据存储在公共的计算节点上。
Vertica使用大规模并行运算处理PB级数据,并通过数据并行进行内部机器学习。该产品有8个用于数据准备的内置算法、3个回归算法、4个分类算法、2个聚类算法以及多个模型管理函数,并具备将已训练的TensorFlow和PMML模型导入至其他地方的功能。在导入了模型之后,用户就可以使用它们进行预测。Vertica 还允许用户使用由C++、Java、Python或R等语言编译的自定义扩展程序。此外,用户还可以使用SQL语法进行训练和推理。
总结:Vertica内置了一套优秀的机器学习算法,并且可以导入TensorFlow和PMML模型。用户既可以使用导入的模型进行预测,也可以使用自己训练的模型进行预测。
其它选择:MindsDB
如果用户的数据库不支持内置机器学习,那么他们可以使用MindsDB。该款产品集成了6个数据库和5个商业智能工具,支持的数据库包括MariaDB、MySQL、PostgreSQL、ClickHouse、微软SQL Server和Snowflake。目前MindsDB还正在努力与MongoDB整合,2021年晚些时候还将会与流数据库实现集成。MindsDB支持的商业智能工具包括SAS、Qlik Sense、微软Power BI、Looker和Domo。
MindsDB的功能还包括AutoML、AI表和可解释的人工智能(XAI)。用户可以从MindsDB Studio、SQL INSERT语句或Python API调用中调用AutoML训练。用户可以选择使用GPU进行训练,也可以选择创建时间序列模型。
用户可以将模型另存为数据库表,然后从已保存模型专用的SQL SELECT语句、MindsDB Studio或Python API调用中调用它们。此外,用户还可以通过MindsDB Studio对模型质量实现评估、解释和可视化。
与此同时,用户还可以将MindsDB Studio和 Python API 与本地和远程数据源联接在一起。MindsDB还额外提供了一个可在PyTorch上运行的简化版深度学习框架Lightwood。
总结:MindsDB为许多不支持内置机器学习的数据库带来了机器学习功能。
越来越多的数据库开始在内部支持机器学习。虽然机制各不相同,但是有些机制确实性能更加出众。如果拥有大量数据,且需要为采样子集选择适当的模型,那么上面所列的8个数据库,以及支持MindsDB的其他数据库都可以帮助用户为完整的数据集构建模型,并且不需要担心因数据导出导致费用严重超支。