青岛达内培训
达内青岛中心

18300268127

热门课程

为什么MongoDB适合深度学习?

  • 时间:2018-03-06
  • 发布:青岛达内
  • 来源:互联网

    如果你没有阅读第III部分的内容,强力推荐阅读一下,以更多地了解在做深度学习项目时选择数据库应该考虑的关键因素有哪些。在以下的讲解部分中,开发者和数据科学家可以利用MongoDB作为一个灵活、可扩展、高性能的分布式数据库来满足人工智能应用开发的严峻考验。

青岛达内培训

    灵活的数据模型
    MongoDB的文档数据模型,便于开发者和数据科学家存储和结合其他任何数据库的数据,且没有放弃利用复杂的验证规则来管理数据的质量。该模式可以在不停用应用程序或数据库的情况下动态地修改数据,这是由关系数据库系统的模式修改或重新设计的代价高所引起的。
    这种数据模型的灵活性对于深度学习是特别有价值的,这需要不断的实验来发现新的见解和预测:
    输入数据集可以包括快速变化的结构化数据和非结构化数据,这些数据集可以从点击流、日志文件、社交网络和物联网传感器流、CSV文件、txt文本、图像、视频等,这些数据集很多都不能映射成关系数据库固定的行和列格式。
    深度学习的训练过程中往往会增加新的隐藏层、特征标签、参数以及输入数据,这需要频繁地修改底层数据模型。
    因此,一个支持各种输入数据集的数据库能够无缝地修改模型训练的参数,这对于深度学习而言是不可多得的。
    丰富的编程和查询模型
    MongoDB为开发者和数据科学家提供本地驱动程序和认证连接来建立深度学习模型,PyMongo驱动器是一个用于MongoDB的Python工具,也是一个被推荐的Python操作MongoDB数据库的方式。社区也开发了R语言的MongoDB客户端,这也可用于R语言程序员。
    MongoDB的查询语句和丰富的二级索引使得开发人员能够开发应用程序,可以以多种方式查询和数据分析。数据可以在毫秒级的响应时间内通过单键、范围、文本搜索、图表和地理空间查询到复杂的聚合和MapReduce任务。
    为了在分布式数据库集群上并行处理数据,MongoDB提供了聚合管道(aggregation pipeline)和MapReduce.MongoDB聚合管道是仿照数据处理管道的基本原理设计,数据经过一个一个的阶段,每阶段将数据处理后的结果传递给下一个阶段,最终得到多重处理后的结果。其中,最基本的管道阶段提供像查询等操作的过滤器及输出文档格式的转换等功能,其它管道操作提供按特定字段对文档进行分组、排序以及聚合数组中的内容等功能。此外,管道阶段可以使用操作符进行相关计算,比如计算跨文档集合的平均值或标准差等。MongoDB同样也提供了原生MapReduce操作,使用JavaScript函数来执行相关的map和reduce阶段。
    除了原生的查询框架外,MongoDB同样也提供了针对Apache Spark的一种高性能连接器,该连接器连接了Spark所有的库,包括Python、R、Scala和Java.对于机器学习、图表以及SQL API等分析而言,MongoDB数据可以作为其数据帧和数据集。
    针对于Apache Spark的MongoDB连接器可以利用好MongoDB的聚合管道以及提取、筛选和处理其所需数据范围的二级索引。比如,分析特定地理位置的所有客户这一任务,简单的非关系数据存储不支持二级或在数据库中聚合。而在这种情况下,Spark需要基于简单的主键提取所有数据,这意味着数据科学家和工程师们在进行该过程时需要更多的时间上和硬件上的开销。为了限度地提高性能,对于分布式数据集而言,MongoDB连接器可以将弹性分布数据集(RDDs)和源MongoDB节点同地协作,进而最小化跨集群之间的数据移动并减少延迟。
    可升缩性和冗余性
    模型的训练时间可以通过建立一个深度学习平台以及可扩展数据库层来减少,MongoDB提供了以下一些措施来尽可能地增大吞吐量以及尽可能地减少深度学习工作负载的延迟。
    WiredTiger是MongoDB的默认存储引擎,也是世界上部署最广泛的嵌入式数据管理软件,它是基于现代多核架构,并使用了多种编程技术,如风险指针、无锁算法、快速锁定和消息传递等。WiredTiger尽可能地增大每个CPU核和时钟周期内的计算工作量,此外,WiredTiger使用紧凑的文件格式和压缩存储尽可能地减少磁盘开销。
    对于大多数对延迟敏感的深度学习应用而言,MongoDB可以配置存储引擎。基于WiredTiger这个存储引擎,可以在不牺牲传统数据库提供的丰富灵活查询、实时分析和可升缩能力的情况下,为用户提供内存计算的好处。
    为了并行地进行模型训练以及缩放输入数据集,MongoDB使用分片(sharding)技术。MongoDB分片是完全弹性地、自动地调整集群中的数据作为输入数据集的增长,或者是添加和删除节点。
    在MongoDB集群中,每个分片数据自动分发到多个驻留在不同节点上的多个副本,其副本集提供冗余性以在训练数据发生故障时恢复数据,并减少检查点的开销。
    可调一致性

    在一般情况下,MongoDB具有强一致性。启动深度学习应用程序可用立体读取已写入的数据库中的内容,从而避免了最终一致性系统导致的开发人员复杂。强一致性会为机器学习算法提供最准确的结果,然而,在某些情况下,如随机梯度下降算法(SGD),其结果不是很好但尚可接受。

   本篇文章是有青岛达内培训为您呈现,希望给您带来更多更好的文章

更多青岛IT培训相关资讯,请扫描下方二维码
 青岛IT培训
上一篇:深度学习中对数据库的思考
下一篇:MongoDB人工智能部署情况

马上预约七天免费体验课

姓名:

电话:

新举措教孩子使用Swift编程语言

网页设计培训学校哪家有资历?

自由职业者跟创业者有什么区别!

自媒体平台哪家强?有主有次才像样!

选择城市和中心
贵州省

广西省

海南省

达内教育

有位老师想和您聊一聊