免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

TensorFlow、DMTK 与 SystemML 孰优孰劣

  • 2015-11-24
  • 本文字数:1980 字

    阅读完需:约 6 分钟

毫无疑问,机器学习是目前数据分析领域最为炙手可热的主题之一,其研究成果早已渗透到了日常生活中,从垃圾邮件过滤到人脸支付,从信用欺诈检测到自然灾害预测等场景无一不活跃着机器学习的身影。但即便机器学习已经得到了广泛的应用,开发人员能够从网上找到很多机器学习算法实现,但是这些代码往往“脏”而“乱”,没有经过大规模的生产验证。幸运的是现在这种窘境已经不复存在了,因为 Google、Microsoft 和 IBM 分别发布并开源了自己的机器学习工具包 TensorFlow、DMTK 和 SystemML,每一个项目都是各自公司知识积累的结晶,在其内部发挥着举足轻重的作用,那么这些工具包相互之间又有哪些区别呢?

功能特性
TensorFlow 是一个用来编写和执行机器学习算法的工具。计算在数据流图中完成,图中的节点进行数学运算,边界是在各个节点中交换的张量(Tensors–多维数组)。TensorFlow 负责在不同的设备、内核以及线程上异步地执行代码,目前支持 CNN、RNN 和 LSTM 等图像、语音和自然语言处理(NLP)领域最流行的深度神经网络模型。

DMTK 是一个分布式机器学习框架,它由参数服务器和客户端软件开发包 (SDK) 两部分构成。参数服务器支持存储混合数据结构模型、接受并聚合工作节点服务器的数据模型更新、控制模型同步逻辑;客户端软件开发包负责维护节点模型缓存 (与全局模型服务器同步)、本地训练和模型通讯之间的流水线控制以及片状调度大模型训练。它包含 DMTK 框架、LightLDA 和分布式词向量(Word Embedding)三个组件。

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

SystemML 则是一门灵活的、可伸缩的机器学习 (ML) 语言,支持描述性分析、分类、聚类、回归、矩阵分解以及生存分析等算法。DML 中指定的算法能够根据数据和集群特性使用基于规则和基于成本的优化技术动态地编译和优化。

执行环境与模式
TensorFlow 能够在台式机、服务器或者移动设备的 CPU 和 GPU 上运行,也可以使用 Docker 容器部署到云环境中。在处理图像识别、语音识别和语言翻译等任务时,TensorFlow 依赖于配备图像处理单元(GPU)的机器和被用于渲染游戏图像的芯片,它对这些芯片依赖度比想象中的高。当前开源的版本能够运行在单机上,暂不支持集群。操作系统方面,TensorFlow 能够运行在 Linux 和 MacOS 上。

DMTK 采用了传统的客户端 - 服务器架构,有多个服务器实例运行在多台机器上负责维护全局模型参数,而训练例程(routines)则使用客户端 API 访问并更新这些参数。为了适应不同的集群环境,DMTK 框架支持两种进程间的通信机制:MPI 和 ZMQ。应用程序端不需要修改任何代码就能够在这两种方式之间切换。DMTK 支持 Windows 和 Linux(测试环境为 Ubuntu 12.04)两种操作系统。

SystemML 有多种执行模式。在独立模式下,SystemML 能够运行在单台机器上,这样数据科学家就能够在本地开发算法,不需要分布式集群。另外还可以将算法分发到 Hadoop 或者 Spark 上,从而利用已有的资源和技能。SystemML 能够运行于 Windows、 Linux 以及 MacOS 上。

实现语言、API 接口及文档
TensorFlow 的核心是使用 C++ 编写的,有完整的 Python API 和 C++ 接口,同时还有一个基于 C 的客户端 API。目前 TensorFlow 的 Python API 需要 Python 2.7,对于 Python 3 的支持正在开发中。在 TensorFlow 的官网上 Google 提供了完整的API 接口说明白皮书示例教程(包括针对初学者和专家的)

DMTK 则是使用 C++ 编写的,提供了一个客户端 API 和 SDK。 DMTK 的官网对 DMTK 框架、LightLDA、分布式词向量的应用场景、下载、安装、配置、运行以及性能等方面都做了详尽的介绍。

