多亏了新技术和充满GPU的计算机数据中心,深度学习获得了巨大的可能应用领域。这家公司的任务中很大一部分都只是获取用来探索这些可能性的时间和计算资源。这项工作极大地扩张了设计空间。就科学研究而言,覆盖的领域已经在指数式扩张了。而这也已经突破了图像识别的范畴,进入到了语音识别、自然语言理解等其它任务中。正因为覆盖的领域越来越多,微软在提高其GPU集群的运算能力的同时也在探索使用其它的专用处理器,其中包括FPGA——一种能针对特定任务(如深度学习)编程的芯片。而且这项工作已经在全世界的技术和人工智能领域掀起了波澜。英特尔完成了其历史上最大的并购案,收购了专注FPGA的Altera。 FPGA的优势是,如果计算机需要改变,它可以被重新装配。但是,最通用、最主流的方案仍旧是使用 GPU,以并行处理大量数学运算。不出预料,GPU 方案的主要推动者是该市场的霸主英伟达。
事实上, 2009 年之后人工神经网络的复兴与 GPU 有紧密联系——那一年,几名斯坦福的学者向世界展示,使用 GPU 可以在合理的时间内训练深度神经网络。这直接引发了 GPU 通用计算的浪潮。
英伟达首席科学家、斯坦福并发 VLSI 架构小组的负责人 William J. Dally 表示:“行内每个人现在都在做深度学习,这方面,GPU 几乎已经达到了最好。”
几乎所有深度学习的研究者都在使用GPU
# N" U0 ^. D" L5 W
熟悉深度学习的人都知道,深度学习是需要训练的,所谓的训练就是在成千上万个变量中寻找最佳值的计算。这需要通过不断的尝试实现收敛,而最终获得的数值并非是人工确定的数字,而是一种常态的公式。通过这种像素级的学习,不断总结规律,计算机就可以实现像像人一样思考。如今,几乎所有的深度学习(机器学习)研究者都在使用GPU进行相关的研究。当然,只是“几乎”。除了GPU之外,包括MIC和FPGA也提供了不同的解决方案。
“技术发展和科技的发展,是需要不同的技术一起来参与。无论是GPU也好、FPGA也好或者是专用的神经网芯片也好,它的主要目的都是推动深度学习(机器学习)这个方向的技术发展。那么我们在初期,确实可以尝试不同的技术,来探讨哪种技术可以更好的适合这项应用。从目前来看,深度学习大量的使用,主要集中在训练方面。那么在这个领域,GPU确实是非常适合的,这也体现在所有的这些工业界的大佬如BAT、谷歌,Facebook等等,都在使用GPU在做训练。”NVIDIA如是说。面对FPGA以及ASIC的挑战,NVIDIA表示“考虑是否设计低功耗的GPU,来满足用户的需求”。
除了硬件方面的因素之外,英伟达从软件方面解答了GPU对于深度学习应用的价值。首先从深度学习应用的开发工具角度,具备CUDA支持的GPU为用户学习Caffe、Theano等研究工具提供了很好的入门平台。其实GPU不仅仅是指专注于HPC领域的Tesla,包括Geforce在内的GPU都可以支持CUDA计算,这也为初学者提供了相对更低的应用门槛。除此之外,CUDA在算法和程序设计上相比其他应用更加容易,通过NVIDIA多年的推广也积累了广泛的用户群,开发难度更小。最后则是部署环节,GPU通过PCI-e接口可以直接部署在服务器中,方便而快速。得益于硬件支持与软件编程、设计方面的优势,GPU才成为了目前应用最广泛的平台。
0 q: ~/ K' t/ H# n# D8 x" t 深度学习发展遇到瓶颈了吗?
我们之所以使用GPU加速深度学习,是因为深度学习所要计算的数据量异常庞大,用传统的计算方式需要漫长的时间。但是,如果未来深度学习的数据量有所下降,或者说我们不能提供给深度学习研究所需要的足够数据量,是否就意味着深度学习也将进入“寒冬”呢?“做深度神经网络训练需要大量模型,然后才能实现数学上的收敛。深度学习要真正接近成人的智力,它所需要的神经网络规模非常庞大,它所需要的数据量,会比我们做语言识别、图像处理要多得多。假设说,我们发现我们没有办法提供这样的数据,很有可能出现寒冬”。
: V0 j6 i# o5 p: r i; B 其实深度学习目前还在蓬勃发展往上的阶段。比如说我们现阶段主要做得比较成熟的语音、图像方面,整个的数据量还是在不断的增多的,网络规模也在不断的变复杂。
对于NVIDIA来说,深度学习是GPU计算发展的大好时机,其实这是一场各个能够实现深度学习各个芯片,以及巨头赛跑的结局。谁最先找到自己逼近深度学习最适合的芯片模式,谁就是胜利者。
, w7 R8 n6 j# o/ z3 @+ a2 R) ~# N
GPU、FPGA 还是专用芯片?
尽管深度学习和人工智能在宣传上炙手可热,但无论从仿生的视角抑或统计学的角度,深度学习的工业应用都还是初阶,深度学习的理论基础也尚未建立和完善,在一些从业人员看来,依靠堆积计算力和数据集获得结果的方式显得过于暴力——要让机器更好地理解人的意图,就需要更多的数据和更强的计算平台,而且往往还是有监督学习——当然,现阶段我们还没有数据不足的忧虑。未来是否在理论完善之后不再依赖数据、不再依赖于给数据打标签(无监督学习)、不再需要向计算力要性能和精度?
% D! k" g2 m+ c$ W! P) b 退一步说,即便计算力仍是必需的引擎,那么是否一定就是基于GPU?我们知道,CPU和FPGA已经显示出深度学习负载上的能力,而IBM主导的SyNAPSE巨型神经网络芯片(类人脑芯片),在70毫瓦的功率上提供100万个“神经元”内核、2.56亿个“突触”内核以及4096个“神经突触”内核,甚至允许神经网络和机器学习负载超越了冯·诺依曼架构,二者的能耗和性能,都足以成为GPU潜在的挑战者。
) ?( d# }' @3 B% C9 } 不过,这些都尚未产品化的今天,NVIDIA并不担忧GPU会在深度学习领域失宠。首先,NVIDIA认为,GPU作为底层平台,起到的是加速的作用,帮助深度学习的研发人员更快地训练出更大的模型,不会受到深度学习模型实现方式的影响。其次,NVIDIA表示,用户可以根据需求选择不同的平台,但深度学习研发人员需要在算法、统计方面精益求精,都需要一个生态环境的支持,GPU已经构建了CUDA、cuDNN及DIGITS等工具,支持各种主流开源框架,提供友好的界面和可视化的方式,并得到了合作伙伴的支持,例如浪潮开发了一个支持多GPU的Caffe,曙光也研发了基于PCI总线的多GPU的技术,对熟悉串行程序设计的开发者更加友好。相比之下,FPGA可编程芯片或者是人工神经网络专属芯片对于植入服务器以及编程环境、编程能力要求更高,还缺乏通用的潜力,不适合普及。
目前来说,GPU贵,功耗高,运行效率比FPGA高,易使用。FPGA功耗,单颗性能是低的,单颗FPGA的硬件设计挑战没有GPU大,但是总体性价比和效率不占优;Intel收购Altera是否可以通过其工艺实力,给其带来极具的功能提升,我们还在长期的期待过程中。FPGA如果实现深度学习功能,还需要大批量使用,才能实现完整的功能,且需要与CPU相结合。 B- |6 p( E5 K
另外一个问题是,FPGA的大规模开发难度偏高,从业人员少。我们可以通过ARM战胜MIPS、以及STM32的迅速发展可以看到,一个好的生态环境,更多的从业人口,比技术、性价比本身更利于其发展。所以易用性是几个并行技术发展的一个重要考量维度。 9 Q) [# \, m8 l4 E S
FPGA犹如乐高,其灵活性,根据实际应用的需求,构建我所需要的硬件组件。但是乐高本身就是一种浪费:其功耗性能比,可变布线资源、多余的逻辑资源,其实都是浪费。所以你如果用乐高做一个机器人跟一个专门为格斗而开发的机器人对抗,结果可想而知。
FPGA在深度学习的应用场景,存在的价值在于其灵活性。DNN是深度神经网络系统的统称,实际使用的时候,使用几层网络,最终结果用什么样的筛选策略,在不同的应用和不同的设计框架下面,对硬件的诉求并不相同。
3 w7 G( c% k' o( Y/ x- t9 B要看设计者的建模方案。GPU的一个缺点是,他的组件模块是乘法器、加法器。虽然深度学习的参数都是数学模型,需要对RTL级别的变化,但是GPU的硬件资源是以乘法器、加法器这样量级的硬件单元组成的。如果GPU的预先配置与使用者的模型相差甚远。例如:加法器配置15个,乘法器配置15个。但实际使用的时候,乘法器使用量是15个,但是加法器只需要2个。这就浪费了13个加法器的资源。而FPGA是以查找表和触发器子单元,组合成任意运算单元。
但是换种角度来看FPGA本身就是一种浪费。
- k; f {% p9 W7 @/ e* n! W) ^+ A( {, A
当然ASIC是能效最高的,但目前,都在早期阶段,算法变化各异。想搞一款通用的ASIC适配多种场景,还是有很多路需要走的。但是,在通信领域,FPGA曾经也是风靡一时,但是随着ASIC的不断发展和蚕食,FPGA的份额和市场空间已经岌岌可危。如果深度学习能够迅速发展,有可能这个过程会比通信领域过程更短。
& z$ ~5 P+ \* @8 ?3 _