演讲 | 亚马逊机器学习总监Alex Smola:为什么你的机器学习代码运行速度慢

机器之心原创

作者:高静宜

2017 年 3 月 27 日,亚马逊云服务(AWS)机器学习总监 Alex Smola 到北京大学招贤纳士,并呈现了一场题为《为什么你的机器学习代码运行速度慢(Why your machine learning code is slow)》的精彩演讲。读者可点击阅读原文下载完整 PDF。

Alex Smola 曾于 1996 年获得慕尼黑工业大学物理学硕士学位,1998 年获得柏林工业大学计算机科学博士学位。在 1999 年到 2007 年期间,先后于澳大利亚国立大学及 NICTA 研究中心担任研究小组组长。2008 年,他加入雅虎,后在 2012 年加入谷歌。他是加利福尼亚大学伯克利分校的兼职教授,目前担任卡内基梅隆大学机器学习教授。2015 年,他联合创立了 Marianas 实验室。2016 年,Alex 加入亚马逊,目前担任亚马逊 AWS 机器学习总监一职。迄今为止共发表超过 200 篇论文并参与编写 5 本学术专著。

这次 Alex 中国行的主要目的之一就是代表亚马逊 AWS 人工智能团队招贤纳士并分享最前沿科技信息。3 月 28 日上午 10:00,Alex 在北京大学理科教学楼进行了一场针对现代硬件的算法设计的题为《为什么你的机器学习代码运行速度慢(Why your machine learning code is slow)》的学术演讲。这次演讲围绕多核、多机器和 GPU 的可扩展数据分析方法,从基础开始讲起,讲述可扩展的机器学习并非想象中那么困难。具体内容包括分布式推荐系统、广告计算和深度学习。

在介绍来意之后,Alex 为大家展示了此次演讲的三个主题。

第一部分:存储器

  • 包括快速缓冲存储器、随机存取存储器、固态硬盘、硬盘、网络

第二部分:计算

  • 包括向量化、多核

第三部分:MxNet

  • 包括语言、并行化、亚马逊 AMI 和云形成模板

第一部分:存储器

目前存在很多存储器类型,不同类型的存储器容量、存取时间不尽相同,可以实现不同的目的。

从下面的表格可以看出,从存储器中每一次读取数据都会消耗时间,代码中无用的内容,可能会导致读取数据时间的消耗。

这里,Alex 介绍了在推荐系统中的用例:

可以看出,在这种情况下,内存消耗较大、运行时间较长。

然而,更好的工程代码是可以大大缩短运行时间的,怎样做到的呢?

协同过滤带来的影响:

这里,有几个关键概念:

● 分层用户的评价

● 在 Cache 中存储出现频繁的 Datatable

● 避免 socket 之间的伪共享

Alex 还介绍了另外一个关于支持向量机优化算法的用例

这里存在技术难点,一是存在初始下降的可能性导致无法记录;二是 dual as-cent 是准确的从而导致目标不变。

第二部分:计算

在这一部分,Alex 首先解释了向量化如何提升运行速度。

之后,介绍了关于 SimHash 算法用例(Simhash 是用来网页去重最常用的 hash 方法,速度很快)

然后,介绍了无锁多核心

预估广告系统中的点击问题

逻辑回归

随机梯度下降

第三部分:MxNet

  • 命令式和说明式编程
  • 语言支持
  • 后端和自动并行

这一部分一开始,Alex 就提出了一个问题:为什么我们还需要另外一种深度网络工具?这是出于对资源效率、速度、简单性的考虑。

节省&资源效率

  • 用小内存的廉价 GPU 编程网络

速度

  • 用机器和 GPU 进行线性延展;
  • 在单个机器上也有高效率

简单性

  • 混合命令式和说明式的代码

关于代码的简洁以及效率

在演讲的过程中,Alex 不止一次提起代码简洁化的重要性,并对命令式和声明式编程做出解析。

命令式编程的优点:

  • 简单灵活;
  • 利用语言固有的特征(loop、condition、debugger)

命令式编程的缺点:

  • 难以优化

说明式编程的优点:

  • 更多的优化机会;
  • 跨不同的语言;

说明式编程的缺点:

  • 不灵活;

下图对命令式编程与说明式编程做深度学习进行了对比。

而 MXNet 将这些特点结合在了一起。

而且混合的 API 能够进行更快的延展:

  • 不同图之间运行时间的转换有输入所决定;
  • 对序列建模和图大小的重塑有帮助;
  • 使用 Python 中的命令式代码,10 行额外的 Python 代码;

