“云无界、端无边” OGeek 技术峰会 9月17日 南京不见不散! 了解详情
写点什么

Facebook 加速深度学习研发

  • 2015 年 7 月 23 日
  • 本文字数:2570 字

    阅读完需:约 8 分钟

第八届超大数据库会议(XLDB2015)5 月 19 日—20 日在斯坦福大学召开,会议邀请了 Facebook 人工智能实验室(FAIR)的 Keith Adams 做了题为“Accelerating Deep Learning at Facebook”的特邀报告。在 Keith 的报告中,他首先对深度学习进行了一个简单的介绍,然后详细介绍了 FAIR 为加速深度学习,从硬件、软件和优化等方面所做的一些努力。本文由黄立威、张天雷整理。

Facebook 人工智能实验室(FAIR)成立于 2013 年 12 月,主要致力于利用人工智能技术在图像和视频理解、语言识别、自然语言理解等领域取得突破。Keith Adams 是 Facebook 人工智能实验室的一名资深工程师。他在 Facebook 的主要工作是构建训练智能系统的基础设施。Keith 是 HipHop 虚拟机团队的创始成员之一,其创建的 PHP 引擎,被 Facebook、维基百科、Etsy 等其他许多网站所使用。在加入 Facebook 之前,他在 VMware 的虚拟机监视器团队工作了九年。

近年来,人工智能领域所取得的许多进步都与“深度学习”息息相关。受益于大数据的出现和大规模计算能力的提升,深度学习已然成为最活跃的计算机研究领域之一。 深度学习的多层非线性结构使其具备强大的特征表达能力和对复杂任务的建模能力。但是构建成熟的深度学习模型常常涉及到巨大的训练数据集,大的模型以及超长的计算时间,因此,深层模型的并行化框架和训练加速方法是深度学习走向实用的重要基石。

深度学习的参数训练过程中,随机梯度下降(SGD)是最常被使用的方法。然而在这个过程中,通常需要很多的技巧,例如模型深度的选择,神经元个数的设定,训练权重的初始化,学习率的调整,Mini-batch 的控制等等。即便对这些技巧十分精通,实践中也要多次训练,反复摸索尝试。此外,随机梯度下降本质上串行的,深层模型参数多,计算量大,训练数据的规模更大,需要消耗很多计算资源,训练时间会非常长。针对深度学习面临的这些挑战,Keith 介绍了他们的团队在加速深度学习方面所采用几种方法。

GPGPU 加速

GPU(Graphic Process Units,图形处理器)的众核体系结构包含几千个流处理器,可将运算并行化执行,大幅缩短模型的运算时间。随着 NVIDIA、AMD 等公司不断推进其 GPU 的大规模并行架构支持,面向通用计算的 GPU(General-Purposed GPU, GPGPU)已成为加速可并行应用程序的重要手段。得益于 GPU 众核(many-core)体系结构,程序在 GPU 系统上的运行速度相较于单核 CPU 往往提升几十倍乃至上千倍。目前 GPU 已经发展到了较为成熟的阶段。利用 GPU 来训练深度神经网络,可以充分发挥其数以千计计算核心的高效并行计算能力,在使用海量训练数据的场景下,所耗费的时间大幅缩短,占用的服务器也更少。如果针对适当的深度神经网络进行合理优化,一块 GPU 卡可相当于数十甚至上百台 CPU 服务器的计算能力,因此 GPU 已经成为业界在深度学习模型训练方面的首选解决方案,也是 Facebook 当前加速深度学习的最重要方式。

数据并行(Data Parallel)

数据并行是指将训练数据切分为 N 份,分配给 N 个 worker 对 N 个分片的数据并行训练。完成数据并行训练之后,模型的梯度是所有分片数据上梯度的平均值,然后使用这个均值对参数进行更新,之后再将更新的参数返回给 N 个 worker 进行下一次的迭代。在训练的过程中,多个训练过程相互独立,每次迭代过程中 worker 之间的通信等比于参数的数量。数据并行也存在自身的缺点,当训练数据太多时,数据并行不得不减小学习率,以保证训练过程的平稳。

模型并行(Model Parallel)

模型并行将模型拆分成几个单元,每一层都可以被拆分,由不同的训练单元分别持有,共同协作完成训练。当一个计算单元上的神经元的输入来自另一个训练单元上的神经元的输出时,不同计算单元之间就产生通信开销。因此,模型并行拆分的单元太多时,神经元输出值的通信量会急剧增加,导致模型的效率大幅下降。多数情况下,模型并行带来的通信开销和同步消耗超过数据并行,因此加速比也不及数据并行。但对于单机内存无法容纳的大模型来说,模型并行提供了一个很好的选择。同时也可以组合数据并行和模型并行产生混合架构。

基于 Torch7 的深度学习(Productive Deep Learning with Torch7)

Torch7 是一个为机器学习算法提供广泛支持的科学计算框架,其中的神经网络工具包(Package)实现了均方标准差代价函数、非线性激活函数和梯度下降训练神经网络的算法等基础模块,可以方便地配置出目标多层神经网络。Torch 长期以来都是很多机器学习和人工智能项目的核心,不仅是学术界,就连谷歌、Twitter 和英特尔等企业也都使用这一架构。Facebook 开发了一些能够在 Torch7 上更快速地训练神经网络的模块,推出了一些优化工具,加快了基于 Torch 的深度学习项目的运行速度,比如,其中一个工具允许开发者使用多个 GPU 进行参数的并行训练,还有工具可以使卷积神经网络的训练速度提升数十倍以上,而卷积神经网络是很多深度学习系统的核心。另外,Facebook 还推出了多款工具,为 Torch 自带的功能赋予更快的速度,这些工具的速度常常比 Torch 默认工具快 3 至 10 倍。

