人工智能时代前沿技术社区

首页 > 人工智能 > 热点

平安科技高级算法工程师瞿晓阳:云端终端双场景的AI加速研究 | 2018FMI人工智能与大数据高峰论坛(深圳站)

10月28日FMI2018人工智能与大数据高峰论坛深圳场圆满落幕,平安科技高级算法工程师瞿晓阳就云端终端双场景的AI加速研究进行了精彩的分享。

作者: | 2018-11-07 09:42:46

4.瞿晓阳.png

1028日FMI2018人工智能与大数据高峰论坛深圳场圆满落幕,平安科技高级算法工程师瞿晓阳就云端终端双场景的AI加速研究进行了精彩的分享。

以下是瞿晓阳演讲全部内容,飞马网根据现场速记进行了不改变原意的编辑(有删减)

瞿晓阳大家好!我今天讲的是《云端终端双场景的AI加速研究》。

分享分为四大部分:一是背景;二是云端AI加速;三是终端;四是总结。

第一部分:背景

人工智能的发展历史可以用一句话总结:一个地点(达特茅斯会议)、两次寒流、三个名人(图灵、维纳、约翰·麦卡锡)。

人工智能有三大学派:符号主义、联结主义、控制论学派。

符号主义是字体向下或者字体向上的方法,什么都将有规则和推理,人工智能也是用推理实现的。

联结主义学派是当下很火的深度学习,是人工自动特征提取,是仿生学派。

控制论学派,控制论之父是维纳,这个学派主要以反馈为核心来实现人工智能。

今天讲深度学习,属于联结主义学派,也是仿生学派,是仿生人的大脑。人的大脑神经细胞有两个数据,抽象的是100亿个神经元;具体的是140亿神经元。神经元的数量从某种角度可以判断人的智商。神经连接就是把100亿神经元相互连接起来,它的长度可以绕到月球再绕回来。神经连接非常重要,生物学数据显示儿童2岁之前每两周建立上千级别的神经连接,现在达到百万级别,等于每秒有百万神经元的神经连接,现在很多早教内容涉及到这个问题。神经连接是每秒百万级别的神经连接的建立,它受三个因素的决定,一是基因,二是环境,三是自身。

2006年发表的三篇文章标志深度神经网络的正式开始。深度信念网络、深度自动编码等,在当时解决的是自动初始化问题,即如果神经网络初始化的效果很好,就不会进入局部最优,而是进入全局最优。生物学也显示人的大脑神经连接不是随机连接,而是根据基因建立,很多记忆对事物的认知能力是从祖辈和元人时代一点点传递下来。

我们大脑的神经连接都有冗余性(冗余性是指大脑的开发量不大)。我们的大脑大部分没有使用,存储的东西也不是存在一个局部,而是分布在很多地方。

机械思维与数据思维

另一个学派是机器主义学派,即逻辑学派。逻辑学派讲究的是任何东西都可以推理出来。我们知道,天王星是业余爱好者通过天文观测找到的,但是海王星是两个天才算出来的,一位是剑桥大学的大学生亚当斯,还有一位是法国的勒威耶。他们都是通过推理计算找出来,这就是传统的机械思维,用牛顿定律把它给算出来。

物理界有两个分界线,1920年,前面是牛顿,后面是量子和相对论。万有引力无法计算电子运算,因为电子云的运行速度很快,如果用麦克斯韦方程计算,速度太快,会以电磁波的形式辐射出去,跌落到原子核上。这时候要转变为数据思维。你用大数据利用概率知道它出现在什么位置。这是机械思维与数据思维的特点。

机器学习与深度学习

机器学习是人工特征的,深度学习是自动特征提取。机器学习需要垂直领域的专业知识,如果搞金融,一定要有自己垂直领域深厚的知识,因为你看到别人看不到的,再结合机器学习来做人工特征提取。人工和机器的理解方法是不一样的。机器学习是靠人工告诉它特征,深度学习是自己找特征,这是两者的区别,其实就是逻辑学派和它一部分的分支。

深度学习的发展

