Skip to content
Xinjie Chen edited this page Sep 4, 2017 · 6 revisions

什么是 Easy ML 系统?

机器学习算法已然成为诸多大数据应用中不可或缺的核心组件。然而,由于机器学习算法使用起来很难,尤其是在分布式平台比如 Hadoop 和 Spark 上,机器学习的全部潜能远远没有发挥出来。关键障碍不仅来自算法本身的实现,还常常来自算法在实际应用过程中其种类繁多且涵盖多步复杂操作。

我们的平台 Easy Machine Learning 提供了一个通用的数据流系统,可以降低将机器学习算法应用于实际任务的难度。在该系统中,一个学习任务被构造为一个有向无环图(DAG/directed acyclic graph),图中的每个节点表征一步操作(即机器学习算法),每一条边表征从一个节点到后一个节点的数据流。 用户可自定义任务流程,或根据现有系统中的任务/模板进行克隆。在把任务提交到云端之后,每个节点将根据 DAG 图中的数据流向及依赖关系自动执行任务流程。交互式的图形用户界面,可方便用户通过拖曳的方式创建、配置、提交和监控构建的任务。该系统的优点有:

  1. 降低定义和执行机器学习任务的门槛;

  2. 可在平台上共享数据、程序、任务流程和分析结果;

  3. 在一个任务中无缝整合单机算法和分布式算法,用户可在一个任务中同时包含M/R, Spark, 单机等多种不同类型的程序;

  4. 对程序的编写语言无限制,可支持任何能够通过Shell命令运行的语言,如Scala、Java、Python等;

该系统包含三个主要组件:

  • 一个分布式的机器学习库,不仅能实现流行的机器学习算法,也能实现数据预处理/后处理、数据格式转变、特征生成、表现评估等算法。这些算法主要是基于 Spark 实现的(目前该部分仅开放在我们的在线系统中)。
  • 一个基于 GUI 的机器学习开发环境系统,能让用户以拖曳的方式创建、配置、提交、监控、共享他们的机器学习流程。机器学习库中所有的算法都可在此开发环境系统中获得并使用,它们是构建机器学习任务的主要基础。
An example dataflow DAG
  • 一个执行任务的云服务。我们基于开源的 Hadoop 和 Spark 大数据平台构建该云服务。为了方便快速搭建平台,我们提供给在 Docker 虚拟机上构建服务器集群。从 GUI 上提交一个 DAG 任务之后,在所有的独立数据源准备好时,每个节点将会自动运行。对应节点的算法将会依据节点的具体实现而选择在 Linux、Spark 或者 Map-Reduce上自动运行。

如何参与我们的项目?

Pull 整个项目,并准备好必需的环境和开发工具, 按照 Quick-start.md 的步骤,你可以在你的计算机中构建我们的系统。

怎样使用 Easy ML Studio?

在运行 Easy ML 之后,你可以访问系统首页:http://localhost:18080/EMLStudio.html,使用我们提供的官方账号: bdaict@hotmail.com,密码: bdaict登入系统。为了最佳的用户体验,我们建议使用 Chrome 浏览器。

  • 如下图所示,用户可以根据左边菜单栏选择算法和数据集创建一个机器学习任务(一个数据流 DAG)。用户可以点击选择在 ProgramData 菜单项下面的算法和数据集,同样也可以点击 Job 菜单项中选择我们提供的一些示例任务,通过复制操作,在复制的图中做一些必要的修改形成新的任务。 用户同样可以在右边的菜单修改任务信息和每一个结点的参数值。任务中的结点可以对应于单机 Linux 程序或在 Spark、Hadoop Map-Reduce 上运行的分布式程序。
  • 在点击了 submit 按钮后,该任务被提交给云端运行。每个节点的状态由不同的颜色表示(黄色:正在运行;红色:失败;绿色:成功),如下图所示:
  • 用户可以右键点击已执行完成节点上的绿色输出端口来预览输出数据,每个绿色输出点代表节点的一个数据输出。用户还可通过右键每个已执行完成节点,从弹出的菜单中选择Show STDOUT/Show STDERR的方式查看节点执行过程中打印的标准stdoutstderr日志。
  • 在任务执行结束后(无论成功与否),用户可以在该任务图中继续修改,并再次提交运行,如下图所示。系统只会执行图中因修改而影响到的节点以及上次执行过程中未成功的节点。而修改未影响到的节点输出的将直接重用,用以节省运行时间和系统资源。
  • 用户可以通过上传自己的算法包和数据集来构建自己的任务,并分享给他人。 用户点击 Upload Program 按钮,系统将弹出窗口允许用户指定算法包的必要信息,包括名称、类别、描述和命令行特征字符串等,如下图所示。其中最重要的信息在于需要设定执行该算法包的命令行特征字符串。它定义了节点的输入端口、输出端口和参数设置。我们在面板中开发了一个工具来帮助用户编写命令行字符串模式。通过点击 Upload Data 按钮,用户可以用与上传算法包相似的方式上传数据集。

如何体验Easy ML系统?

为了方便大家对我们系统进行体验,我们提供了在线服务地址,可以通过自行注册账户或使用我们提供的官方账号和密码进行登入:

如果在试用过程中有任何问题或建议,欢迎联系我们,您可以通过github给我们留言或者发邮件至bdaict@hotmail.com,非常感谢您的建议!

致谢

以下人员对 EasyML 项目的开发做出了贡献:

  • 徐君, 中国科学院计算技术研究所 研究员。主页: http://www.bigdatalab.ac.cn/~junxu
  • 晏小辉, 主页: http://xiaohuiyan.github.io/
  • 陈欣洁, 中国科学院计算技术研究所
  • 李朝晖, 中国科学院计算技术研究所
  • 郭天佑, 中国科学院计算技术研究所
  • 侯建鹏, 中国科学院计算技术研究所
  • 李萍, 中国科学院计算技术研究所
  • 程学旗, 中国科学院计算技术研究所 研究员。 主页: http://www.bigdatalab.ac.cn/~cxq/