前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么MongoDB适合深度学习?

为什么MongoDB适合深度学习?

作者头像
MongoDB中文社区
发布2019-04-22 16:11:16
1.4K0
发布2019-04-22 16:11:16
举报
文章被收录于专栏:MongoDB中文社区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实战指南》一书。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mongoing中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档