为什么MongoDB适合深度学习?

作者:Mat Keep

译者:郭远威

当您正在考虑为新的深度学习项目选择何种数据库时,您可以访问这个链接所对应的帖子(https://www.mongodb.com/blog/post/deep-learning-and-the-artificial-intelligence-revolution-part-3 )。在您选择数据库之前,以了解更多需要考虑的关键事项。

本文的内容将是分析为什么MongoDB适合深度学习。

您将从下面章节所描述的内容看到,开发人员和数据科学家正在将MongoDB作为一个灵活的、可扩展的、高性能的分布式数据库来使用,以满足AI应用程序开发的严格要求。

灵活的数据模型

MongoDB的文档数据模型使开发人员和数据科学家能够轻松地在数据库中存储和合并任何结构的数据,而无需放弃复杂的验证规则来保障数据质量。

MongoDB表结构模式可以被动态地修改,而不需要应用程序或数据库停机,而对于关系数据库来说,这种模式的修改或重新设计会产生高昂的停机代价。

MongoDB这种灵活的数据模型对深度学习来说尤其重要, 因为深度学习需要不断的实验来发现新的洞察和预测:

  • 深度学习输入的数据集可能包含点击流数据,日志文件,社交媒体,物联网传感器流数据,CSV,文本,图像,视频等快速变化的结构化和非结构化数据;但许多这样的数据集并不能很好地映射到具有固定行列格式的关系数据库上。
  • 深度学习的训练过程通常涉及添加新的隐藏层,特征标签,超参数和新的输入数据,因此需要频繁地修改底层的数据模型。

因此,对于深度学习来说,一个能够支持多种输入数据集且能无缝地修改模型训练参数的数据库是至关重要的。

丰富的编程和查询模型

MongoDB为开发人员和数据科学家同时提供了本地驱动程序和认证的连接器,以便利用存储在MongoDB中的数据构建深度学习模型。PyMongo是推荐Python开发者使用MongoDB的驱动程序,它实现了一种习惯使用的API,使Python程序员的开发变得自然。同时,社区开发的MongoDB Client for R也适用于熟悉R编程语言的程序员来开发基于MongoDB的深度学习模型。

MongoDB查询语言和丰富的二级索引能使开发人员以多种方式来构建查询和分析数据的应用程序。数据可以通过单键,范围,文本搜索,图形和地理空间以及复杂的管道聚集和MapReduce作业访问到,且能以毫秒为单位返回响应。

为了跨分布式数据库集群并行处理数据,MongoDB提供了管道聚集和MapReduce两种编程模式。MongoDB的管道聚集是基于管道的数据处理概念建模的,文档会进入一个多阶段的管道进行处理,在每一个阶段,MongoDB内部执行本地操作,将文档转换为另外一个聚集结果。

最基本的管道操作提供了像查询操作一样的过滤器,以及修改文档形式的转换操作。

其他管道操作还提供了按特定字段对文档进行分组和排序的工具,以及用于汇总数组内容(包括文档数组)的工具。

此外,管道操作还可以使用运算符,例如计算文档集合的平均值或标准偏差甚至操作字符串。

MongoDB还在数据库中提供了原生的MapReduce编程模式,可以使用自定义JavaScript函数来执行Map和Reduce两阶段的任务。

除了原生查询框架之外,MongoDB还为Apache Spark提供了一个高性能连接器,该连接器封装了Spark的所有库,包括编程语言Python,R,Scala和Java的库。 MongoDB里面的数据可以被转换为Spark支持的DataFrames和Datasets对象,以便使用Spark自带的机器学习,图形,流和SQL API来进行数据分析。

关于Apache Spark与MongoDB 连接器,可以利用MongoDB的聚集管道和二级索引优势来抽取,过滤和处理所需范围的数据,例如,分析位于特定地理位置的所有客户。这与不支持二级索引或不支持在数据库内部进行聚合操作的简单的NoSQL数据库是非常不同的。

对于这些简单的NoSQL数据库,即使该Spark处理过程只需要该数据的子集,但基于主键的简单查询,Spark也需要提取所有数据。这意味着数据库需要更多的处理开销,企业需要更多的硬件投入以及数据科学家和工程师需要更长的洞察时间。

从图1可知,为了最大限度地提高跨大型分布式数据库集群的性能,Apache Spark的MongoDB连接器会将Spark弹性分布式数据集(RDD)部署在与MongoDB数据节点相同的宿主机上,能够最大限度地减少跨集群的数据移动从而减少延迟。

高性能,可扩展&冗余

通过在高性能和可扩展的数据库之上构建深度学习平台,可以缩短模型训练时间。 MongoDB提供了许多创新的功能,以最大限度地提高数据吞吐量,并将深度学习的工作负载与延迟降至最低:

  • WiredTiger是MongoDB默认的存储引擎,由世界上部署最广泛的嵌入式数据管理软件Berkeley DB的架构师开发。WiredTiger适用于现代多核架构,通过使用各种编程技术,例如hazard指针,无锁算法,快速锁和消息传递,WiredTiger将每个CPU内核和时钟周期的计算工作量最大化。为了减少磁盘I/O的开销,WiredTiger还使用了紧凑的文件格式和对存储进行压缩。
  • 对于大多数延迟敏感的深度学习应用程序,可以将MongoDB配置为In-Memory存储引擎来启动。基于WiredTiger,该存储引擎为用户提供了内存计算的优势,而无需牺牲查询的灵活性、实时分析性和可扩展容量的特性,但对于基于磁盘类型的其它存储引擎数来说,这些特性属于MongoDB的常规特性。
  • 为了并行化模型训练并将输入数据集扩展到单个节点之外,MongoDB使用了一种称为分片(sharding)的技术,该技术会将数据和处理均匀的分发到整个集群中。MongoDB分片集群具有完全弹性,随着输入数据集的增长自动重新平衡整个集群中的数据,或者随着节点的添加和删除而自动重新平衡数据。
  • 在MongoDB分片群集中,每个分片可以为一个复制集,数据会自动分发到集群中的不同片上。MongoDB复制集提供了冗余功能,可在出现故障时恢复训练数据,从而减少了从检查点恢复的时间开销。

可调整的一致性

MongoDB在默认情况下是强一致性的,它使深度学习应用程序能够立即读取已写入数据库的内容,从而避免那些因为需要最终一致性的数据库系统给开发人员带来的复杂性。强一致性将为机器学习算法提供最准确的结果; 但是在某些情况下(例如SGD),在MongoDB集群中,客户端的请求会分发到每一个片上(由复制集构成)的Secondary成员上,这样实现可接受的一致性与特定性能目标。

MongoDB AI部署案例

根据上面讨论的特性,MongoDB正成为许多AI和深度学习平台的数据库。

以下是各种不同应用和行业的用户选择:

IBM 沃森:分析与可视化

沃森分析是IBM的云托管服务,提供智能数据发现以指导数据挖掘,自动执行预测分析和可视化输出。沃森分析用于银行,保险,零售,电信,石油和政府应用。MongoDB与DB2一起用于管理数据存储。MongoDB提供了所有源数据资产和分析可视化的元数据存储库,这些数据存储在丰富的JSON文档结构中,具有可扩展性,可支持数以万计的并发用户访问该服务。

x.ai:个人助理

x.ai是一个以人力资源为导向的个人助理,为其用户安排会议。用户将他们的日历连接到x.ai,然后当通过电子邮件设置会议时,用户将调度任务通过CCing amy@x.ai委派给'Amy Ingram'。一旦她被复制到电子邮件主题中,她会找到一个双方愉快的时间和地点,并为您设置会议。MongoDB作为整个x.ai平台的记录系统,支持所有服务,包括自然语言处理,监督学习,分析和电子邮件通信。MongoDB的灵活数据模型对于x.ai能够快速调整训练和输入数据集,同时支持复杂的数据结构至关重要。通过阅读案例了解更多信息: https://www.mongodb.com/press/mongodb-powers-xai%E2%80%99s-artificial-intelligence-driven-personal-assistant-takes-hassle-out

自动交易者:预测价值

英国最大的数字汽车市场广泛使用针对存储在MongoDB中的数据运行的机器学习。 MongoDB中存储了汽车的规格和详细信息,如先前所有者的数量,状况,颜色,里程,保险历史,升级等等。该数据由Auto Trader的数据科学团队编写的机器学习算法提取,以生成准确的价值预测,然后将其写回数据库。MongoDB由于其灵活的数据模型和分布式设计而被选中,允许跨40多个实例的群集进行扩展。通过技术媒体了解更多信息:http://www.computerworlduk.com/data/auto-trader-uses-mongodb-ai-make-sure-customers-dont-get-ripped-off-3646634/

Mintigo:预测性销售和营销

Mintigo是由前情报局数据科学家创立的,为Red Hat等公司提供预测性营销引擎。通过对存储在MongoDB中的大数据集进行操作的复杂机器学习算法,Mintigo可帮助市场营销和销售组织更好地识别最有可能转化为客户的潜在客户。通过其引擎,Mintigo用户的整体营销效率平均提高4倍。Mintigo运行在AWS上,机器学习算法用Python编写。 MongoDB用于存储多个TB数据集,且因其可扩展性以及架构的灵活性并被选择用于流式数据摄取和存储。MongoDB的表达式查询框架和二级索引为算法提供相关数据,而无需扫描数据库中的每条记录。从案例研究中了解更多信息: https://www.mongodb.com/blog/post/why-mintigo-uses-mongodb-to-power-its-predictive-marketing-data-science

零售业的地理位置分析

美国的移动应用程序开发商在MongoDB上构建了其智能引擎,可实时处理和存储数千万位客户及其位置上丰富的地理空间数据点。智能引擎使用可扩展的机器学习和多维分析技术来表现行为模式,允许零售商通过移动设备使用基于位置的优惠来预测和定位客户。 MongoDB对具有复杂索引和查询的地理空间数据结构的支持为机器学习算法提供了基础。MongoDB利用分片的横向扩展设计允许公司从数十万个扩展到数百万个客户数据点。

自然语言处理

北美的AI开发人员已经将主要在消费电子品牌嵌入的NLP软件构建到智能家庭和移动设备中,设备和用户之间的所有交互都存储在MongoDB中,然后反馈到学习算法中。MongoDB被选中正式因为其架构的灵活性和支持快速变化的数据结构。

将数据科学引入人才招聘

该公司与财富500强中的人力资源部门合作,利用数据科学和员工情报解决了简历堆栈和候选人采购问题。该公司通过将AI应用于简历之外的数千个信息来源,包括公共和企业数据,为申请人提供实时分析和优先次序。通过AI算法生成的预测分析,招聘人员可以即时识别主动和被动申请人中最合格的候选人,加快招聘流程并降低每次雇佣成本。由于其需要数据模型的灵活性和可扩展性,并加上广泛的安全控制来保护个人身份信息(PII),MongoDB被选中作为底层数据库。

译者简介

郭远威

  • 资深大数据解决方案架构师,MongoDB中文社区联席主席。
  • 数据库专家,曾负责迁移英国第一大虚拟运营商;
  • 著有《大数据存储MongoDB实战指南》一书。

转载时,须注明作者、译者、出处和微信号

原文发布于微信公众号 - Mongoing中文社区(mongoing-mongoing)

原文发表时间:2018-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

运维平台中的业务树初版设计

资源服务的一个基本单元是服务器,可以是虚拟机,物理机,也可以是docker等。这是最底层的资源服务。

1783
来自专栏腾讯架构师的专栏

基于空闲资源的弹性计算实践

当前整个行业大概6%~12%的CPU平均利用率,有较大的提升空间,怎么去提升利用效率,减少对能源的浪费,欢迎大家一起探讨。

1.1K0
来自专栏智能大石头

100亿小数据实时计算平台

2017年6月,开始数据分析的职业生涯,作为架构师,建立起一套基于.Net/.Net Core的小数据实时处理计算平台,这里记录学习过程中的点点滴滴!

1532
来自专栏BestSDK

Hexagon DSP 发布SDK 3.3.2,打造全新神经网络库

将推理、场景分类、图像处理和视频回放增强之类的工作负载放到边缘设备(如智能手机)的CPU和GPU进行处理,会耗尽运行周期并缩短电池使用寿命。DSP编程越方便,您...

5866
来自专栏逍遥剑客的游戏开发

Direct3D学习(二):模型显示

2419
来自专栏程序人生 阅读快乐

Linux性能优化大师

性能调优有时被称为“黑色艺术”,因为有时有效地调整一个系统,要求具有更深层次的知识,且需要了解一个系统的硬件和软件组成,以及系统之间的相互作用。性能优化是针对特...

1641
来自专栏向治洪

OtterTune来了,DBA怎么办

概述 最近几年,特别是随着云计算的发展,出现了行业向后重叠和推动的情况。数据库龙头企业Oracle最近几年重点转而向云的变革,它全力以赴在做的一件事情就是把所有...

2616
来自专栏机器人网

工业机器人控制系统组成及典型结构

一、工业机器人控制系统所要达到的功能 机器人控制系统是机器人的重要组成部分,用于对操作机的控制,以完成特定的工作任务,其基本功能如下: 1、记忆功能:存储作业顺...

4484
来自专栏恰童鞋骚年

Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

  本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖、回帖,如图1所示。

1672
来自专栏腾讯技术工程官方号的专栏

鹅厂上万节点大规模集群的跨城自动迁移(下)

当上百P的数据,上万个节点的集群进行跨城迁移时,如何在有限的带宽下实现自动、高效、稳定地迁移?本文将跟你一一揭晓!

5782

扫码关注云+社区

领取腾讯云代金券