1982年Yann LeCun,就是现在Face book的首席,他当时的卷积神经网络在1998年到2012年,这中间已经隔了14年,这14年卷积神经网络没有起来的原因是被知识向量机吊打,知识向量机的效果,传统机器学习的效果比深度学习好很多,深度学习当时面临两个问题,一是数据过拟合问题,二是陷入局部最优。

2012年,Alex建立了卷积神经网络。

2014年的冠军VGG是牛津大学还是剑桥大学的人,NIN是新加坡国立大学那边的,还有GoogleNet,然后残差网络,一步步发展。

AI加速的意义

深度学习模型不断演进,使得精度越来越高、层次越来越深、模型越来越复杂,参数也越来越多。加速的目的从云端来讲是为了加快训练速度;移动端则是为了减少推断消耗算力和IO;此外,加速可以消除冗余,提高泛化能力。

第二部分:云端AI加速

属于并行计算,并行计算的方法归纳为7个:

向量化

并行里面,搞分布式计算的人不多。数据并行分为两种,数据并行和模型并行。以TensorFlow作为例子,它分为参数服务器和work,每个work机里面都会放部分数据,这样就实现数据并行。模型并行现在支持的比较少。并行面临的挑战有两个:一是机器的异质性;二是线性扩展问题,这是机器学习里面最大的问题,不是算力的问题,而是通信问题,节点越增多,通信量会随之增多,这种情况下会导致网络效率不好;三是模型越来越大,现在模型,如果想效果更好,有时候拿更大的模型真的效果会好很多,如果要部署到移动端,你的模型太大就是很大的问题,现在搞模型小型化的人很多,大家都想知道怎么把模型放到机器里面,放到机器人或者自动驾驶里面,实现离线部署,特别是政府部门,他们都讲究离线部署,他们不希望自己的数据是流出来的。

改变一致性模型

大家知道同步和异步如果有1024台机器,其中一台机器磨损太厉害,速度非常慢,用同步的话,1023台机器都等那台,大家都等它来了之后做规约计算,这就太慢。一致性有同步和异步。第三种方案是折中的,它的文章是ATC上发表的文章,他们自己做的也是用这套技术,其实很多公司把这个引进来了,它是做了折中方案,是同步和异步的折中。

流水线技术

卡内基梅隆他们公司提出的几个技术很厉害,是计算机的顶级学府,他们的牛人十分可观。这个技术是他们提出来的,流水线,他们发现梯度计算和全值更新的时候,根本没有必要等,传统的方法是计算,把梯度发出局再把更新的梯度拉回来,这时候把流水线变得更好,有的地方是计算还有把梯度推出去,还有更新的梯度拉回来,使用叠加方式,把计算和通信重叠,提高这种加速比速度会进一步加深。

大批量

机器学习、深度学习里面一个是梯度下降、一个是随机梯度下降,梯度下降是完备的数据,假设有一百万条数据,对一百万条数据全部计算一遍之后再进行梯度更新。随机梯度下降是另外一种极端,随机梯度下降是每个数据只要计算一遍更新梯度,这样是两个极端,右边的梯度下降很容易陷入局部最优,然后很难得到全局最优,离初始值,到最小值就不会再迭代,随机梯度往往可以找到更好的值。数据并行越多、数据样本越多,这时候就趋向梯度下降,这时候容易进局部最优。腾讯发表文章说4分钟训练好Image Net,他们4分钟用Image Net训练好VGG,6.6分钟训练好残差网络50,当时它的副标题这样写的,我开始看到这篇文章很惊讶,后来看到Face book写的文章,副标题是1小时之内把Image Net训练好,腾讯的副标题是4分钟训练好Image Net,这个地方都面临一个问题:大数据块太大。解决的方案和腾讯差不多,都是学习速度的控制,控制学习速度,另外可以延迟更新也可以解决。

量化技术

这个在移动端里面的模型小型化里面经常出现,训练里面用这个量化技术有风险,把浮点数变成整数,如果把它变得更小,会导致精度下降,你必须参劾其他的方法解决。腾讯当时提出的是混合物进度。包括微软CNTK提出1-bit ,CNTK用的人很少。当时CNTK有一篇文章提出1-bit量化,这时候精度损失我觉得太大了。

