當前位置:
首頁 > 科技 > 亚马逊机器学习总监Alex Smola:为什么你的机器学习代码运行速度慢

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

机器之心原创


作者:高静宜


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 为大家展示了此次演讲的三个主题。

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


第一部分:存储器


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


第二部分:计算


包括向量化、多核


第三部分:MxNet

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

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



第一部分:存储器

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


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

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


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

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



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

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


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



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


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

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



协同过滤带来的影响:

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



这里,有几个关键概念:


分层用户的评价


在 Cache 中存储出现频繁的 Datatable


避免 socket 之间的伪共享

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


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


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


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


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



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

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


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


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



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

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


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


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



第二部分:计算

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



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

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



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

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


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


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


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


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



然后,介绍了无锁多核心

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



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

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



逻辑回归

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



随机梯度下降

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



第三部分:MxNet

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



命令式和说明式编程


语言支持


后端和自动并行


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

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



节省&资源效率


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


速度


用机器和 GPU 进行线性延展;


在单个机器上也有高效率


简单性


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


关于代码的简洁以及效率

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



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

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



命令式编程的优点:


简单灵活;


利用语言固有的特征(loop、condition、debugger)


命令式编程的缺点:


难以优化

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



说明式编程的优点:


更多的优化机会;


跨不同的语言;


说明式编程的缺点:


不灵活;


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

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



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

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



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


不同图之间运行时间的转换有输入所决定;


对序列建模和图大小的重塑有帮助;


使用 Python 中的命令式代码,10 行额外的 Python 代码;

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



多种语言、多种工具包

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



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

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



编程语言:


Python 很好,但我更喜欢 R/Julia/Matlab 等;


我想要 Scala 与 Spark 管道一起工作;


我需要 C++接口在嵌入式系统上运行;


我喜欢在用户浏览器上运行 Javascript;


框架:


我使用 Torch 7 年了;


我所有的代码都在 Caffe 中;


我喜欢 Keras;


我用 TensorFlow 开始的深度学习;


之前我只使用过 Numpy,我该如何开始呢?


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

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


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



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

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



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

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



效率以及并行化

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



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

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



以下是进行自动并行:

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


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



数据并行:


读取数据分隔;


拉动参数;


计算梯度;


推进梯度;


更新参数;

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



分布式实验:


谷歌 Inception V3;


从 1-47 增加机器量;


如果使用 10 台以上机器,MXNet 要比 TensorFlow 快 2 倍。

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


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


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



AMI 和云形成模板

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



亚马逊机器图像(AMI)


深度学习框架


云形成模板

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



用于深度学习 AMI


面向数据科学家与开发者的工具;


建立深度学习系统需要时间与技巧

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


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



AWS CloudFormation 组件如下:

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


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



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


------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 机器之心 的精彩文章:

Emotech:如何打造一款类人脑情感互动机器人
IBM 创造出世界上首个人工相变神经元
这位神经科学家用自己做实验,首次量化了人类大脑
史上最经典的25部人工智能科幻作品
深度揭秘Elon Musk的火星殖民地图之二

TAG:机器之心 |

您可能感興趣

自动化机器学习第一步:使用Hyperopt自动选择超参数
10 种机器学习算法的要点(附 Python 和 R 代码)
零基础成为 Google 官方认证机器学习工程师,只需要2步?
机器学习(20)之Adaboost算法原理小结
?以色列机器人公司Roborteam进军中国市场, 要做改变生活的智能家庭“好帮手”
Emotech:如何打造一款类人脑情感互动机器人
机器学习(7)之感知机python实现
耐克引进 Grabit 制鞋机器人,做鞋帮速度是人类的 20 倍
深度学习NLP领军人Manning:未来5年神经机器翻译会有超越|新智元专访
瘆得慌!日本机器人Alter表情灵活酷似真人
机器人取代人?亚马逊投放Kiva后又新招了超12.5万名员工
MIT机器人实验室主任:机器人的12项前沿技术趋势
四大最酷NASA机器人 各个身怀神技闯太空
银行机器人「上岗」实用AI已深入金融业
机器学习PAI通过声音分辨男女(含语音特征提取相关数据和代码)
说污就污的机器直肠
在美国,350 万名收银员可能因 AI、机器人而面临失业…
在美国,350万名收银员可能因AI、机器人而面临失业
GCF:预计未来五年自杀式机器人或将灭绝人类