写点什么

深度学习框架简史

  • 2020-12-28
  • 本文字数:3401 字

    阅读完需:约 11 分钟

深度学习框架简史

过去⼗年,机器学习(尤其是深度学习领域)涌现了⼤量算法和应⽤。在这些深度学习算法和应⽤涌现的背后,是各种各样的深度学习⼯具和框架。它们是机器学习⾰命的脚⼿架:TensorFlow 和 PyTorch 等深度学习框架的⼴泛使⽤,使许多机器学习从业者能够使⽤适合领域的特定编程语⾔和丰富的构建模块更容易地组装模型。


回顾深度学习框架的演变,我们可以清楚地看到深度学习框架和深度学习算法之间的紧密耦合关系。这种相互依赖的良性循环推动了深度学习框架和工具的快速发展。

石器时代(21 世纪初)

神经网络的概念已经出现一段时间了。在 21 世纪初之前,有一些工具可以用来描述和开发神经网络。这些工具包括 MATLAB、OpenNN、Torch 等,它们要么不是专门为神经网络模型开发定制的,要么拥有复杂的用户 api,缺乏 GPU 支持。在此期间,ML 实践者在使用这些原始的深度学习框架时不得不做很多繁重的工作。


青铜时代(~2012 年)

2012 年,多伦多大学的 Alex Krizhevsky 等人提出了一种深度神经网络架构,后来被称为 AlexNet[1],该架构在 ImageNet 数据集上达到了 SOTA 精度,并大大超过了第二名的选手。这一出色的结果引发了深度神经网络的热潮,此后各种深度神经网络模型在 ImageNet 数据集的准确性上不断创下新高。


大约在这个时候,一些早期的深度学习框架,如 Caffe、Chainer 和 Theano 应运而生。使用这些框架,用户可以方便地建立复杂的深度神经网络模型,如 CNN、RNN、LSTM 等。此外,这些框架还支持多 GPU 训练,这大大减少了对这些模型的训练时间,并且能够对以前无法装入单一 GPU 内存的大型模型进行训练。在这些框架中,Caffe 和 Theano 使用声明式编程风格,而 Chainer 采用命令式编程风格。这两种不同的编程风格也为即将到来的深度学习框架设定了两条不同的开发路径。


铁器时代(2015 ~ 2016)

AlexNet 的成功引起了计算机视觉领域的高度关注,并重新点燃了神经网络的希望,大型科技公司加入了开发深度学习框架的行列。其中,谷歌开源了著名的 TensorFlow 框架,它至今仍是 ML 领域最流行的深度学习框架。Caffe 的发明者加入了 Facebook 并发布了 Caffe2;与此同时,Facebook AI 研究(FAIR)团队也发布了另一个流行的框架 PyTorch,它基于 Torch 框架,但使用了更流行的 Python api。微软研究院开发了 CNTK 框架。亚马逊采用了 MXNet,这是华盛顿大学、CMU 和其他机构的联合学术项目。TensorFlow 和 CNTK 借鉴了 Theano 的声明式编程风格,而 PyTorch 则继承了 Torch 的直观和用户友好的命令式编程风格。命令式编程风格更加灵活(比如定义一个 While 循环等)并且容易跟踪,而声明式编程风格通常为内存和基于计算图的运行时优化提供了更多的空间。另一方面,被称为「mix」-net 的 MXNet 同时支持一组符号(声明性)api 和一组命令式 api,并通过一种称为杂交(hybridization)的方法优化了使用命令式 api 描述的模型的性能,从而享受了这两个领域的好处。


2015 年,何凯明等人提出了 ResNet[2],再次突破了图像分类的边界,在 ImageNet 的准确率上再创新高。业界和学界已经达成共识,深度学习将成为下一个重大技术趋势,解决各种领域的挑战,这些挑战在过去被认为是不可能的。在此期间,所有深度学习框架都对多 GPU 训练和分布式训练进行了优化,提供了更加用户直观的 api,并衍生出了专门针对计算机视觉、自然语言处理等特定任务的 model zoo 和工具包。还值得注意的是,Francois Chollet 几乎是独自开发了 Keras 框架,该框架在现有框架(如 TensorFlow 和 MXNet)之上提供了神经网络和构建块的更直观的高级抽象。从今天开始,这种抽象成为 TensorFlow 中模型层面事实上的 api。


罗马时代(2019 ~ 2020)

