亚马逊机器学习总监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 为大家展示了此次演讲的三个主题。
第一部分:存储器
包括快速缓冲存储器、随机存取存储器、固态硬盘、硬盘、网络
第二部分:计算
包括向量化、多核
第三部分: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 组件如下:
本文为机器之心原创,转载请联系本公众号获得授权。
------------------------------------------------


※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:预计未来五年自杀式机器人或将灭绝人类