Auto ML

公众号天天制造焦虑、制造恐慌,天天都说上报工程师要下岗、什么要下岗。谷歌出ML,当时推出这个产品,里面包括两个东西,auto ML,包括自动调参,很多深度学习的工程师他们都做调参,把它自动化,靠算力解决,设一个搜索空间,设定搜索策略,再拿一个评估方法,全自动的跑,最后搜出最优的。自动调参有些许麻烦,用网格搜索或者随机搜索,消耗很大。很多公司里面都用强化学习解决这个问题。另外就是自动机器学习,前面讲自动调参,再就是构造神经网络,等效于再解放一批人,刚刚解放自动调参数,再解放自动构建神经网络的。解放就是把所有神经网络变成一个小模块,它里面的模块是怎么构造,完全靠自己的搜索学习来搞定,不需要人为构造新的神经网络。

硬件加速

冯诺依曼体系,GPU是通用型的,这个地方是定制化一点,要跟深度学习结合起来搞更好。非冯诺依曼体系,下面是类脑芯片,类脑芯片有一个概念芯片,可以把IBM的芯片到上千上万倍。

冯诺依曼体系和非冯诺依曼体系区别:冯诺依曼体系是计算机存储、网络分离,现在很多高校的学院都是分开的,各做各的;非冯诺依曼体系,类脑芯片,是把计算、存储、网络结合在一起,每个都是独立的。这样就呈现很多芯片。

量子计算机

费曼讲量子计算的时候讲了一个东西,和大家分享一下。他解释的非常好,他说要理解量子要了解一个实验——双缝干涉实验。发射量子的时候有一个特点,如果你想观测它的运动路径,它不会形成干涉条纹;如果不观察它的路径,它的干涉条纹就会出现,这个实验非常诡异、神奇,观测它,它就以意识形态存在,不观测它就不存在。

第三部分:终端AI加速

这里讲6个技术。

稀疏化方法

稀疏化方法大家应该经常看到。

这里分为三类:一是正则法。

二是裁减法(剪枝法)。

三是增长法。  

强化卷积

现在大家要看到一个趋势,慢慢都使用1×1的卷积核,以前是7×7,后面是两3×3代替一个5×5,用三个3×3代替一个7×7,现在很多时候都是用1×1的卷积核,效果很好。

自动构造轻量级神经网络

一个是AMC,韩松,你们做这个研究一定要跟他,韩松之前是斯坦福大学的博士,他后面是创业公司的创始人之一,也是搞AI芯片加速,在MIT当教授,还在搞这个研究,他的文章出来之后我马上会看。如果你想研究某个方向,一定要知道前沿的是哪几个公司在研究,一般很明显的。腾讯前段时间是出了Pocket flow,代码没有开源,里面都是集大成。

低秩分解

量化技术

简单来说,把浮点数变成整数,把整数变成更小的。这个地方本来这里要存16个浮点数,这时候只需要存3个,然后存一个索引就可以。

硬件加速

这个硬件加速和前面的序列硬件加速不一样,如果对硬件加速感兴趣可以关注两个顶级会议,ISCA和HPCA。    

第四部分:总结

训练、推断。

训练包括七个技术,推断包括6个技术。

这里面有几个技术是几个发展趋势:

一是线性加速,如果你搞分布式计算达到线性加速,这样训练速度像刚刚说的腾讯4分钟训练好,加速是一个趋势。

二是自动调参,解放一批调参师,搞成自动调参最好,写一个脚本,其实不麻烦,定义好搜索空间、搜索策略,再写搜索评估价值,搞自动调参。

三是自动构建神经网络,现在的网络都是人为提出来的,你用新的AI强化学习,搜索出更好的人工神经网络,也是大牛。这个是算力的进步,也是算法的进步,同时进步。

四是自动压缩,不要手动压缩,浪费时间,最好想办法搞成自动压缩,压缩的同时要注意,仅仅压缩还不够,最好能把它实现加速。

    

谢谢大家!