正如人类历史的发展一样,深度学习框架经过一轮激烈的竞争,最终形成了两大「帝国」:TensorFlow 和 PyTorch 的双头垄断,这两大「帝国」代表了深度学习框架研发和生产中 95% 以上的用例。2019 年,Chainer 团队_将他们的开发工作转移到 PyTorch;类似地,微软_停止了 CNTK 框架的积极开发,部分团队成员转而支持 Windows 和 ONNX 运行时上的 PyTorch。Keras 被 TensorFlow 收编,并在 TensorFlow 2.0 版本中成为其高级 api 之一。在深度学习框架领域,MXNet 仍然位居第三。


在此期间,深度学习框架空间有两种趋势。


首先是大型模型训练。随着 BERT[3] 的诞生,以及它的近亲 GPT-3[4] 的诞生,训练大型模型的能力成为了深度学习框架的理想特性。这就要求深度学习框架能够在数百台(如果不是数千台的话)设备的规模下有效地进行训练。


第二个趋势是可用性。这一时期的深度学习框架都采用命令式编程风格,语义灵活,调试方便。同时,这些框架还提供了用户级的装饰器或 api,以通过一些 JIT(即时)编译器技术实现高性能。

工业时代(2021+)

深度学习在自动驾驶、个性化推荐、自然语言理解到医疗保健等广泛领域取得了巨大成功,带来了前所未有的用户、开发者和投资者浪潮。这也是未来十年开发深度学习工具和框架的黄金时期。尽管深度学习框架从一开始就有了长足的发展,但它们之于深度学习的地位还远远不如编程语言 JAVA/ c++ 之于互联网应用那样的成熟。还有很多令人兴奋的机会和工作有待探索和完成。


展望未来,有⼏个技术趋势有望成为下⼀代深度学习框架的主流:


  • 基于编译器的算⼦(operator)优化。如今,许多操作符内核都是通过⼿动或第三⽅库实现的,⽐如 BLAS、CuDNN、OneDNN 等,这些库针对特定的硬件平台。当模型被训练或部署在不同的硬件平台上时,这会造成很⼤的开销。此外,新的深度学习算法的增⻓速度往往⽐这些库的迭代速度快得多,这使得这些库常常不⽀持新的算⼦。深度学习编译器,如 Apache TVM, MLIR, Facebook Glow 等,已经提出了在任何硬件后端上有效优化和运⾏计算的建议。它们可以作为深度学习框架的整个后端。

  • 统⼀的 API 标准。许多深度学习框架共享类似但略有不同的⽤户 API。这给⽤户从⼀个框架切换到另⼀个框架带来了困难和不必要的学习曲线。虽然⼤多数机器学习从业者和数据科学家都熟悉 NumPy 库,但在新的深度学习框架中,NumPy API⾃然会成为 tenor 操作 API 的标准。我们已经看到快速发展的框架 JAX 受到了⽤户的热烈欢迎,它的 API 完全与 NumPy 兼容。

  • 数据搬运作为⼀等公⺠。多节点或多设备训练正在成为深度神经⽹络训练的规范。最近开发的深度学习框架,如 OneFlow,从设计的第⼀天起就将这⼀观点纳⼊设计考虑,并将数据通信视为模型训练的整体计算图的⼀部分。这为性能优化打开了更多的机会,⽽且由于它不需要像以前的深度学习框架那样维护多种训练策略(单设备 vs 分布式训练),因此除了提供更好的性能之外,它还可以提供更简单的⽤户界⾯。

总 结


我们正处于⼀场⼈⼯智能⾰命的黎明。⼈⼯智能领域的新研究和新应⽤正在以前所未有的速度涌现。⼋年前,AlexNet⽹络包含 6000 万个参数;最新的 GPT-3⽹络包含 1750 亿参数,⽹络规模在 8 年内增加了 3000 倍!另⼀⽅⾯,⼈类的⼤脑包含⼤约 100 万亿个参数(即突触)。这表明,如果有可能的话,神经⽹络要达到⼈类的智能⽔平还有很⼤的差距。


这种难以接受的⽹络规模对模型训练和推理的硬件和软件计算效率都提出了很⼤的挑战。未来的深度学习框架很可能是算法、⾼性能计算、硬件加速器和分布式系统的跨学科成果。


作者简介

Lin Yuan 是 Waymo 的一名资深软件工程师。他为自动驾驶汽车的感知和规划任务开发了机器学习平台。在加入 Waymo 之前,他曾在 Amazon AI 从事大规模分布式学习。他是 Apache 深度学习框架 MXNet 和 LFAI 分布式学习库 Horovod 的代码提交者和主要贡献者。


