您的位置:首页 > 运维架构 > 网站架构

【深度学习】老师木讲架构:深度学习平台技术演进

2018-01-03 00:00 991 查看
新智元推荐  来源:OneFlow
【新智元导读】近日,袁进辉(老师木)代表OneFlow团队在全球互联网架构大会上海站做了《深度学习平台技术演进》的报告。报告包括深度学习的计算力问题、硬件基础、软件挑战、传统大数据架构、深度学习软件平台的技术演化等。

2017年12月22日,袁进辉(老师木)代表OneFlow团队在全球互联网架构大会上海站做了《深度学习平台技术演进》的报告,小编对报告内容作简要梳理注解,以飨读者。
此次报告的主要观点为:(1)计算力是神经网络/深度学习复兴的最大推动力之一;(2)面对深度学习的计算力挑战,软件至少和硬件一样地关键,单靠硬件无法提供易用性和扩展性;(3)鉴于深度学习上层业务和底层硬件的独特性,传统大数据平台里的某些技术未必再对深度学习平台适用;(4)深度学习软件平台技术在快速演进中,一部分早期被采用的技术正在被新方法替代;(5)仍有很多重要问题未被现有开源深度学习平台解决;(6)深度学习软件尚处在发展早期,百花齐放,百家争鸣,但必将收敛到一种业界公认的最佳实践(best practice)。





注:深度学习在近些年带来的突破无须赘言,从图像 (ImageNet) ,语音,围棋人机大战等方面的突破都源于深度学习技术。


注:机器学习可以视为一种从训练数据中自动推导出程序的方法。以最常见的有监督学习(supervised learning)为例,可简单理解为,通过优化方法自动在高维空间找到分类超平面。



注:现实中遇到的绝大部分机器学习问题,基于原始特征(Input Space)无法找到分类超平面把训练数据里的正例和负例恰好分开。在机器学习领域,有一些通用的手段来处理线性不可分的问题,譬如可以在Input Space 寻求非线性分界面,而不再寻求线性分界面;也可以通过对特征做预处理,通过非线性映射的手段把训练数据从Input Space 映射到一个所谓的Feature Space,在原始Input Space无法线性可分的样例在Feature Space有可能线性可分。深度学习就是这种思想的一个典型应用。


注:深度学习从计算上体现为一连串的变换(transformation),常见的变换都可以表示成矩阵计算。以上图为例,输入层有6个神经元,输出层共有4个神经元,每个输出神经元都和输入层的每个神经元有一条边相连,每条边有一个对应的权重(红色神经元的输入边权重都用红色表示)。输入数据是4个样例,每个样例是一个6维的列向量,列向量的每一维对应输入层的一个神经元。输入数据经过这层神经元的作用,仍是4个样例,每个样例变成了4维的列向量。这样一层神经网络可以用右图的矩阵乘法来表示。像这种稠密矩阵运算意味着并行计算的潜力。


注:以大家耳熟能详的卷积神经网络CNN 为例,可以感觉一下目前训练深度学习模型需要多少计算力。这张表列出了常见CNN模型处理一张图片需要的内存容量和浮点计算次数,譬如VGG-16网络处理一张图片就需要16Gflops。值得注意的是,基于ImageNet数据集训练CNN,数据集一共大约120万张图片,训练算法需要对这个数据集扫描100遍(epoch),这意味着10^18次浮点计算,即1exaFlops。简单演算一下可发现,基于一个主频为2.0GHz的CPU core来训练这样的模型需要好几年的时间。下面我们看一下使用几种典型硬件来训练CNN模型需要多少时间。



注:Intel 的服务器级多核(multi core)处理器一般有20个主频为2~3GHz的core,每颗CPU 做稠密矩阵计算的吞吐率约为400Gflops, 以此推算,理想情况下,在ImageNet 训练一个CNN模型需要数天时间(考虑到访存瓶颈,cache miss等实际情况,可能需要数月时间)。


注:这是Nvidia出品的最新款GPU, 它的吞吐率比CPU搞一到两个数量级,可以把CNN训练时间从几个月缩短到几天。GPU 和 CPU 一样都是通用处理器,只是采用了众核架构(many core),一颗芯片上集成了数千个计算核心(core),尽管每个core的主频一般要比CPU core的主频低,但GPU的核心数和访存带宽都远远高于CPU,这也是GPU成为深度学习训练硬件不二之选的原因。


注:这是Google 研发的TPU, 按TPU 的吞吐率,可以在几个小时完成一个CNN模型的训练。TPU 与 GPU 的区别在于它是专用硬件,免去了通用处理器里取指,指令译码等控制电路的复杂性,可以在同样的面积内集成更多深度学习训练需要的计算器件。除了Google 这种大公司,目前国内外也有不少初创公司在研发深度学习专用的芯片。


注:当前,无论是通用处理器GPU还是专用芯片TPU 相对于CPU 都强大了许多倍,但现实应用对计算力的渴求是无止境的,从业者需要以更快的速度,以更大规模的模型处理更大规模的数据,这单靠一个硬件设备无法满足。硬件的发展要受限于制造工艺(芯片面积,功耗,时钟信号传播范围)的限制,不可能无限制的提高一颗芯片的处理能力。因此,人们常常通过高速互联技术把多个高通量的设备连接在一起,协同完成大规模任务。左图显示了一种常见的GPU 集群架构,同一个节点(服务器)内部的GPU 通过NVLink或者PCIe 通信,多个节点通过高速以太网或者Infiniband 互联。右图显示了Google 内部 TPU Cloud的硬件部署,每个服务器管理若干个TPU,多个服务器通过高速互联技术连成大规模集群。如何使得多个互联的设备在一起高效工作,这给深度学习软件开发带来了严峻挑战。


