深度学习编程框架对比

1|前言

深度学习编程框架提供了用于深度学习设计、训练,验证等功能的基本模块使用架提供的高级API,用户可以简单方便地实现各种深度学习以及机器算法目前,市面上有很多流行的开源框架,每个框架都有自己的用户群和优缺点。几乎所有的框架都支持CPU和GPU设备,使用了常见的基于设备的加速库,如BLAS, cuBLAS、NCCL等。选取 TensorFlow、 PyTorch、Cafe、 MXNet、paddlepaddle这五个相对有代表性的框架进行全面的对比。

首先我们统计了各框架在社区的活跃程度,如图1所示,从开源社区 Github上统计了各框架的星标(Star)数、仓库复制Fork)数、讨论帖(Issue)数和代码提交请求(Pull Request)数。这四个指标大致反映了一个框架的受欢迎程度和活跃程度其中, TensorFlow在三项中都具有明显的优势。 PyTorch的代码提交请求数排第一,说明它也是一个非常活跃的有着众多用户的框架。

1-1.png
1-2.png

表1中列出了这些框架的其他比较项,包括主要维护团体、框架支持的前端语言支持的操作系统平台、支持的操作系统平台、编程模式以及现阶段辅助工具生态等。下面我们从这些角度分别计论各个框架的情况。


表1 主流开源编程框架的对比

1 | TensorFlow

TensorFlow是一个规模较大的框架,在开源之前就已经在 Google内部得到了广泛的应用。开源后很快成为社区最受欢迎的框架之一。

TensorFlow功能强大,覆盖面广,支持众多常见的前端语言,覆盖云端到终端几乎所有的平台,同时也有众多的辅助工具来支持多平台多设备使用。例如,可视化计算图工具 Tensor Board既可以让用户查看计算图结构,也能让用户追踪训练过程,如Loss收敛情况等; TFLite则可以将训练好的模型导出为终端设备使用的轻量模型,方便手机或嵌入式设备使用</u>;Profiler则是性能剖析工具,可以帮助使用者分析和优化模型性能。

TensorFlow社区力量强大,文档完善,对初学者较为友好从图1中我们就能看到, Tensor Flow的使用者非常多,这些用户在 Gthub、 Stackoverflo 、CSON、 Merium等社区网站留下了大量的教程和使用经验,初学者很容易就能查到之前遇到的问题此外, TensorFlow自身也提供了丰富的教程和开源模型(tensorflow/models),帮助大家更好地学习和使用。

当然, TensorFlow也有很多广为使用者病的缺点,如API较为混乱、声明式编程不方便调试等。因此,在最新版的 TensorFlow 2.0中对于众多API做了系统性梳理掉了一些余重复的API,更重要的是, TensorFlow在2.0版本中默认采用适合快速开发和调试的命令式编程(即Eager模式),不需启动会话(Session)即可逐条执行程序员编写的命令,得到结果。 Eager模式还高度集成了更高层 Keras API,使用起来更加方便。当然命令式编程无法对于整个计算图做全局优化,执行速度较低,因此,在大规模部署的生产环境下,建议采用基于 Session的声明式编程,通过提供 两种编程模式,TensorFlow 2.0既能满足学术研究人员即写即用、方便调试、快速验证想法的灵活性需求,又能继续提供工业界大型项目所需的高效性和高可靠性

2 | PyTorch

PyTorch目前主要由 Facebook维护。相对于TensorFlow, PyTorch显得小而灵活。

PyTorch前端支持 Python和C++,尤其是对 Python用户非常友好。 PyTorch支持的自动求导和 TensorFlow不同,后者在添加新算子时需要自己实现求导函数,但 PyTorch不用。此外, PyTorch的模块化编程方法对复用网络架构特别适用,可以极大提高开发效率, PyTorch一直支持动态图命令式的编程模式,虽然牺牲了静态图优化的运行效率优势,但更加好用(比如在复杂循环网络)和方便调试(比如直接使用 Python的调试工具pdb),因此广受欢迎 PyTorch的辅助工具也非常多,除了自身提供的可视化工具 Torch Vision之外也支持模型在 Tensor Board上的可视化,同时也提供了丰富的模型库。随着使用人数的增加,社区内容也日趋完善。基于上述优点,在小规模的使用场景和学术界, PyTorch使用数量迅猛增长,有赶超TensorFlow的趋势。

