Redis 的内存架构是众所周知的。当您需要“高速率下的快速”时,Redis 是显而易见的选择。
Redis 也被广泛认为是“结构存储”。虽然其他数据库以表/列、文档或键/值对的形式建模数据,但 Redis 一次可以容纳所有这些结构。您可以将表、文档、键/值对和其他数据类型组合到单个数据库中,并为每个实体分配最适合它的数据类型。如果您“掀开引擎盖”并查看其他可用的引擎,您会发现保存在数据库中的文档通常会被粉碎并存储在系统可以理解的某些底层本机数据类型中。Redis 没有这样的抽象!每种数据类型都以本机方式存储在引擎中,并带有其自己的“动词”来对数据类型本机执行操作。通过模块(于 2016 年 5 月推出),您现在可以将您自己的复杂数据类型嵌入到 Redis 中,而不会牺牲性能。
在 Redis,我们已经使用模块一段时间了。一个月前,我们推出了 RediSearch 模块,它通过将倒排全文索引与内存架构相结合,提供最快的搜索引擎。本周,我们发布了另一个突破性的模块:Redis-ML,它与流行的 Apache Spark MLlib 和其他机器学习库配合使用。
借助 Spark + Redis-ML,您可以将 Spark 生成的 ML 模型直接保存在 Redis 中,并为交互式、实时应用程序生成预测。我们与 Databricks 的人员共同开发了这种方法,因为 Spark 训练 ML 模型的能力给我们留下了深刻的印象。但是,当涉及到实时生成预测时,Redis 才是引擎!借助 Redis 的企业集群,您可以
Apache Spark 的典型机器学习流程如下所示
Spark 使用您的历史数据训练模型。该模型通常保存到磁盘并在以后加载以生成预测。但是,Spark 并不是最终用户应用程序的理想选择。
通过结合 Spark 和 Redis 的优势,您可以大大简化流程:(1)在使用 Spark 进行训练后,您可以使用 Redis-ML 将 ML 模型直接保存在 Redis 中,然后(2)使用 Redis-ML “动词”来实时生成交互式应用程序的预测。
Redis 团队使用大约 1000 个模型运行了基准测试,每个模型都有大约 15,000 棵由 Spark ML 使用随机森林算法生成的树。 。将 Redis ML 与 Spark ML 结合使用,可将模型分类时间减少 13 倍,而无需使用任何额外的内存,同时减少模型保存和加载时间!
操作 | Spark 延迟 | Spark+Redis-ML 延迟 | Redis 改进 |
---|---|---|---|
模型保存时间 | 3785 毫秒 | 292 毫秒 | 13 倍 |
模型加载时间 | 2769 毫秒 | 0 毫秒(模型在内存中) | ∞ |
分类时间(平均) | 13 毫秒 | 1 毫秒 | 13 倍 |
Redis-ML 能够做到这一点有几个原因。Redis 的内存架构是其中一个原因。Redis 专为实时、交互式应用程序而构建。像 Redis-ML 这样的模块也避免了其他数据库所累赘的抽象层。ML 结构直接从内存中提供其本机“动词”,而无需经过额外的翻译层。
由于机器学习正成为大多数下一代应用程序(包括推荐引擎、欺诈检测、风险评估、需求预测、情感分析、机器人技术和自动驾驶汽车)中用户体验的关键组成部分,因此您需要一个能够将这些模型可靠地交付给您的应用程序的具有机器学习能力的数据库。Redis-ML 将是您的 ML 模型投入生产的关键组成部分。
更多详情