雷锋网AI科技评论按:6.13号上午,中科院计算所研究员徐君在微博中宣布,Easy Machine Learning 系统开源,欢迎大家下载。雷锋网编辑第一时间为大家带来该系统的功能介绍。
在许多大数据应用中,机器学习算法已经成为至关重要得 一部分。不过,机器学习的全部潜能还远远没被开发出来,因为使用机器学习算法很困难,尤其是在像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慕课学院与中科院计算所达成合作,于北京开展中国计算机学会学科前沿讲习班,每年只举办十期。现在6月份课程已经进行到第三期——存储器件与系统前沿,接下来还会有区块链,类脑计算,社交网络与数据挖掘等热门课程,单次课程原价699,现在只需要499。如果10期全购更有巨大优惠。这里有顶级的专家讲师团队,探讨最前沿的技术发展趋势,你还在等什么?详情戳这里https://www.leiphone.com/special/ccf_adl
以上内容论文来源 Ease the Process of Machine Learning with Dataflow
GitHub: https://github.com/ICT-BDA/EasyML
雷锋网整理编译