点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

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

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

By Nationalmuseet, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=90400464

石器时代(21世纪初)

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

By Nationalmuseet, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=90400464

青铜时代(~2012 年)

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

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

Nordisk familjebok — Nordisk familjebok (1910), vol.13, Till art. Järnåldern. https://commons.wikimedia.org/w/index.php?curid=109777

铁器时代(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。

By User Lamré on sv.wikipedia https://commons.wikimedia.org/w/index.php?curid=801434

罗马时代(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(即时)编译器技术实现高性能。

By Tharunbr77 — Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=86866550

工业时代(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)

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

深度学习框架简史 (A Brief History of Deep Learning Frameworks)相关推荐

  1. 深度学习系列 -- 第二门课 改善深层神经网络:超参数调试、正则化以及优化(一):深度学习的实践层面(Practical aspects of Deep Learning)

    目录 一.深度学习的实践层面(Practical aspects of Deep Learning) 1 训练,验证,测试集(Train / Dev / Test sets) 2 偏差,方差(Bias ...

  2. 【用深度学习搜索相似服饰】《Using Deep Learning to Find Similar Dresses》by Luis Mey

    [用深度学习搜索相似服饰]<Using Deep Learning to Find Similar Dresses>by Luis Mey

  3. 收藏 | 深度学习框架简史:TensorFlow和PyTorch双头垄断

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

  4. DNA/RNA基序挖掘中的深度学习研究进展(A survey on deep learning in DNA/RNA motif mining)

    摘要 DNA/RNA基序挖掘是基因功能研究的基础.DNA/RNA基序挖掘在识别DNA或RNA蛋白结合位点方面起着极其重要的作用,有助于理解基因调控和管理的机制.在过去的几十年里,研究人员一直致力于设计 ...

  5. 重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)

    本文介绍的是 PointNet 作者的博士论文:3D场景理解中的点云深度学习.从上图可以看到,整个博士论文主要贡献有两块:一是点云深度学习的网络架构(PointNet 和 PointNet++):二是 ...

  6. 论文笔记 | 基于深度学习的乳腺转移瘤识别(Deep Learning for Identifying Metastatic Breast Cancer)

    论文阅读笔记:原文链接 摘要 生物医学图像国际研讨会(International Symposium on Biomedical Imaging,ISBI)举办了一个在前哨淋巴节点全幻灯图中自动检测转 ...

  7. TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)

    1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...

  8. 吴恩达深度学习1.2练习_Neural Networks and Deep Learning

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

  9. 吴恩达深度学习1.4练习_Neural Networks and Deep Learning

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42432468 学习心得: 1.每周的视频课程看一到两遍 2.做笔记 3.做每周的作业 ...

最新文章

  1. android 计算器显示不全,Android5.0 计算器计算结果不准确和结果末尾的多余的‘0’没有省略的解决方法...
  2. html回车按键确认按钮,button默认enter事件(回车事件)。
  3. ubuntu-桌面版-常用设置
  4. linux echo写php编码,linux使用和基础操作(示例代码)
  5. mysql多源复制相同数据库名称_mysql数据库多源复制方案
  6. (转载)SpringBoot 发送邮件和附件
  7. 使用t-sql语句修改表中的某些数据及数据类型。_数据库基本理论详细介绍
  8. 1356. 根据数字二进制下 1 的数目排序 golang
  9. 二分排序java实现
  10. html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器
  11. MATLAB安装机器人学工具箱
  12. 远程桌面复制文件到本地磁盘
  13. thinkphp3.2 不同域名配置不同分组设置
  14. [转帖]javascript做浮点数运算精确问题
  15. php网页动态加载swf,HTML_如何修改网页中的FlashSWF文件,看到一个网站用flash做的,很 - phpStudy...
  16. Minecraft在安卓手机上搭建java服务器
  17. 如何正确使用QTcpSocket的readyRead信号?
  18. OSChina 周一乱弹 —— 达叔撸猫图还是满满的少女心
  19. 局域网,手机与电脑文件共享
  20. OpenGL 4.0 GLSL 采用平行光照模型

热门文章

  1. NLP学习思维导图,非常的全面和清晰
  2. 明晚8点直播 | Transformer新型神经网络在机器翻译中的应用
  3. 能在不同的深度学习框架之间转换模型?微软的MMdnn做到了
  4. 生产环境 JVM 内存溢出案例分析
  5. 这是我见过最通俗易懂的 装饰者模式 讲解了!
  6. SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录
  7. 常见的神经网络求导总结!
  8. 学术圈竞赛圈大讨论,深度学习真的比不过GBDT模型吗?
  9. 开源助力!武汉新型冠状病毒防疫开源信息收集平台
  10. 2022年,PyTorch在AI顶会的占比已经上80%了