动态 | 中科院计算所开源Easy Machine Learning系统,用交互式图形界面简化ML开发过程

AI科技评论按:6.13号上午,中科院计算所研究员徐君在微博中宣布,Easy Machine Learning 系统开源,欢迎大家下载。AI科技评论编辑第一时间为大家带来该系统的功能介绍。

在许多大数据应用中,机器学习算法已经成为至关重要的一部分。不过,机器学习的全部潜能还远远没被开发出来,因为使用机器学习算法很困难,尤其是在像Hadoop和Spark的分布式平台。主要障碍不仅是来自算法本身的运行,而且在真实应用中,运行它们的过程中往往包含多重步骤和不同算法。在这个演示中,展示了一个通用的基于数据流的系统,以减化在真实世界中应用机器学习算法的过程。在该系统中,学习任务被构造成一个有向非循环图(DAG),其中每个节点代表一个操作(例如,一个机器学习算法),每个边缘代表数据流从一个节点到它的后续节点。实现了交互图形用户界面,使用户能够以拖放的方式创建、配置、提交和监视任务。

图2显示了系统的体系结构。整个系统由三部分组成:提供基础服务的大数据基础结构,提供机器学习任务的核心构建模块的机器学习库,和提供友好界面降低使用机器学习的难度的机器学习工作室。

大数据基础结构

该系统是建立在开源大数据系统Hadoop和Spark之上的。所有的数据,机器学习算法以及其它相关的信息都存储在分布式文件系统HDFS和Hive数据管理系统,MySQL的相关数据库系统用于存储元数据。我们的系统也依赖于分布式计算框架Map-Reduce 和 Spark。所有计算资源都由Yarn管理.每一个提交的机器学习任务(数据流DAG)首先转换为一个工作流DAG,然后随着工作流的调动程序调动。

机器学习库

机器学习库实现了一系列流行的机器学习算法(如分类、主题建模、图形处理、信息推荐等)。对于每种算法,都在Spark上运行了单机版和分布式版,因为在数据不够大的时候,单机版往往比分布式版更有效。除了核心算法,该库也会执行必要的模块来支持核心算法,包括数据预/后处理实现所需要的功能模块、数据格式转换、特征提取、绩效评价等,所有的算法和模块可以通过命令行和java API来调用。这些算法构成了用户定义机器学习任务的核心构建块。

机器学习工作室

机器学习工作室的主要目标是提供一个友好的用户交互界面,使普通用户可以使用机器学习算法轻松地解决自己的问题。机器学习工作室是作为一个Web服务实现的,可以通过Web浏览器访问。它提供了以下主要功能:

1)资源管理

在机器学习库中实现的所有算法都可以从Studio系统中访问。该系统还提供了一些数据和任务,用于演示如何使用这些算法来解决问题。为了构造机器学习任务,用户可以直接使用系统中的算法和数据。他们还可以上传自己的数据和算法包。要上传一个算法包,用户需要指定运行该算法的命令行模式字符串的格式。字符串定义程序名、输入端口、输出端口和参数设置。这样,上传的算法可以在不同的参数设置下运行。在指定的任务数据流DAG中,该算法可以按照命令行模式运行。在提交机器学习任务之后,它将被分配一个唯一的ID,并存储在任务存储库中。用户可以在将来检查和重用任务。还可以将任务共享给其他用户。

2)任务设计

构造一个机器学习任务,用户可以将算法和数据集(节点)拖到工作面板上,将这些节点连接成一个数据流DAG,并设置所有节点的参数。如果用户可以在库中找到一个类似的工作(大多数情况下),可以直接复制现有的任务和进行必要的修改(添加/删除节点和边,改变参数)。通过在工作面板中选择一个节点,参数设置面板将显示在页面的右边,这使得用户可以为任务中相应的算法设置特定的参数值。提交一个机器学习任务后,工作室将检查数据流DAG的正确性,产生时间文件的文件路径,将数据流DAG转化为工作流DAG,最后提交工作流程DAG到 Oozie执行。

3)任务监视

用户可以通过Studio监控提交任务的进度。在执行任务时,使用不同的颜色指示节点的状态:绿色成功完成,黄色运行不足,红色完成错误,灰色等待执行。成功节点的结果可以通过右击相应的输出端口进行检查和下载。打印到标准输出和标准错误控制台的信息也可以通过右键单击相应的节点来检查。通过这种方式,用户可以知道任务的状态,并在出现错误时调试其算法和任务。

4)任务重用

现有任务不仅可以作为设计新任务的模板,而且可以重用,以节省执行时间和系统资源。用户可以直接修改完成的任务(例如,修改参数的节点,添加节点和边,或删除节点和边等)并重新提交任务。在新提交的任务,只有受影响的节点会再次执行而未受影响的节点输出的结果将直接重复使用。为了解决实际任务,用户通常需要反复调整任务的数据流DAG和算法的参数。任务重用提供了一种有效的机制来节省用户的等待时间和资源。

系统优势

  • 它是一个简单易用且功能强大的系统。机器学习任务的数据流DAG描述直观且易于理解。许多不必要的细节被隐藏。另一方面,它仍然为专家用户提供了大量的详细资料(例如,参数设置,输入/输出端口等)。
  • 系统在一个任务中无缝集成多个程序。由于使用HDFS在不同的节点上交换信息,所以很少对DAG节点的程序形式有限制。该程序对应于一个节点,可以独立或分布式地执行。可以用C++、java、python编程语言,Perl或shell语言。
  • 系统中的数据、算法和任务是高度可重用的。用户可以利用系统开发的数据和算法构建不同的机器学习任务。也可以利用其他用户上传/共享的数据和算法,可以克隆一个任务来构造类似的任务。此外,现有任务的中间结果可以通过直接修改和追加新任务来重复使用。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-06-13

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开发与安全

在腾讯实习的那段日子:不要在难受的时候选择 '逃避/离开'

时间过得很快,从2014.6.5入职实习到2015.1.5已经是7个月的时间了,在这边还是学到了很多东西,遇到的人大多数比较nice。中间拿到了留任offer,...

1840
来自专栏星流全栈

15个你必须知道的Facebook开源项目

1202
来自专栏ThoughtWorks

2015.5 技术雷达 | 语言和框架篇

? (点击图片可查看大图) 自从我们上一次在技术雷达中提到 Nancy (nancyfx.org) 之后,它已然成为了我们在项目上的默认选择。围绕着小而垂直切...

33610
来自专栏take time, save time

三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层

由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会在gitbook上...

2596
来自专栏哲学驱动设计

090522 T 接口的用途

接口大致有如下用途:     1.需求描述         在项目架构设计阶段,应该基于需求分析,建立所有业务逻辑层及其以上的重要接口。         包括I...

1825
来自专栏无所事事者爱嘲笑

优秀的前端需要做到什么?

1423
来自专栏Java架构

必看!多年架构师告诉你为什么要学JVM?

1513
来自专栏ThoughtWorks

TW洞见 | 郑晔:测试时间

在单元测试中,与时间相关的测试总是让人很头疼。举个例子,我们希望做一个定期过期缓存,比如30分钟过期,这该怎么测试呢?等30分钟?那要是过期时间是3天,你打算把...

3759
来自专栏吉浦迅科技

DAY28:阅读如何计算Occupancy

1003
来自专栏开源FPGA

基于FPGA的HDMI高清显示接口驱动

  本站点博客将逐步迁移至http://ninghechuanblogs.cn/   HDMI是(High Definition Multimedia Inte...

4229

扫描关注云+社区