参数服务器架构(Parameter Server Architecture)

CPU 集群方案的基本架构包含用于执行训练任务的 Worker、用于分布式存储分发模型的参数服务器(Parameter Server)和用于协调整体任务的主控程序(Master)。CPU 集群方案适合训练 GPU 内存难以容纳的大模型,以及稀疏连接神经网络。Keith 还对 Andrew Ng 和 Jeff Dean 提出的参数服务器架构进行了简单介绍,他们在 Google 用 1000 台 CPU 服务器,完成了模型并行和 Downpour SGD 数据并行的深度神经网络训练。Andrew Ng 和 Jeff Dean 的这项成果发表在NIPS2012 上。

在Keith 的报告中,还提到了Tensor DSM 等其他的方式用于加速深度学习。总之,深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,并展现了强大的学习数据集本质和高度抽象化特征的能力。但是其面临的最大问题是如何解决其过长的计算时间,只有强有力的基础设施和定制化的并行计算框架,才能让以往不可想象的训练任务加速完成,为深度学习走向实用奠定坚实的基础。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 7 月 23 日 10:022845
用户头像

发布了 268 篇内容, 共 109.5 次阅读, 收获喜欢 23 次。

关注

评论

发布
暂无评论
发现更多内容

【网易云信】超分辨率技术在实时音视频领域的研究与实践

网易智企

实时音视频

详解SQL中Groupings Sets 语句的功能和底层实现逻辑

华为云开发者联盟

数据库 sql 聚合函数

现在加盟自助洗车是否还来得及

车白兔自助洗车机加盟

自助洗车加盟 加盟自助洗车 车白兔自助洗车

无人自助洗车机投放选址有啥要点

车白兔自助洗车机加盟

自助洗车加盟 车白兔自助洗车 自助洗车机投放

Web3.0时代来了,看天翼云存储资源盘活系统如何赋能新基建(下)

天翼云开发者社区

数字化 云存储

企业数字化转型之路,从这里开始

天翼云开发者社区

数字化转型 云存储

更严苛的英特尔Evo 3.0,正在让合作伙伴们上瘾

科技之家

HiEngine:可媲美本地的云原生内存数据库引擎

华为云开发者联盟

数据库 华为云 内容数据库引擎

彻底理解为什么网络 I/O 会被阻塞?

C++后台开发

网络编程 socket 非阻塞网络I/O C++后台开发 C++开发

华律网牵手观测云,上线系统全链路可观测平台

观测云

MySQL数据库索引教程(超详细)

Albert Edison

7月月更

5. 数据访问 - EntityFramework集成

MASA技术团队

C# .net 微软 后端 Framework

Linux RedHat7.4更换阿里云yum源

Albert Edison

7月月更

自助共享洗车能挣钱么?分析下

车白兔自助洗车机加盟

自助洗车加盟 车白兔自助洗车 自助洗车费用

RedHat7.4配置yum软件仓库(RHEL7.4)

Albert Edison

7月月更

企业级数据安全,天翼云是这样理解的

天翼云开发者社区

数据安全

Python 入门指南之Python 简介

海拥(haiyong.site)

Python 7月月更

视觉体验全面升级,豪威集团与英特尔Evo 3.0共同加速PC产业变革

科技之家

超分辨率技术在实时音视频领域的研究与实践

网易云信

实时音视频

单商户 V4.4,初心未变,实力依旧!

CRMEB

养不起真猫,就用代码吸猫 -Unity 粒子实现画猫咪

芝麻粒儿

游戏 Unity 特效 7月月更

自助洗车加盟门槛如何?高不高

车白兔自助洗车机加盟

自助洗车加盟费 车白兔自助洗车 自助洗车加盟门槛

来看一看智能自助洗车怎么加盟?

车白兔自助洗车机加盟

自助洗车加盟 加盟自助洗车 车白兔自助洗车

Vue和小程序的关系

Geek_99967b

小程序 Vue

尚硅谷尚优选项目教程发布

小谷哥

EMQX 5.0 发布:单集群支持 1 亿 MQTT 连接的开源物联网消息服务器

EMQ映云科技

物联网 IoT mqtt #开源 7月月更

践行自主可控3.0,真正开创中国人自己的开源事业

极狐GitLab

git DevOps gitlab 自主可控 极狐GitLab

2022-Java后端工程师面试指南-(并发-多线程)

自然

多线程 并发 7月月更 7 月月更

跨境支付平台 XTransfer 的低代码实践:如何与其他中台融合是核心

XTransfer技术

技术 前端

一朵云开启智慧交通新未来

天翼云开发者社区

区块链 大数据 物联网

首届腾讯云大数据峰会暨Techo TVP开发者峰会

首届腾讯云大数据峰会暨Techo TVP开发者峰会

Facebook加速深度学习研发_Facebook_张天雷_InfoQ精选文章