构建新的云原生系统或是将遗留系统云原生化,如何少走弯路?点击查看 了解详情
写点什么

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:022819
用户头像

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

关注

评论

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

Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文

Kaito

redis 性能优化 后端

生活,在哪里都一样

熊斌

个人成长 28天写作

作业2

瑾瑾呀

当公元成了可以考古的年代「幻想短篇 17/28」

道伟

28天写作

鸿蒙开发者beta!Github标星25K+超火的Android实战项目,赶紧收藏!

欢喜学安卓

android 程序员 面试 移动开发

MySQL 5.6.35 索引优化导致的死锁案例解析

vivo互联网技术

MySQL 数据库 死锁

架构师训练营第4周作业



在 ArrayList 使用冒泡法

sinsy

ArrayList 冒泡法

循环?还是递归?

xcbeyond

Java 算法 递归 28天写作

android开发三大框架!国内一线互联网公司面试题汇总,终局之战

欢喜学安卓

android 程序员 面试 移动开发

[编程参考-连载] Snowflake 算法原理与对应的 Python 实现

穿甲兵

Python 算法

企业项目迁移go-zero全攻略(一)

万俊峰Kevin

微服务 microservice Go 语言

Hive操作异常总结

小马哥

大数据 hive 数据仓库

架构师训练营 - 第四周作业

Mark

年会游戏:猜数字(前端特效)

德育处主任

CSS html 大前端 js 28天写作

数据库性能调优之始: analyze统计信息

华为云开发者社区

数据库 sql GaussDB 语义

区块链数字钱包APP系统开发|区块链数字钱包软件开发

系统开发

产品训练营第二章作业(一)

Arnold

架构师训练营第4周学习总结



碎碎念之「技术文档写作风格」

Justin

碎碎念 文档 28天写作 写作技巧

与前端训练营的日子 --Week13

SamGo

学习

大数据场景下Volcano高效调度能力实践

华为云开发者社区

大数据 spark Kubernetes Volcano application

Why me, why now Jan 25, 2021

王泰

28天写作

管理的亲和力是怎么练成的?

一笑

管理 沟通与管理 28天写作

聊聊 Git 的三种传输协议及实现

Zoker

git 架构 DevOps

架构师训练营第四周作业 - 学习总结

阿德儿

机器学习·学习笔记之:无监督学习

Nydia

第九周学习总结

Binary

第二章作业(一)

LouisN

使用 external version 进行 Elasticsearch 并发控制

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

文章类网站前端日期的显示该如何选择时区?

IT蜗壳-Tango

七日更 服务器时区

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