SystemML 使用 Java 语言编写,开发人员能够使用类似于 R 或者 Python 的语法表达算法,通过 Java、Scala 以及 Python 操作 SystemML。文档方面,SystemML 基本集中于 GitHub 上,包括构建、测试、独立模式运行命令以及一个线性回归的示例。

应用场景
Google 已将 TensorFlow 用于 GMail(SmartReply)、搜索(RankBrain)、图片(生成图像分类模型–Inception Image Classification Model)、翻译器(字符识别)等产品。

虽然 Microsoft 并没有在 DMTK 的官网上透露其在内部的应用情况,但是从其功能特点以及定位来看或许更倾向于自然语言处理方面,例如文本分类与聚类、话题识别以及情感分析等。

SystemML 则是 IBM 研发了超过十年的机器学习技术,沃森(Watson)在几年前的大型活动里就整合了很多 SystemML 的机器学习功能,当然目前开源的 SystemML 依然在孵化阶段。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-11-24 18:006342
用户头像

发布了 321 篇内容, 共 113.1 次阅读, 收获喜欢 17 次。

关注

评论

发布
暂无评论
发现更多内容

IT人为什么难以拿高薪?

看山

成长 随笔杂谈 薪资 心灵鸡汤

正则表达式位置匹配——匹配两个特殊符号中间的内容

jerry.mei

Java 正则表达式 大前端 字符串匹配

[python基础]3 python数据类型下篇(不得不看的字典,列表大总结)

我是程序员小贱

spark学习之IDEA配置spark并wordcount提交集群

我是程序员小贱

JDK中居然也有反模式接口常量

看山

Java 源码阅读

16张图入门Nginx——(前端够用,运维入门)

执鸢者

nginx 运维 大前端

ARTS Week12

时之虫

ARTS 打卡计划 arts

ARTS 07 - 使用 supervisor 配置 ngrok 内网穿透为守护进程

jerry.mei

算法 练习 ARTS 打卡计划 ARTS活动 内网穿透

ARTS打卡 第12周

引花眠

微服务 ARTS 打卡计划

Nginx之反向代理

xcbeyond

nginx 反向代理 代理

SICP,我的函数式编程启蒙书

Kurtis Moxley

读书 函数式编程

螺旋矩阵算法,臭代码解析,微服务架构 Service Mesh 服务网格 RPC 协议实现原理 Dubbo 通讯协议,John 易筋 ARTS 打卡 Week 13

John(易筋)

ARTS 打卡计划

异常处理的那些事儿

松花皮蛋me

Java 设计模式

航运区块链 抗疫危中有机

CECBC

区块链 航运

Java统一异常处理(配置文件集中化定义)

xcbeyond

Java 架构 后端 统一异常

区块链技术--公证人机制

CECBC

区块链 数字货币 公证人

全面了解CGI、FastCGI、PHP-FPM

书旅

CGI PHP-FPM Fast-CGI

结算场景下的跳坑记

印無印

这些年看过的Linux相关书籍推荐

我是程序员小贱

[python基础]2 python数据类型上篇

我是程序员小贱

Bash 脚本的单元测试

柴锋

bash Linux DevOps Unit Test Shell

目前数字人民币试点仍是“4+1” 别误读了

CECBC

数字货币 央行 人民币

如何选择:Bootstrap Or Layui

引花眠

bootstrap layui

这样看mybatis,谁都会分析源码!

诸葛小猿

源码 mybatis mybatis源码

一次由默认参数引起的思考

白日梦想家

编程 思考

SpringBoot系列(七):SpringBoot 中使用Redis缓存

xcbeyond

Java redis 微服务 springboot

SpringBoot系列(八):SpringBoot 中的事务处理

xcbeyond

Java 微服务 事务 springboot

准时下班的秘密:集成 GitLab && JIRA 实现自动化工作流

Phoenix

团队协作 研发效能

蓝绿部署、金丝雀发布(灰度发布)、AB测试

看山

微服务 持续集成

华为的“少年天才”攀登者,出发向智能存储的“奥林帕斯山”

脑极体

python必备知识总结

我是程序员小贱

TensorFlow、DMTK与SystemML孰优孰劣_IBM_孙镜涛_InfoQ精选文章