多种语言、多种工具包

在这里,Alex Smola 提到他们从用户那里所得到的信息:

编程语言:

  • Python 很好,但我更喜欢 R/Julia/Matlab 等;
  • 我想要 Scala 与 Spark 管道一起工作;
  • 我需要 C++接口在嵌入式系统上运行;
  • 我喜欢在用户浏览器上运行 Javascript;

框架:

  • 我使用 Torch 7 年了;
  • 我所有的代码都在 Caffe 中;
  • 我喜欢 Keras;
  • 我用 TensorFlow 开始的深度学习;
  • 之前我只使用过 Numpy,我该如何开始呢?

针对亚马逊从用户那里获得的建议,MXNet 对编程语言、框架的需求进行了集成:带有多种编程语言;把 Caffe、Torch、Numpy 都带入了 MXNet。

在计算机视觉领域,Caffe 有普遍的应用,而在 MXNet 中有 Caffe Operators。

对科学计算和深度学习而言,Torch 是流行的 Lua 框架。

效率以及并行化

Alex Smola 表示写并行程序非常痛苦。每个前端-后端更新涉及到 O(num_layer),通常在 100—1000 之间的张量计算和通信。

以下是进行自动并行:

数据并行:

  • 读取数据分隔;
  • 拉动参数;
  • 计算梯度;
  • 推进梯度;
  • 更新参数;

分布式实验:

  • 谷歌 Inception V3;
  • 从 1-47 增加机器量;
  • 如果使用 10 台以上机器,MXNet 要比 TensorFlow 快 2 倍。

AMI 和云形成模板

  • 亚马逊机器图像(AMI)
  • 深度学习框架
  • 云形成模板

用于深度学习 AMI

  • 面向数据科学家与开发者的工具;
  • 建立深度学习系统需要时间与技巧

AWS CloudFormation 组件如下:

演讲的最后,Alex 对本次演讲的内容做出了小结,并再一次表示欢迎同学们加入亚马逊 AWS 人工智能团队(招募邮箱为 aws-ai-event-recruiting@amazon.com)

©本文为机器之心原创,转载请联系本公众号获得授权。

✄------------------------------------------------

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-03-28

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏奇点大数据

业余时间学数据分析,如何快速上手

数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……,大到企业的销售、运营数据,产品的生产数据,交通网络数据……

1085
来自专栏华章科技

干货 ▏如何构建用户画像

用户画像的核心工作是为用户打标签,打标签的重要目的之一是为了让人能够理解并且方便计算机处理,如:

1395
来自专栏数据科学与人工智能

【数据分析】用户画像,这么构!

从1991年Tim Berners-Lee发明了万维网(World Wide Web)开始,到20年后2011年,互联网真正走向了一个新的里程碑,进入了“大数据...

4559
来自专栏人工智能快报

麻省理工开发出低功耗语音识别技术

自动语音识别技术在十多年之前还难登大雅之堂,但现在它正成为人们和主要计算设备之间进行交互的主要手段。 据麻省理工学院报道,该院的研究人员已成功开发出了自动语音识...

2915
来自专栏数据派THU

19个超赞的数据科学和机器学习工具,编程小白必看!(附资料)

编程是数据科学的一个组成部分。事实上,理解编程逻辑、循环和函数的人更有可能成为成功的数据科学家。但那些在学校里从未学习过编程的人怎么办?

1213
来自专栏新智元

机器学习项目实践:30+ 必备数据库(预测模型、图像分类、文本分类)

【新智元导读】有了好的数据,机器学习项目也就成功了一半。希望这份资源清单有助于那些寻找机器学习项目实践的人。对于初学者来说,这绝对是一个金矿。确保你在业余时间选...

3786
来自专栏大数据文摘

资源 | 16个GitHub收藏和贡献率最高的深度学习框架

1476
来自专栏机器之心

业界 | 哪家GPU云提供商最合适?也许这份评测能给你答案

选自RARE Technologies 作者:Shiva Manne 机器之心编译 参与:Panda 做深度学习开发和实验既可以选择自己搭建硬件平台(参阅《深度...

4539
来自专栏人工智能头条

七种基于云的机器学习服务

2594
来自专栏大数据挖掘DT机器学习

数据库数据挖掘知识点总结(Microsoft 时序算法)

前言 本篇文章同样是继续微软系列挖掘算法总结,前几篇主要是基于状态离散值或连续值进行推测和预测,所用的算法主要是三种:Microsoft决策树分析算法、Micr...

40510

扫码关注云+社区

领取腾讯云代金券