注:这张图揭示了深度学习软件平台在整个人工智能技术栈中的角色:通过易用性降低算法研发门槛,让数据科学家,算法研究人员不需要了解底层细节就可以描述和实现深度学习业务需求;通过扩展性更快的解决更大规模问题,释放硬件潜能。如果说人工智能技术是各行各业提高效率的赋能者 (enabler),深度学习软件平台就是人工智能行业的赋能者(enabler)。深度学习软件平台的关键作用就像互联网时代的浏览器,移动互联网时代的Android OS,起着承上启下的作用,向上看是作为各种应用的入口,向下看起着定义硬件功能和角色的作用。正是因为这种战略地位,成为行业巨头的兵家必争之地,Google, Microsoft, Amazon, Facebook, Baidu 都开发了自己的深度学习平台,并且都开源了,冲着建造行业生态的目标在努力。值得注意的是,深度学习软件平台具有极高的技术门槛,鲜有初创公司进入这个领域。


注:深度学习软件平台的目标是:一方面是要通过抽象以最简优雅的方式解决上层开发者灵活多变的需求,另一方面则是释放硬件潜能,提高设备的利用率。这两个目标都因为深度学习独有的特点而变得非常挑战,主要要现在:单个硬件设备速度越快,软件要高效协同多个设备就更加挑战。首先,自上而下看,深度学习模型通常采用所谓的随机梯度下降(SGD)算法,这与传统基于批量(Batch)训练机器学习算法显著不同。在随机梯度下降算法中,每处理一小片数据(即所谓mini-batch)就需要更新一次模型,在分布式环境下就意味着要在多个机器或多个设备间通过通信同步模型,因此不仅是计算密集型,而且是通信密集型任务。其次,自底向上看,深度学习训练主要使用异构环境,不仅有CPU 参与,还有所谓的协处理器 GPU 参与,密集计算都是卸载(offload)到协处理器上完成的,协处理器的吞吐率是CPU 的十倍以上,意味着同样大小的任务在协处理器上只需要1/10的时间就完成了。不过,虽然数据处理速度提升了,但数据在设备之间搬运的速度并没有相对于传统的CPU集群有质的提升,譬如机器内部通信通过PCIe完成,机器之间即使采用最快的Infiniband互联,其带宽也要比GPU cores访问片上内存(device memory)慢上一到两个数量级。一个小批次的数据在GPU 设备上处理的时间可能是数十毫秒,但这批数据从设备外部拷贝到设备上也要花上差不多量级的时间,这就意味着数据的搬运(data movement)在分布式深度学习平台中必须被当作一等公民(first class citizen)来对待。最后,GPU 高吞吐率的计算需要把计算所依赖的数据(输入数据或模型)首先搬运到显存(device memory),而显存容量一般要远小于主存(host memory),因此使用GPU 集群训练深度学习模型在处理大规模模型(譬如一个模型的容量或计算产生的中间数据超过显存容量)时,如何最好利用有限资源也带来了新的问题。
下面我们剖析一下,为什么传统大数据技术架构在深度学习平台中不再适用。



注:诸多经典的大数据处理系统都采用了这种数据流(Data flow)引擎,譬如 Hadoop, Spark。在数据流系统里,一个作业(Job)被分解成一系列互相依赖的任务(Task),这种依赖关系通常用有向无环图(Directed acyclic graph, DAG)来描述,图中每个节点表示一个任务,节点之间的边表示一个数据依赖关系(生产者和消费者关系)。在一般的大数据系统中,有一个中心调度器(Centralized scheduler)负责监控整个作业的进度以及整个系统的资源使用状况,首先选取DAG中没有输入数据依赖或者输入数据已经就绪的节点并分配给一个资源足够的工作机(Worker),当一个Worker 执行完一个任务时,会通知Scheduler ,Scheduler 会从DAG 中删除已成功执行的节点,然后再选取一个全部输入数据已经就绪的节点分配给Worker去执行。当前主流的深度学习系统也借鉴了这种数据流执行引擎的思想。页面左下角红色五角星的个数表示目前主流框架对这项特性的支持程度,全红五星角表示所有框架已支持,全绿五角星表示目前主流框架都还不支持。


注:非深度学习场景的数据流执行引擎都是基于中心调度器的,中心调度器实现难度小,也比较容易支持容错等高级特性。但在深度学习系统中,中心调度器引发的开销已经不可忽略,不可接受。分布式深度学习平台,或者显式或者隐式的,都采用了去中心化调度机制。中心调度器面临的困难包括:1,Scheduler 和 Worker 之间存在通信开销;2,深度学习Job分解后的Task 粒度非常小,无论是数据传输还是GPU上的计算,通常是数十毫秒级别,设想数十台机器或数百块GPU设备同时工作,意味着每1ms时间,整个系统就发生一个事件(Task 开始或结束),就需要调度器做一个决策,而在调度器做决策的过程时,它看到的局面可能已经发生了变化。在去中心化调度中,每台机器,每个设备上Task 都不需要了解全局信息,而只需要和自己有关的局部上下文Task通信,没有多余的通信开销,状态信息能第一时间更新,每个Task能及时响应状态的变化。