此外我们也看到,目前 Py Torch无法全面支持各种平台,这意味着训练好的模型不能很方便地转移到其他平台或设备上使用,因此对生产环境来说, PyTorch目前还不是首选。

3| MXNet

MXNet是一款针对效率和灵活性而设计的深度学习框架。它和 TensorFlow一样支持声明式编程,也支持命令式编程(MXNet Gluon),用户可以混用声明式编程和命令式编程以最大化开发效率。 MXNet支持的语言很丰富,如R、 Julia和Go等 MXNet的总体框架类似 TensorFlow,但是后端代码比 TensorFlow轻量得多 MXNet基于动态依赖调度器,并且能够高效支持多设备和多机器。

4| Caffe
Calfe是出现最早的框架之一,最开始由加州大学伯克利分校所开发,后由开区维护
相对于 TensorFlow的计算图以算子为单位, Caffe的计算以层(layer)为粒度,对应神经网络中的层, Caffe为每一层给出了前向实现和反向实现,并采用 prototxt格式表示网络结构的层次堆叠,相对于 TensorBoard里呈现的分散算子,如果 TensorFlow在实现网络时没有很好地组织命名空间,则很难看出网络结构和功能, 而Caffe的 prototxt就非直观和简单 。Caffe的这些特性,使得使用者能很快掌握深度学习基础算法的内部本质和实现方法,并由此开发出自己的 Caffe变种,完成自定义功能。
然而,正是由于它使用层的粒度来描述网络,缺少灵活性、扩展性和复用性,同时,由于 Caffe早期是为卷积神经网络设计的,在功能上有很多局限性,对RNN类的网络支持很有限,同时也不支持多设备和多机器的使用场景,虽然早期的 Caffe版本已经不再维护更新了,但 Caffe依旧能够为深度学习的初学者提供一个了解深度学习计算本质(而不仅是停留在使用各种高层API上)的工具和平台。

5 | PaddlePaddle

飞桨PaddlePaddle是百度自主研发的开源深度学习框架。飞桨PaddlePaddle是集深度学习核心框架、工具组件和服务平台于一体的技术领先、功能完备的开源深度学习平台,拥有活跃的开发者社区。

作为领先的核心框架,飞桨PaddlePaddle具备简单、易用、高效、安全的特点,能满足模型开发、训练、部署的全流程需求。

飞桨PaddlePaddle拥有丰富的工具组件。飞桨PaddlePaddle开放了PaddleHub、PARL、AutoDL Design、VisualDL等一系列深度学习工具组件。

飞桨PaddlePaddle具备专业的服务平台——AI Studio和EasyDL,可以满足不同层次的深度学习开发的需求。

PaddlePaddle源于业界顶尖实践,拥有强大的超大规模并行深度学习处理能力,它具备4大工业级特点。

  • 提供高性价比的多机GPU参数服务器训练方法。
  • 全面支持大规模异构计算集群。
  • 同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练。
  • 支持千亿规模参数、数百个节点的高效并行训练。

PaddlePaddle在速度上追求极致的体验,推出了全流程、全类型的高性能部署和集成方案,在计算性能与易用性上具备3大特性。

  • 支持千亿规模参数、数百个节点的高效并行训练。
  • 提供性能全面领先的底层加速库和推理引擎—Paddle Mobile和Paddle Serving。
  • 通过两行Python代码就可调用的自动化模型压缩库PaddleSlim。

图3 展示了飞桨PaddlePaddle的生态结构。

图3 飞桨PaddlePaddle的生态结构.jpg

|写在最后

对主流的编程框架,包括 TensorFlow PyTorch、 Caffe、mxet、PaddlePaddle等,从多个角度进行了对比。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342