随着神经网络和深度学习研究的不断深入——尤其是语音识别和自然语言处理、图像与模式识别、文本和数据分析,以及其他复杂领域——研究者们不断在寻找新的更好的方法来延伸和扩展计算能力。
几十年来,这一领域的黄金标准一直是高性能计算(HCP)集群,它解决了大量处理能力的问题,虽然成本有点过高。但这种方法已经帮助推动了多个领域的进步,包括天气预测、金融服务,以及能源勘探。
然而,2012 年,一种新的方法出现了。伊利诺伊大学的研究者之前已经研究过在台式超级计算机中使用 GPUs 来加速处理任务(如图像重建)的可能性,现在多伦多大学的一组计算机科学家和工程师证明了一种在 GPUs 上运行深度神经网络来极大推进计算机视觉技术的方法。插上 GPUs(之前主要用在图形中)后,计算神经网络的性能会立即获得巨大提升,这种提升反映在了计算机视觉效果的明显改善上。
这是一次革命性进步
“仅仅在几年之后,GPUs 已经出现在深度学习的核心位置,”加州大学伯克利分校电子工程和计算机科学系教授 Kurt Keutzer 说到。“GPUs 的使用正在成为主流,通过在一个应用程序中使用几十到数百个处理器,GUP 正在从根本上改变计算。”
伊利诺伊大学厄巴纳-香槟分校电子与计算机工程 Walter J. Sanders III–Advanced Micro Device 的名誉主席 Wen-Mei W. Hwu 也说过,“GPU 是卓越的吞吐量计算设备。如果你只有一项任务,就没必要用到 GPUs,因为速度也快不到哪去。但是,如果你有大量的相互之间独立的任务,用 GPUs 就对了。”
一个深度视角
GPU 架构起源于基础的图形渲染操作,比如给图形加阴影。1999 年,Nvida 推出了 GeForce 256,这是世界上第一个 GPU。简单来说,这个专用的电路——-可内置在视频卡或主板中——主导并优化了计算机内存以加快显示器的渲染速度。今天,GPUs 用在更加广泛的设备中,包括个人计算机、平板电脑、手机、工作站、电子标示、游戏机,以及嵌入式系统。
然而,“计算机视觉和深度学习中很多新应用的内存都是有限带宽,”Keutzer 解释道,“在这些应用中,应用程序的速度往往最终取决于它从内存中提取数据以及流入和通过处理器要花多少时间。”
部署 GPU 的一个常常被忽视的巨大优势是其 processor-to-memory 的超级带宽。Keutzer points 指出,这样的结果是,“在带宽有限的应用中,这个 processor-to-memory 带宽的相对优势直接转化成超级应用性能。”关键是 GPUs 用更少的电力提供了更快的浮点运算(FLOPs,每秒浮点运算次数)通过支持 16 位的浮点数扩大了能效优势,比单精度(32 位)或双精度(64 位)浮点数的能效更高。
多核 GPU 要依赖更大量的 32 位到 64 位这样更简单的处理器内核的大量部署。相比之下,使用更小的传统的微处理器,通常是 2 位到 4 位到 8 位时,效果如何会呢?
“使用微处理器的 GPUs 实现了更优越的性能,并为深度神经网络提供了更好的架构支持。GPUs 在深度神经网络上表现出的性能优势逐渐被转化到更多种类的应用中。”Keutzer 说。
今天,一个典型的 GPU 集群包含了 8 到 16 个 GPU,而像 Keutzer 这样的研究人员正在尝试使用数百个 GPU 在超大数据集上同时训练多个深度神经网络,否则将需要几周的训练时间。这个训练需要运行大量数据通过该系统以让它达到能解决问题的状态。那时,它或许就可以在一个 GPU 或者混合处理器中运行了。“这不是一次学术训练。”Keutzer 指出。“我们训练用于像自动驾驶汽车这种新应用的神经网络时,就需要这样的速度。”
使用 GPU 正在成为主流,通过在单个应用中使用多个处理器,能从根本上改变计算。
GPU 技术现在的进展速度远比传统的 CPU 快,凭借强劲的浮点马力和较低的能耗,GPU 的可扩展性能让深度学习和机器学习任务的效率得到飞速提升,效果堪比给汽车装上涡轮增压发动机,百度高级研究员 Bryan Catanzaro 说到。“深度学习不是新鲜事物。GPUs 也不是。但是这个领域在计算能力得到极大提升和有丰富数据可供使用之后,才开始真正起航。”
大部分进展来自 Nvidia,这家公司不断推出更加复杂的 GPUs,包括刚推出的专为解决训练和推理这类特殊任务的 Pascal 架构。在这款最新的 GPU 系统中,Tesla P100 芯片实现了在一片硅片上封包 150 亿个晶体管,数量是之前处理器的两倍。
另一个例子,百度正在推进语言识别研究的新前沿。它的“Deep Speech”项目,依赖一个端到端的神经网络,在英语和汉语的短音频剪辑中使语音识别的精确度达到了人类水平。这家公司还在探索自动驾驶汽车中的 GPU 技术;它一直在研发能在北京大街上自动导航的自动驾驶汽车,并做了改变车道、超车、停车和启动的演习。
同时,微软亚洲的研究员使用 GPUs 和一种深度神经网络的变体——深度残差网络,来在计算机视觉中的对象分类和识别的任务中实现更高精确度。
谷歌,也在使用这些技术来持续改进图像识别算法。前谷歌人工智能研究员,现 Open AI 研究室主任 Ilya Sutskever 说到:“神经网络正在复兴。神经网络和深度学习的核心理念已经被讨论和思考多年了,但是正是通用 GPU 的研发才是神经网络和深度学习成功的关键。”