注:所谓放置(Placement)是指某个Task在哪个节点或设备(Device)上执行。在传统的大数据系统中,一般使用动态放置(Dynamic Placement)的策略,也就是某一个任务并不绑定在一个特定的机器或设备上执行,到底在哪个机器或设备上执行,要看调度器在派遣这个Task时综合考虑负载均衡(Load balance) 和局部性(Locality)等方面的因素选择一个最合适的机器或设备去执行这个Task。但在深度学习系统中,某一个Task 到底在哪个机器或设备上执行都是在运行之前手工或自动指定好的,即所谓的静态放置(Static placement),这一般出于两方面的考虑:1,深度学习是迭代式计算,一个Task要反复执行很多次,如果执行该Task的设备不固定,那么每换一次设备就需要在启动Task前做一些初始化(如资源分配)工作,Task结束时要做一些清理工作,上文提到深度学习中Task本身粒度已经小到数十毫秒级,同时在异构设备上管理资源的开销(譬如申请和释放设备内存)都比在CPU 上高的多,静态放置能显著减少这些资源管理的开销;2,深度学习同时具备计算密集和通信密集型的特点,使用流水线技术重叠通信和计算对系统扩展性非常关键,而要使用流水线进行数据的预传(Prefetch 或 Presend)就需要事先知道每个生产者和消费者Task 所处的位置,只有静态放置才能支持流水线机制。


注:与放置(Placement)密切相关的一个问题是资源(特别是内存)管理策略也可以是动态或静态,显然动态放置需要动态内存管理,按需分配和释放,但静态放置可以使用动态内存管理也可以是静态内存管理。现有开源深度学习平台既有选择动态内存管理的(Tensorflow),也有选择静态内存管理的(Caffe等)。静态内存管理有一系列的优点:1,降低资源管理开销,上文提到过在GPU上申请和释放内存的开销比较大,另外如果要支持RDMA或者主存和显存的异步内存拷贝,需要使用锁页内存(Pinned Memory),如果每次需要数据传输时都临时调用锁页操作开销也比较显著;2,使用静态内存管理,系统稳定性比较高,很多风险(譬如死锁,Out of Memory)都可以在运行前避免,而采用动态内存管理的系统为了避免这些风险在系统设计上增加很多复杂性。当然,静态内存管理有可能(不一定)降低内存资源的利用率。


注:刚才我们看到深度学习系统与传统大数据系统的一些显著区别:倾向于使用静态策略。这在熟悉传统大数据系统技术的人看来无异于“开历史倒车”:静态策略无异于牺牲了一系列的灵活性。深度学习平台还有一项“倒行逆施”的特点是:通常运行在专用集群上,而且每个作业(Job)会独占分配给它的硬件资源。这与传统大数据架构提倡“虚拟化”,“共享资源”来提高资源利用率很不一样。其实深度学习这些特点也是为了提高资源利用率,基于上文分析的种种原因,在训练深度学习模型时共享资源反而会使得系统稳定性变差,提高资源利用率也非常难。深度学习系统也倾向于使用最简单的容错机制:系统快照(Snapshot or Checkpoint),fail fast, warm start,主要原因是:1,深度学习平台使用的服务器通常成本比较高,也比较稳定,集群规模也较小,数十台服务器的场景就算比较大了;2,复杂的容错机制会增加系统复杂性,降低系统运行效率,系统设计者宁愿让系统在正常状态下跑的更快,即使出错了,能从最近一次快照热启动即可。
至此,我们了解到,深度学习系统和传统大数据系统是很不一样的,下面我们将看到深度学习平台技术尚处在非常早期的阶段,即使在最近两三年,技术选项也在快速演变。


注:数据并行是指把数据分成多份,每个设备处理一份,这样每个设备只需要处理整体数据的一小部分即可,系统运行时间从一个设备处理所有数据需要的时间降低到一个设备处理一小部分数据需要的时间,从而得到加速,这是大数据场景最常见的并行方式。以上图为例,首先把4个训练样例等分成2份,分别分配给两个设备去处理,两个设备上持有同一份模型的两个拷贝。训练深度学习模型时,一个设备上的前向和后向计算可以独立开展,但每个模型上获得模型的更新梯度后需要在设备间同步,聚合成完整数据集上的梯度之后再做模型更新。数据并行特别适合卷积神经网络这种场景,卷积神经网络的模型由很多小的卷积核构成,模型体积小,从而设备间同步模型梯度时通信量较小。模型很大的场景就不适合用数据并行了。当前,所有框架都能很好的支持这种并行模式。



注:数据并行等并行模式经常依赖于一些集合通信原语,譬如broadcast, scatter, reduce, gather 等。如何高效支持这些基本原语,在传统超算领域(MPI)已经研究的很透彻了。以数据并行模式下模型梯度同步为例,就可以通过reduce和broadcast两个原语来支持。