在从事 AI 领域的工作之前,他在 VLSI 设计和自动化方面积累了丰富的经验。他曾担任半导体设计自动化会议 ICCAD 和 DAC 的技术程序委员会(Technical Program Committee)委员。他获得了马里兰大学帕克分校的计算机工程博士学位。


注释:


[1] Alex Krizhevsky et al., ImageNet Classification with Deep Convolutional Neural Networks(2012), NeurIPS 2012


[2] Kaiming He et al., Deep Residual Learning for Image Recognition (2016), CVPR 2016


[3] Jacob Devlin et al., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)


[4] Tom B. Brown et al., Language Models are Few-Shot Learners (2020), NeurIPS 2020


[5] Announcing the Consortium for Python Data API Standards (2020)


原⽂链接:https://syncedreview.com/2020/12/14/a-brief-history-of-deep-learning-frameworks/

2020-12-28 11:403313

评论 1 条评论

发布
用户头像
这篇文章翻译的有很多问题啊,很多词都没有译过了,出现了很多 “⼋” 型的字
2020-12-30 09:23
回复
没有更多了
发现更多内容

白嫖!字节跳动 Java岗顶级面试解析(2023版),GitHub巅峰神作!

三十而立

谈一谈 SAP 企业管理软件里那些真假 Fiori 应用

汪子熙

SAP Fiori 企业管理软件 思爱普 三周年连更

华为云智能编程助手赋能高校,揭示行业发展新动向

爱尚科技

听说谛听闹退休?感知网络接班啦!

白洞计划

感知网络

集简云软件连接器,实现业务流程自动化

集简云开放平台

低代码开发 低代码平台 数据集成平台

架构训练营模块九作业

gigifrog

架构训练营

爆肝一月!527页文档详解SpringCloud微服务和分布式系统实践

Java你猿哥

数据库 分布式 SSM框架 微服务设计

2023最新整理上千道Java面试攻略,近500页PDF文档

会踢球的程序源

Java 面试 找工作 java面试 应届生

搭建数据驱动的技术底座,助力企业数智化变革

用友BIP

技术大会 用友iuap 用友技术大会 升级企业数智化底座

仅凭这份 Java 大纲笔记,我如愿拿到了阿里 offer。

三十而立

总结年初到 10 月底 Java 基础、架构面试题,共计 1327 道!涵盖蚂蚁金服、腾讯、字节跳动、美团、拼多多等等一线大厂!

三十而立

袋鼠云春季生长大会最新议程来啦!4月20日我们云上见

袋鼠云数栈

大数据 数字化转型

分布式政企应用如何快速实现云原生的微服务架构改造

IT科技苏辞

selenium源码通读·6 |webdriver/common/alert.py-Alert类分析

Python 源码 自动化测试 selenium

崖山科技通过CMMI3级认证,研发管理能力获国际权威认可!

YashanDB

数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年3月刊

墨天轮

MySQL 数据库 oracle postgresql 国产数据库

2023 Java面试题短期突击攻略,已帮助400+位程序员成功拿到offer

小小怪下士

Java 程序员 面试 后端

Mysql分页 vs Oracle分页|非常详细,建议收藏

bug菌

MySQL oracle 三周年连更

升级企业数智化底座,以技术重构企业发展力

用友BIP

技术大会 用友iuap 用友BIP 用友技术大会

技术分享 | 如何迅速将分布式政企应用转型为云原生微服务架构

IT科技苏辞

SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant

IT科技苏辞

【Meetup回顾第1期】竟是这样的国产数据库,YashanDB技术内幕曝光

YashanDB

华为云智能编程助手助力哈尔滨工业大学(深圳)学子,引领软件研发新趋势

爱尚科技

全面拥抱Serverless,腾讯云大数据Elasticsearch开启云原生新范式

科技热闻

用低代码平台可视化设计表单

力软低代码开发平台

五一临近,赋能乡村振兴,低代码也有话讲!

加入高科技仿生人

低代码 数字化 乡村振兴 乡村旅游

第二届“鼎新杯”数字化转型应用大赛申报通道正式开启

信通院IOMM数字化转型团队

数字化转型 鼎新杯

2023 寻找企业出海“新势力”

Jessie

企业出海 出海

阿里,快手,拼多多等 7 家大厂 Java 面试真题,Java 笔试题及答案详解

三十而立

华为云智能编程助手助力哈尔滨工业大学(深圳)培养新时代软件研发人才

爱尚科技

深度学习框架简史_大数据_Lin Yuan_InfoQ精选文章