注:一般来说,集合通信原语扮演了一种屏障(barrier)的角色,以reduce操作为例,要实现4个节点上数值的累加,就需要等待4个节点全部完成,reduce操作才能开始,这种等待所有生产者就绪,消费者才能开始计算的模式被称为BSP (Bulk synchronizaton protocol),现在这种模式可能受所谓 straggler 的影响,即最慢的那一个生产者的影响。为了解决straggler的问题,学者们发现在传统分布式机器学习中可以对同步条件放松,不一定要严格同步,只要分布式计算节点在一定程度上保持同步就可以在更短的时间内得到差不多的收敛结果,因此发明了SSP 或者ASP的模式,在深度学习之前的场景多有应用。但是近些年,分布式深度学习平台默认都是用BSP模式,这主要是因为:1,深度学习集群规模通常较小,机器质量比较均衡,straggler 现像没有那么严重;2,实践上发现异步SGD收敛效果比同步SGD 差不少,人们宁愿用更长的时间取得更好的效果。


注:多年以来,参数服务器(Parameter server)被多个分布式机器学习系统采用,譬如Google 上一代分布式机器学习系统DistBelief, 甚至在若干知名深度学习平台中被采用,譬如PaddlePaddle, MxNet等。本质上,在数据并行场景,参数服务器是用来实现Allreduce语义的一种途径。我们能看到一种趋势,参数服务器在某些场景有可能不是最合适的选择:1,参数服务器比MPI Allreduce好在支持异步梯度更新,但如上文所述,深度学习场景同步SGD更受青睐;2,参数服务器本质是client server 架构,深度学习的网络结构可能远比client server的二分图结构复杂;3,参数服务器只是实现Allreduce的一种技术,即星状拓扑,MPI 多年以来的研究结果表明,该用什么拓扑(星状,树状,环状)来实现集合通信,取决于集群内的节点数,数据传输量,通信带宽等因素。


注:在最近一年,已经可以看到一些分布式深度学习平台摒弃了参数服务器,反而去使用MPI 的Allreduce实现,譬如Uber Horovod 通过把Tensorflow里的参数服务器机制更换成 Allreduce在数据并行场景得到一倍的效率提升,Caffe2 也通过自研的gloo通信库实现了定制的Allreduce支持,百度的DeepSpeech系统采用了环状Allreduce支持,Nvidia 提供的集合通信库NCCL 也支持多种集合通信原语。


注:除了数据并行,还有些场景模型太大以至于使用数据并行通信开销太大,或者模型超过GPU显存容量,这种情况必须对模型进行切分,每个设备上只完成一部分模型对应的计算,这称为模型并行。Alex Krizhevsky 曾提出根据并行时传输数据还是传输模型的通信量大小来自动选择数据并行或模型并行,感兴趣的读者可以去读一读 (https://arxiv.org/abs/1404.5997)。如上图所示,模型并行的一种做法时,让一个GPU 负责上面红色的两个输出神经元的计算,让另一个GPU 负责下面绿色的两个输出神经元的计算,相当于对矩阵进行分片,每个设备只完成一部分计算。可以看出,模型并行时,不需要在设备间同步模型,但需要在设备间同步数据。当前绝大部分开源框架不支持模型并行,或者支持比较弱,需要非常微妙的调整才能高效执行。模型并行是业界公认的难题。


注:除了模型并行本身比较复杂之外,模型并行模块与其它并行模式的协同也非常复杂,需要小心的管理上下游之间的数据传输(路由)。本页以相邻的两层神经网络为例,第一个层次使用数据并行,第二个层次使用模型并行,那么在前向计算时,就需要把数据并行部分的结果经过 Copy, Concat 两层路由汇总到模型并行的两个设备上去,如果前后两层在不同的机器上执行,那么还需要通过跨机通信。如果这些复杂的数据路由需要用户手工参与管理,那么一方面过于复杂(想象一下数据并行和模型并行的各种组合模式),另一方面极易出错。理想的情况,这些复杂性应该由深度学习平台来处理,但非常可惜,现有已开源的深度学习平台都不支持这一功能。


注:本页描述了前后两层分别是数据并行和模型并行的场景,后向计算时的数据路由方法。限于篇幅,这里就不再列举从数据并行到数据并行,从模型并行到数据并行,从模型并行到模型并行的数据路由方法了。



注:这是来自贾扬清的一个例子,探讨了通过流水线来提高训练效率的必要性。不使用流水线的做法较容易理解:L1, L2, L3 表示依次三层神经网络的前向计算,前向计算完成后,自后向前开始后向计算,L3b, L2b, L1b,后向计算完成后,依次通过Allreduce来实现三个层次上权重梯度的同步,R3, R2, R1,在Reduce完成后,再依次完成三个层次的权重更新 (Update), U3, U2, U1。不难发现,L3b完成后就可以启动R3, U3了,如果通过流水线把可以同时做的事情并行执行就会减小总体的执行时间。基于这个洞见,目前Caffe2, MxNet, Petuum Poseidon 都实现了这种优化,带来了显著的效率提升。但需要指出的是,除此之外,深度学习模型训练过程中还有大量的可以通过流水线来提高并行度的机会,但现有系统都需要人工去发现和手工控制流水线,如果没有显式使用这种优化,系统就不会自动支持流水线。


注:更多的利用流水线的机会出现在前后多个阶段之间的重叠执行上,以上图的神经网络为例,通过3块GPU的协作完成训练,如果没有使用流水线,硬件利用率会非常低:当GPU1在执行运算时,GPU2和GPU3因为没有输入数据只能停顿等待数据到达,当GPU1完成计算把数据从GPU1向GPU2搬运时,GPU1和GPU2,GPU3都处于停顿状态,当数据搬运完之后,GPU2才能开始计算。一般来说,一个良好的流水线机制应该能把磁盘IO, PCIe传输,网络传输,GPU计算都能同时执行,但目前已有开源框架都没有这种功能(或者非常微弱的支持)。

总结:一个理想的深度学习平台在易用性和扩展性方面都达到极致。我们即将发布的OneFlow系统冲着这个目标做了一系列独特的创新,敬请关注。


注:深度学习软件平台处在发展的早期阶段,在这个领域会出现数据库领域那么成功的软件产品吗? 我们拭目以待。
北京一流科技有限公司欢迎志同道合的同仁加入或合作,为最理想的深度学习平台早日到来而奋斗。
祝大家新年快乐!

这是份值得收藏的2017年AI与深度学习要点大全

量子位 
若朴 夏乙 编译自 WILDML
量子位 出品 | 公众号 QbitAI
2017已经正式离我们远去。过去的一年里,有很多值得梳理记录的内容。博客WILDML的作者、曾在Google Brain做了一年Resident的Denny Britz,就把他眼中的2017年AI和深度学习的大事,进行了一番梳理汇总。量子位进行概要摘录如下,详情可前往原文查看,地址:http://www.wildml.com/2017/12/ai-and-deep-learning-in-2017-a-year-in-review/

强化学习称霸人类游戏

如果说2016年AlphaGo击败李世乭之后,大家对它的棋坛地位还有些许怀疑的话,2017年击败柯洁,让它成了毫无疑问的围棋霸主。作为一个强化学习Agent,它的第一个版本使用了来自人类专家的训练数据,然后通过自我对局和蒙特卡洛树搜索的改进来进化。不久之后,AlphaGo Zero更进一步,使用了之前一篇论文Thinking Fast and Slow with Deep Learning and Tree Search提出的技术,从零开始下围棋,在训练中没有用到人类对局的数据。

临近年底,我们又看到了新一代的AlphaGo:AlphaZero,在围棋之后,用同样的技术搞定了国际象棋和日本将棋。这些算法在对局中所用的策略,有时候甚至让经验丰富的棋手都觉得惊讶,他们也会向AlphaGo学习,改变着自己的对局风格。为了让学习更容易,DeepMind还发布了AlphaGo Teach工具。

下面是相关论文,认真的同学们可以收藏回顾啦:AlphaGohttps://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdfAlphaGo Zerohttps://www.nature.com/articles/nature24270.epdfAlphaZerohttps://arxiv.org/abs/1712.01815Thinking Fast and Slow with Deep Learning and Tree Searchhttps://arxiv.org/abs/1705.08439

AI今年取得重大进展的游戏不止围棋。CMU研究人员的Libratus(冷扑大师)在20天的一对一无限注德州扑克比赛中,击败了人类顶级扑克玩家。再早些时候,查尔斯大学、捷克技术大学和加拿大阿尔伯塔大学开发的DeepStack,首先击败了专业德扑玩家。有一点值得注意,这两个程序玩的都是一对一扑克,也就是两名玩家之间的对局,这比多人游戏更容易。2018年,我们很可能看到算法在多玩家扑克上取得一些进步。Libratus论文:http://science.sciencemag.org/content/early/2017/12/15/science.aao1733.full用强化学习玩人类游戏的下一个领域,似乎是更复杂的多人游戏,除了多人扑克之外,还有星际争霸、DotA等等。DeepMind正在积极研究星际争霸2,发布了相关的研究环境。星际争霸2研究环境:https://deepmind.com/blog/deepmind-and-blizzard-open-starcraft-ii-ai-research-environment/而OpenAI在DotA中单比赛中取得了初步的成功,玩转5v5游戏,是他们的下一步目标。

进化算法回归

对于监督学习来说,基于梯度的反向传播算法已经非常好,而且这一点可能短期内不会有什么改变。然而,在强化学习中,进化策略(Evolution Strategies, ES)似乎正在东山再起。因为强化学习的数据通常不是lid(独立同分布)的,错误信号更加稀疏,而且需要探索,不依赖梯度的算法表现很好。另外,进化算法可以线性扩展到数千台机器,实现非常快的平行训练。它们不需要昂贵的GPU,但可以在成百上千便宜的CPU机器上进行训练。2017年早些时候,OpenAI的研究人员证明了进化策略实现的性能,可以与Deep Q-Learning等标准强化学习算法相媲美。相关论文:https://arxiv.org/abs/1703.03864年底,Uber内部一个团队又连发5篇论文,来展示遗传算法和新颖性搜索的潜力。他们使用非常简单的遗传算法,没有任何梯度信息,学会了玩各种雅达利游戏。他们的进化算法在Frostbite游戏中达到了10500分,而DQN、AC3、ES等算法在同样的游戏中得分都不到1000。

WaveNets,CNNs以及注意力机制


谷歌的Tacotron 2文本转语音系统效果令人印象深刻。这个系统基于WaveNet,也是一种自动回归模型,也被部署于Google Assistant之中,并在过去一年得到快速提升。远离昂贵且训练漫长的回归架构是一个更大的趋势。在论文Attention is All you Need里,研究人员完全摆脱了循环和卷积,使用一个更复杂的注意力机制,只用了很小的训练成本,就达到了目前最先进的结果。论文地址:https://arxiv.org/abs/1706.03762

深度学习框架这一年

如果非要用一句话总结2017,那只能说是框架之年。Facebook搞出了PyTorch,这个框架得到了搞自然语言处理的研究人员大爱。TensorFlow在2017年继续领跑,目前已经发布到1.4.1版本。除了主框架之外,还发布了多个伴随库。TensorFlow团队还发布了一个全新的eager execution模式,类似PyTorch的动态计算图。此外,苹果发布了CoreML移动机器学习库;

Uber的一个团队发布了Pyro,一个深度概率编程语言;

亚马逊宣布在MXNet上提供更高级别的API Gluon;

Uber发布了内部米开朗基罗机器学习基础设施平台的详情;

由于框架已经太多,Facebook和微软宣布推出ONNX开放格式,以便跨框架共享深度学习模型。

除了通用的深度学习框架外,我们还看到大量的强化学习框架发布:OpenAI Roboschool,用于机器人仿真 https://blog.openai.com/roboschool/
OpenAI Baselines,一套强化学习算法的高质量实现 https://github.com/openai/baselines
Tensorflow Agents,用TensorFlow来训练RL智能体 https://github.com/tensorflow/agents
Unity ML Agents,研究人员可用Unity Editor来创建游戏,并展开强化训练 https://github.com/Unity-Technologies/ml-agents
Nervana Coach,用最先进的强化学习算法进行试验 http://coach.nervanasys.com/
Facebook ELF,游戏研究平台 https://code.facebook.com/posts/132985767285406/introducing-elf-an-extensive-lightweight-and-flexible-platform-for-game-research/
DeepMind Pycolab,定制化的游戏引擎 https://github.com/deepmind/pycolab
Geek.ai MAgent,多智能体强化学习平台 https://github.com/geek-ai/MAgent
为了让深度学习更易普及,还有一些面向web的框架,例如谷歌的deeplearn.js和MIL WebDNN执行框架。2017,还有一个流行框架跟我们告别了。那就是Theano。

学习资源

随着深度学习和强化学习越来越流行,2017年有越来越多的课程、训练营等活动举行并分享到网上。以下是我最爱的一些。Deep RL Bootcamp,由OpenAI和UC Berkeley联合主办,主要讲授关于强化学习的基础知识和最新研究成果
地址:https://sites.google.com/view/deep-rl-bootcamp/lectures?authuser=0

斯坦福视觉识别卷积神经网络课程2017春季版 http://cs231n.stanford.edu/
斯坦福自然语言处理与深度学习课程2017冬季版 http://web.stanford.edu/class/cs224n/
斯坦福的深度学习理论课程 https://stats385.github.io/
Coursera上最新的深度学习课程 https://www.coursera.org/specializations/deep-learning
蒙特利尔深度学习和强化学习暑期学校 http://videolectures.net/deeplearning2017_montreal/
UC Berkeley的深度强化学习课程2017秋季版 http://rll.berkeley.edu/deeprlcourse/
TensorFlow开发者大会上关于深度学习和TensorFlow API相关的内容 https://www.youtube.com/playlist?list=PLOU2XLYxmsIKGc_NBoIhTn2Qhraji53cv
几大学术会议,延续了在网上发布会议内容的新传统。如果你想赶上最尖端的研究,可以查看这些顶级会议的录像资料。NIPS 2017: https://nips.cc/Conferences/2017/Videos
ICLR 2017: https://www.facebook.com/pg/iclr.cc/videos/
EMNLP 2017: https://ku.cloud.panopto.eu/Panopto/Pages/Sessions/List.aspx
研究人员也开始在arXiv上发布低门槛的教程和综述论文。以下是过去一年我的最爱。深度强化学习:概述
Deep Reinforcement Learning: An Overview https://arxiv.org/abs/1701.07274
给工程师的机器学习简介
A Brief Introduction to Machine Learning for Engineers https://arxiv.org/abs/1709.02840
神经机器翻译
Neural Machine Translation https://arxiv.org/abs/1709.07809
教程:神经机器翻译和序列到序列模型
Neural Machine Translation and Sequence-to-sequence Models: A Tutorial https://arxiv.org/abs/1703.01619

应用:AI和医学

2017年,有不少人宣称用深度学习解决了医疗问题,而且还击败了人类专家。这其中有真正的突破,也有一些炒作。对这方面感兴趣的话,推荐关注Luke Oakden-Rayner的人类医生终结系列博客:https://lukeoakdenrayner.wordpress.com/2017/04/20/the-end-of-human-doctors-introduction/这里简要介绍一些发展。其中最重要的事件包括:斯坦福的一个团队公布了用深度学习识别皮肤癌的算法细节。相关研究:https://cs.stanford.edu/people/esteva/nature/另一个斯坦福的团队则开发了一个模型,能比人类专家更好的发现心律失常。相关研究:https://stanfordmlgroup.github.io/projects/ecg/

当然也有一些风波。例如DeepMind与NHS之间的问题;NIH发布了一个不适合训练AI的胸部X光片数据集等等。

应用:艺术和GAN

应用于图像、音乐、绘图和视频领域的生成模型,今年也越来越受到关注。NIPS 2017还首次推出了面向创意与设计的机器学习研讨会。

最流行的应用之一是谷歌的QuickDraw,使用神经网络来识别你的涂鸦。基于已经发布的数据集,你甚至可以让机器帮你画完草稿。一起去玩一下:https://quickdraw.withgoogle.com/GAN今年取得了不少重大进展。例如CycleGAN、DiscoGAN、StarGAN等新模型在生成人脸方面令人印象深刻。GAN通常难以生成逼真的高分辨率图像,但pix2pixHD改变了这种现状。相关地址:CycleGANhttps://arxiv.org/abs/1703.10593DiscoGANhttps://github.com/carpedm20/DiscoGAN-pytorchStarGANhttps://github.com/yunjey/StarGAN

应用:无人车

无人车领域的大玩家包括Uber、Lyft、Waymo和Tesla。Uber这一年都麻烦不断,但是这家公司一直没有停下在无人车方面的脚步。Waymo在亚利桑那的凤凰城进行了一系列无人车实验,还公布了测试和模拟技术的细节。Lyft正在建立自己的无人车硬件和软件体系。特斯拉的Autopilot没有太多更新。

当然还有一个“新的”入局者,库克证实苹果公司也在研究自动驾驶。

超酷的研究和应用

今年有很多好玩的项目和展示,这里不可能提及所有:用深度学习去除背景

用深度学习创造动漫角色
一起来试试吧~ http://make.girls.moe/#/
用神经网络给黑白照片着色

神经网络玩《马里奥赛车》

实时《马里奥赛车 64》AI https://github.com/rameshvarun/NeuralKart
使用深度学习鉴别赝品

随手画猫

在研究层面,无监督情绪神经元 - 一个可以学习情绪的系统,尽管只被亚马逊训练用于预测评论的下一个字符。

学会沟通 - 智能体“开发”了自己的语言。

习得索引结构 - 使用神经网络优化高速缓存B-Tree。 https://arxiv.org/abs/1712.01208
Attention is All You Need - Google推出的翻译架构Transformer完全舍弃了RNN/CNN结构。 https://arxiv.org/pdf/1706.03762.pdf
Mask R-CNN

Deep Image Prior,图像去噪、超分辨率和修补。

数据集

神经网络需要大量的数据,因此开放数据集是对行业的重要贡献。以下是今年几个新推出的数据集代表。Youtube Bounding Boxes https://research.google.com/youtube-bb
Google QuickDraw Data https://quickdraw.withgoogle.com/data
DeepMind Open Source Datasets https://deepmind.com/research/open-source/open-source-datasets
Google Speech Commands Dataset https://research.googleblog.com/2017/08/launching-speech-commands-dataset.html
Atomic Visual Actions https://research.google.com/ava/
Several updates to the Open Images data set https://github.com/openimages/dataset
Nsynth dataset of annotated musical notes https://magenta.tensorflow.org/datasets/nsynth
Quora Question Pairs https://data.quora.com/First-Quora-Dataset-Release-Question-Pairs

深度学习,重现性和炼金术

过去一年中,研究人员对学术论文结果的可复现性提出了担忧。深度学习模型通常依赖于大量的超参数,必须对其进行优化才能获得足够好的结果。这种优化代价高昂,可能只有Google和Facebook才能负担得起。另外,研究人员并不总是同步公开代码,论文中有时还会漏掉重要的细节,或者使用特殊的评估方法……这些因素都让可复现性成为一个大问题。在论文Are GANs Created Equal? A Large-Scale Study中,使用昂贵的超参数搜索调整GAN,可以击败更为复杂的方法。论文地址:https://arxiv.org/abs/1711.10337同样,在论文On the State of the Art of Evaluation in Neural Language Models中,研究人员表明,简单的LSTM架构在正确调整后,表现就能比最近的多数模型都好。论文地址:https://arxiv.org/abs/1707.05589在NIPS 2017大会上,阿里·拉希米称现在的深度学习就像“炼金术”,呼吁更为严谨的学术管理。不过Yann LeCun随即进行了实名反击。

竞争,炒作和失败

加拿大和中国,正在加速AI方面的部署。硬件方面,AI芯片竞争提速,英伟达发布了最新的Titan V旗舰GPU、Google发布了第二代TPU、英特尔的Nervana也发布了新的芯片。就连特斯拉也在开发AI硬件。另外,来自中国的竞争者也不容小觑。宣传非常重要,但有些宣传和实验室实际发生的事情不符。IBM沃森就是过度营销的传奇,并没有带来相符的结果。大家都不喜欢沃森,所以他们在医疗方面一再失败也不奇怪。Facebook的人工智能发明了自己的语言那事,其实也跟真相不符。这不简单是媒体的误导,研究人员所用的标题和摘要也越了界,没能反映实验的实际结果。 


人工智能赛博物理操作系统AI-CPS OS“人工智能赛博物理操作系统”(新一代技术+商业操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能)分支用来的今天,企业领导者必须了解如何将“技术”全面渗入整个公司、产品等“商业”场景中,利用AI-CPS OS形成数字化+智能化力量,实现行业的重新布局、企业的重新构建和自我的焕然新生。

AI-CPS OS的真正价值并不来自构成技术或功能,而是要以一种传递独特竞争优势的方式将自动化+信息化、智造+产品+服务和数据+分析一体化,这种整合方式能够释放新的业务和运营模式。如果不能实现跨功能的更大规模融合,没有颠覆现状的意愿,这些将不可能实现。

领导者无法依靠某种单一战略方法来应对多维度的数字化变革。面对新一代技术+商业操作系统AI-CPS OS颠覆性的数字化+智能化力量,领导者必须在行业、企业与个人这三个层面都保持领先地位:
重新行业布局:你的世界观要怎样改变才算足够?你必须对行业典范进行怎样的反思?
重新构建企业:你的企业需要做出什么样的变化?你准备如何重新定义你的公司?
重新打造自己:你需要成为怎样的人?要重塑自己并在数字化+智能化时代保有领先地位,你必须如何去做?
AI-CPS OS是数字化智能化创新平台,设计思路是将大数据、物联网、区块链和人工智能等无缝整合在云端,可以帮助企业将创新成果融入自身业务体系,实现各个前沿技术在云端的优势协同。AI-CPS OS形成的数字化+智能化力量与行业、企业及个人三个层面的交叉,形成了领导力模式,使数字化融入到领导者所在企业与领导方式的核心位置:精细:这种力量能够使人在更加真实、细致的层面观察与感知现实世界和数字化世界正在发生的一切,进而理解和更加精细地进行产品个性化控制、微观业务场景事件和结果控制。
智能:模型随着时间(数据)的变化而变化,整个系统就具备了智能(自学习)的能力。
高效:企业需要建立实时或者准实时的数据采集传输、模型预测和响应决策能力,这样智能就从批量性、阶段性的行为变成一个可以实时触达的行为。
不确定性:数字化变更颠覆和改变了领导者曾经仰仗的思维方式、结构和实践经验,其结果就是形成了复合不确定性这种颠覆性力量。主要的不确定性蕴含于三个领域:技术、文化、制度。
边界模糊:数字世界与现实世界的不断融合成CPS不仅让人们所知行业的核心产品、经济学定理和可能性都产生了变化,还模糊了不同行业间的界限。这种效应正在向生态系统、企业、客户、产品快速蔓延。
AI-CPS OS形成的数字化+智能化力量通过三个方式激发经济增长:
创造虚拟劳动力,承担需要适应性和敏捷性的复杂任务,即“智能自动化”,以区别于传统的自动化解决方案;
对现有劳动力和实物资产进行有利的补充和提升,提高资本效率;
人工智能的普及,将推动多行业的相关创新,开辟崭新的经济增长空间。

给决策制定者和商业领袖的建议:
超越自动化,开启新创新模式:利用具有自主学习和自我控制能力的动态机器智能,为企业创造新商机;
迎接新一代信息技术,迎接人工智能:无缝整合人类智慧与机器智能,重新评估未来的知识和技能类型;
制定道德规范:切实为人工智能生态系统制定道德准则,并在智能机器的开发过程中确定更加明晰的标准和最佳实践;
重视再分配效应:对人工智能可能带来的冲击做好准备,制定战略帮助面临较高失业风险的人群;
开发数字化+智能化企业所需新能力:员工团队需要积极掌握判断、沟通及想象力和创造力等人类所特有的重要能力。对于中国企业来说,创造兼具包容性和多样性的文化也非常重要。

子曰:“君子和而不同,小人同而不和。”  《论语·子路》云计算、大数据、物联网、区块链和 人工智能,像君子一般融合,一起体现科技就是生产力。
如果说上一次哥伦布地理大发现,拓展的是人类的物理空间。那么这一次地理大发现,拓展的就是人们的数字空间。在数学空间,建立新的商业文明,从而发现新的创富模式,为人类社会带来新的财富空间。云计算,大数据、物联网和区块链,是进入这个数字空间的船,而人工智能就是那船上的帆,哥伦布之帆!
新一代技术+商业的人工智能赛博物理操作系统AI-CPS OS作为新一轮产业变革的核心驱动力,将进一步释放历次科技革命和产业变革积蓄的巨大能量,并创造新的强大引擎。重构生产、分配、交换、消费等经济活动各环节,形成从宏观到微观各领域的智能化新需求,催生新技术、新产品、新产业、新业态、新模式。引发经济结构重大变革,深刻改变人类生产生活方式和思维模式,实现社会生产力的整体跃升。

产业智能官  AI-CPS用“人工智能赛博物理操作系统”(新一代技术+商业操作系统“AI-CPS OS”:云计算+大数据+物联网+区块链+人工智能),在场景中构建状态感知-实时分析-自主决策-精准执行-学习提升的认知计算和机器智能;实现产业转型升级、DT驱动业务、价值创新创造的产业互联生态链





长按上方二维码关注微信公众号: AI-CPS,更多信息回复:
新技术:“云计算”、“大数据”、“物联网”、“区块链”、“人工智能”;新产业:“智能制造”、“智能农业”、“智能金融”、“智能零售”、“智能城市”[b]、“智能驾驶”[/b];新模式:“财富空间”、“数据科学家”、“赛博物理”、“供应链金融”官方网站:AI-CPS.NET

本文系“产业智能官”(公众号ID:AI-CPS)收集整理,转载请注明出处!

版权声明:由产业智能官(公众号ID:AI-CPS)推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,与您共同协商解决。联系、投稿邮箱:erp_vip@hotmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: