分享 :深度学习框架对照,我该选择哪一个?

2020-09-09 网络
浏览
[科技新闻]分享 :深度学习框架对照,我该选择哪一个?

原标题:分享 :深度进修框架比较,我该挑选哪个?

近年来,深度进修在许多机械进修范畴都有着异常精彩的表现,在图象辨认、语音辨认、自然言语处置惩罚、机械人、收集广告投放、医学自动诊断和金融等范畴有着普遍运用。面临繁多的运用场景,深度进修框架有助于建模者节约大批而烦琐的外围事变,更聚焦营业场景和模子设想自身。

运用深度进修框架完成模子构建有以下两个上风:

  • 节约编写大批底层代码的精神: 屏障底层完成,用户只需关注模子的逻辑构造。同时,深度进修东西简化了盘算,下降了深度进修入门门坎。
  • 省去了布置和适配环境的懊恼: 具有天真的移植性,可将代码布置到CPU/GPU/挪动端上,挑选具有分布式机能的深度进修东西会使模子演习更高效。

因此,在入手下手深度进修项目之前,挑选一个适宜的框架是异常主要的。如今,环球最为盛行的深度进修框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch等。下面我们就来引见一下如今主流的、以及一些刚开源但表现异常优秀的深度进修框架的各自特征,愿望能够协助人人在进修事变时作出适宜的挑选。

Theano

作为深度进修框架的祖师爷,Theano 的降生为人类叩开了新时代人工智能的大门。Theano 的开发始于 2007 年的蒙特利尔大学,初期雏形由两位传奇人物 Yoshua Bengio 和 Ian Goodfellow 配合打造,并于开源社区中逐步壮大。

Theano 基于 Python,是一个善于处置惩罚多维数组的库,非常合适与别的深度进修库结合起来举行数据探究。它设想的初志是为了实行深度进修中大局限神经收集算法的运算。实在,Theano 能够被更好地明白为一个数学表达式的编译器: 用标记式言语定义你想要的结果,该框架会对你的程序举行编译,在 GPU 或 CPU 中高效运转。

Theano 的出现为人工智能在新时代的生长打下了壮大的基本,在过去的很长一段时候内,Theano 都是深度进修开发与研讨的行业标准。今后也有大批基于 Theano 的开源深度进修库被开发出来,包括 Keras、Lasagne 和 Blocks,以至后来火遍环球的 TensorFlow 也有许多与 Theano 类似的功用。

跟着更多优秀的深度进修开源框架连续出现,Theano 逐步淡出了人们的视野。2013 年,Theano 创始者之一 Ian Goodfellow 到场 Google 开发 TensorFlow,标志着 Theano 正式退出汗青舞台。如今唯一部份研讨范畴的学者会运用 Theano 举行一些学术研讨。

Caffe&Caffe2

Caffe 是一个优先斟酌表达、速率和模块化来设想的框架,它由贾扬清和伯克利人工智能实验室研讨开发。支撑 C、C 、Python等接口以及命令行接口。它以速率和可转性以及在卷积神经收集建模中的适用性而著名。Caffe能够天天处置惩罚凌驾六千万张图象,只需单个NVIDIA K40 GPU,个中 1毫秒/图象用于推理,4毫秒/图象用于进修。

运用Caffe库的长处是从深度收集存储库"Caffe 模子Zoo"接见可用收集,这些收集经由预先培训,能够马上运用。经由历程Caffe Model Zoo框架可接见用于处理深度进修问题的预演习收集、模子和权重。这些模子可完成简朴的递归、大局限视觉分类、用于图象类似性的SiameSE收集、语音和机械人运用等。

不过,Caffe 不支撑邃密粒度收集层,给定系统构造,对轮回收集和言语建模的团体支撑相当差,必须用初级言语竖立庞杂的层范例,运用门坎很高。Caffe2是由Facebook构造开发的深度进修模子,虽然运用门坎不像Caffe那样高,但仍然让不那末注重机能的开发者望而生畏。别的,Caffe2继承了Caffe的长处,在速率上使人印象深切。Facebook 人工智能实验室与运用机械进修团队合作,应用Caffe2大幅加快机械视觉使命的模子演习历程,仅需 1 小时就演习完ImageNet 如许超大局限的数据集。2018 年 3 月尾,Facebook 将 Caffe2 并入 PyTorch,一度引起轰动。

Tensorflow

TensorFlow 是 Google 于 2015 年开源的深度进修框架。TensorFlow前身是谷歌的神经收集算法库 DistBelief,由谷歌人工智能团队谷歌大脑(Google Brain)开发和庇护,具有包括 TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud 在内的多个项目以及种种运用程序接口。

TensorFlow 让用户能够疾速设想深度进修收集,将底层细节举行笼统,而不必消耗大批时候编写底层 CUDA 或 C 代码。TensorFlow 在许多方面具有优秀的表现,比方设想神经收集构造的代码的简约度,分布式深度进修算法的实行效力,另有布置的便利性(能够周全地支撑种种硬件和操纵系统)。

TensorFlow在很大水平上能够看做是Theano的后继者,不仅因为它们有很大一批配合的开发者,而且它们还具有邻近的设想理念,都是基于盘算图完成自动微分系统。TensorFlow 运用数据流图举行数值盘算,图中的节点代表数学运算,而图中的边则代表在这些节点之间通报的多维数组(张量)。

TensorFlow编程接口支撑Python、C 、Java、Go、R和Haskell API的alpha版本。另外,TensorFlow还可在GoogleCloud和AWS中运转。TensorFlow还支撑 Windows 7、Windows 10和Windows Server 2016。因为TensorFlow运用C Eigen库,所以库可在ARM架构上编译和优化。这也就意味着用户能够在种种效劳器和挪动装备上布置本身的演习模子,不必实行零丁的模子解码器或许加载Python诠释器。

TensorFlow构建了活泼的社区,完美的文档系统,大大下降了我们的进修本钱,不过社区和文档主要以英文为主,中文支撑有待增强。别的,TensorFlow有很直观的盘算图可视化显现。模子能够疾速的布置在种种硬件机械上,从高机能的盘算机到挪动装备,再到更小的更轻量的智能终端。

不过,关于深度进修的初学者而言,TensorFlow的进修曲线太甚峻峭,须要不停演习、探究社区并继承阅读文章来控制TensorFlow的窍门。

Keras

Keras用Python编写,能够在TensorFlow(以及CNTK和Theano)之上运转。TensorFlow的接口具有挑战性,因为它是一个初级库,新用户可能会很难明白某些完成。而Keras是一个高层的API,它为疾速实验而开发。因此,假如愿望获得疾速结果,Keras会自动处置惩罚中心使命并生成输出。Keras支撑卷积神经收集和递归神经收集,能够在CPU和GPU上无缝运转。

深度进修的初学者经常会埋怨:没法准确明白庞杂的模子。假如你是如许的用户,Keras就是你的准确挑选。 它的目标是最小化用户操纵,并使其模子真正轻易明白。Keras的出现大大下降了深度进修运用的门坎,经由历程Keras的API能够经由历程数行代码就构建一个收集模子,曾几何时,Keras Theano,Keras CNTK的情势深得开发者喜欢。如今Keras整套架构已封装进了TensorFlow,在TF.keras上能够完成Keras的一切事变。

假如你熟习Python,而且没有举行一些高等研讨或开发某种特别的神经收集,那末Keras合适你。Keras的重点更多地放在获得结果上,而不是被模子的庞杂的地方所搅扰。因此,假如有一个与图象分类或序列模子相干的项目,能够从Keras入手下手,很快便能够构建出一个事变模子。Keras也集成在TensorFlow中,因此也能够运用Tf.keras构建模子。

Pytorch

2017年1月,Facebook人工智能研讨院(FAIR)团队在GitHub上开源了PyTorch,并敏捷占据GitHub热度榜榜首。PyTorch的汗青可追溯到2002年就降生于纽约大学的Torch。 Torch运用了一种不是很群众的言语Lua作为接口。Lua简约高效,但因为其过于小众,用的人不是许多。在2017年,Torch的幕后团队推出了PyTorch。PyTorch不是简朴地封装Lua Torch供应Python接口,而是对Tensor之上的一切模块举行了重构,并新增了最先进的自动求导系统,成为当下最盛行的动态图框架。

Pytorch官网的标题语简明地形貌了Pytorch的特征以及将要发力的方向。Pytorch在学术界上风很大,关于用到深度进修模子的文章,除了Google的,其他大部份都是经由历程Pytorch举行实验的,究其原因,一是Pytorch库充足简朴,跟NumPy,SciPy等能够无缝衔接,而且基于tensor的GPU加快异常给力,二是演习收集迭代的中心——梯度的盘算,Autograd架构(借鉴于Chainer),基于Pytorch,我们能够动态地设想收集,而无需愚笨地定义静态收集图,才能去举行盘算,想要对收集有使命修正,都要从头入手下手构建静态图。基于简朴,天真的设想,Pytorch疾速成为了学术界的主流深度进修框架。

Pytorch的瑕玷则是前期缺少对挪动端的支撑,因此在商用范畴的进步度不及 TensorFlow 。在 2019 年,Facebook 推出 PyTorch Mobile 框架,弥补了 PyTorch 在挪动端的不足,使得其在商用范畴的生长有望赶超 TensorFlow 。不过如今,假如轻微深切相识TensorFlow和Pytorch,就会发明他们愈来愈像,TF到场了动态图架构,Pytorch致力于其在工业界更加易用。翻开各自的官网,你也会发明文档作风也更加的类似。

PyTorch Lightning

PyTorch异常易于运用,能够构建庞杂的AI模子。然则一旦研讨变得庞杂,而且将诸如多GPU演习,16位精度和TPU演习之类的东西混在一同,用户很可能会引入毛病。PyTorch Lightning就可以够完全处理这个问题。Lightning会构建你的PyTorch代码,以便能够笼统出演习的细节。这使得AI研讨可扩大且可疾速迭代。这个项目在GitHub上斩获了6.6k星。

,科技新闻实时报道,

Lightning将DL/ML代码分为三种范例:研讨代码、工程代码、非必要代码。运用Lightning就只须要专注于研讨代码,不须要写一大堆的 .cuda 和 .to(device),Lightning会帮你自动处置惩罚。假如要新建一个tensor,能够运用type_as来使得新tensor处于雷同的处置惩罚器上。另外,它会将工程代码参数化,削减这部份代码会使得研讨代码更加清楚,团体也更加简约。

PyTorch Lightning 的建立者WilliamFalcon,如今在纽约大学的人工智能专业攻读博士学位,并在《福布斯》担负AI特约作者。他示意,PyTorch Lightning是为处置AI研讨的专业研讨职员和博士生建立的。该框架被设想为具有极强的可扩大性,同时又使最先进的AI研讨手艺(比方TPU演习)变得眇乎小哉。

PaddlePaddle

PaddlePaddle 的前身是百度于 2013 年自立研发的深度进修平台Paddle,且一向为百度内部工程师研发运用。 PaddlePaddle 在深度进修框架方面,覆盖了搜刮、图象辨认、语音语义辨认明白、情绪剖析、机械翻译、用户画像引荐等多范畴的营业和手艺。在 2016 年的百度天下大会上,前百度首席科学家 Andrew Ng初次宣告将百度深度进修平台对外开放,定名 PaddlePaddle,中文译名“飞桨”。

PaddlePaddle同时支撑浓密参数和希罕参数场景的超大局限深度进修并行演习,支撑千亿局限参数、数百个几点的高效并行演习,也是最早供应云云壮大的深度进修并行手艺的深度进修框架。PaddlePaddle具有壮大的多端布置才能,支撑效劳器端、挪动端等多种异构硬件装备的高速推理,展望机能有显著上风。PaddlePaddle已完成了API的稳固和向后兼容,具有完美的中英双语运用文档,形成了易学易用、简约高效的手艺特征。

2019 年,百度还推出了多平台高机能深度进修引擎Paddle Lite(Paddle Mobile 的升级版),为 PaddlePaddle 生态完美了挪动端的支撑。

Deeplearning4j

DL4J 是由来自旧金山和东京的一群开源孝敬者合作开发的。2014 岁终,他们将其宣布为 Apache 2.0 许可证下的开源框架。主如果作为一种平台来运用,经由历程这类平台来布置商用深度进修算法。创立于 2014 年的 Skymind 是 DL4J 的贸易支撑机构。2017 年 10 月,Skymind 到场了 Eclipse 基金会,而且将 DL4J 孝敬给开源 Java Enterprise Edition 库生态系统。

DL4J是为java和jvm编写的开源深度进修库,支撑种种深度进修模子。 它具有为 Java 和 Scala 言语编写的分布式深度进修库,而且内置集成了 Apache Hadoop 和 Spark。Deeplearning4j有助于弥合运用Python 言语的数据科学家和运用 Java 言语的企业开发职员之间的鸿沟,从而简化了在企业大数据运用程序中布置深度进修的历程。

DL4J主要有三大上风:

1. Python 可与 Java、Scala、Clojure 和 Kotlin 完成互操纵性。Python为数据科学家所普遍采纳,而大数据编程职员则在 Hadoop 和 Spark 上运用 Java 或 Scala 来开展事变。DL4J 填补了之间的鸿沟,开发职员因此能够在 Python 与 JVM 言语(比方,Java、Scala、Clojure 和 Kotlin)之间迁徙。经由历程运用 Keras API,DL4J 支撑从其他框架(比方,TensorFlow、Caffe、Theano 和 CNTK)迁徙深度进修模子。以至有人发起将 DL4J 作为 Keras 官方孝敬的后端之一。

2. 分布式处置惩罚。DL4J 可在最新分布式盘算平台(比方,Hadoop 和 Spark)上运转,而且可运用分布式 CPU 或 GPU 完成加快。经由历程运用多个 GPU,DL4J 能够完成与 Caffe 相媲美的机能。DL4J 也能够在许多云盘算平台上运转。

3. 并行处置惩罚。DL4J 包括单线程选项和分布式多线程选项。这类削减迭代次数的要领可在集群中并行演习多个神经收集。因此,DL4J 异常合适运用微效劳架构来设想运用程序。

CNTK

2015年8月,微软公司在CodePlex上宣告由微软研讨院开发的盘算收集东西集CNTK将开源。5个月后,2016年1月25日,微软公司在他们的GitHub堆栈上正式开源了CNTK。早在2014年,在微软公司内部,黄学东博士和他的团队正在对盘算机能够明白语音的才能举行革新,但当时运用的东西显著拖慢了他们的进度。因而,一组由志愿者构成的开发团队设想设想了他们本身的处理方案,终究降生了CNTK。

依据微软开发者的形貌,CNTK的机能比Caffe、Theano、TensoFlow等主流东西都要强。CNTK支撑CPU和GPU情势,和TensorFlow/Theano一样,它把神经收集形貌成一个盘算图的构造,叶子节点代表输入或许收集参数,其他节点代表盘算步骤。CNTK 是一个异常壮大的命令行系统,能够建立神经收集展望系统。

CNTK 最初是出于在 Microsoft 内部运用的目标而开发的,一入手下手以至没有Python接口,而是运用了一种险些没什么人用的言语开发的,而且文档有些艰涩难明,推行不是很给力,致使如今用户比较少。但就框架自身的质量而言,CNTK表现得比较平衡,没有显著的短板,而且在语音范畴结果比较突出。

MindSpore

MindSpore是华为在本年3月召开的开发者大会上正式开源,MindSpore是一款支撑端边云全场景的深度进修演习推理框架,当前主要运用于盘算机视觉、自然言语处置惩罚等AI范畴,旨在为数据科学家和算法工程师供应设想友爱、运转高效的开发体验,供应昇腾AI处置惩罚器原生支撑及软硬件协同优化。

MindSpore的特征是能够显著削减演习时候和本钱(开发态)、以较少的资本和最高能效比运转(运转态),同时顺应包括端、边沿与云的全场景(布置态),强调了软硬件谐和及全场景布置的才能。因此,运用MindSpore的上风能够总结为四点:

  • 简朴的开发体验。 协助开发者完成收集自动切分,只需串行表达就可以完成并行演习,下降门坎,简化开发流程;
  • 天真的调试情势。 具有演习历程静态实行和动态调试才能,开发者经由历程变动一行代码即可切换情势,疾速在线定位问题;
  • 充分发挥硬件潜能。 最好婚配昇腾处置惩罚器,最大水平地发挥硬件才能,协助开发者收缩演习时候,提拔推理机能;
  • 全场景疾速布置 。支撑云、边沿和手机上的疾速布置,完成更好的资本应用和隐私庇护,让开发者专注于AI运用的制造。

MegEngine(天元)

MegEngine(天元)是本年3月正式开源的工业级深度进修框架,绝代也成为国内第一家开源AI框架的AI企业。天元可协助开发者用户借助友爱的编程接口,举行大局限深度进修模子演习和布置。架构上天元详细分为盘算接口、图示意、优化与编译、运转时治理和盘算内核五层,可极大简化算法开发流程,完成了模子演习速率和精度的无损迁徙,支撑消息态的夹杂编程和模子导入,内置高机能盘算机视觉算子,特别适用于大模子算法演习。

若说谷歌TensorFlow采纳利于布置的静态图更适用于工业界,而Facebook PyTorch采纳天真且轻易调试的动态图更合适学术科研。那末旷视的天元则在兼具了两边特征的历程当中,找到了一个的平衡点。天元是一个演习和推理在同一个框架、同一个系统内完全支撑的设想。基于这些立异性的框架设想,天元深度进修框架具有推理演习一体化、消息合一、兼容并包和天真高效四大上风:

  • 演习推理: 一体化天元既能够支撑开发者举行算法演习,同时其演习获得的模子,还能够直接用于产物的推理和封装,无需举行过剩的模子转换。这极大地简化了算法开发流程,完成速率和精度的无损迁徙。与此同时,天元在模子布置时还能够自动优化模子,自动协助开发者删除冗余代码。
  • 消息合一: 天元将动态图的简朴天真,与静态图的高机能上风举行整合,能在充分应用动态图模子演习上风的同时,经由历程消息态一键转换功用,以静态图的情势完成生产和布置。另外,天元还支撑消息态的夹杂编程,进一步进步其天真性。
  • 兼容并包: 天元布置了Pythonic的API和PyTorchModule功用,支撑模子直接导入,进一步下降框架迁徙的入门门坎和进修本钱。同时,它内置高机能盘算机视觉算子和算法,能够深度优化盘算机视觉相干模子演习和运用。
  • 天真高效: 在布置方面,天元具有多平台多装备顺应才能,其内置算子能够在推理或生产环境中充分应用多核上风,天真挪用装备算力,非常适用于大模子算法演习。

3月,旷视推出的天元是Alpha版本,个中包括旷视前期整顿的代码和关键步骤。本年6月旷视推出了Beta版本,添加对ARM系列CPU的支撑,以及更多加快芯片的支撑。而天元的正式版本将于本年9月宣布,除了添加对主流盘算装备的支撑外,还将升级其动态盘算才能,进一步优化演习推理全流程的运用体验。与此同时,旷视天元已在GitHub和国内新一代人工智能开源开放社区OpenI上同步开源。

Jittor(计图)

Jittor 出自清华大学,开发团队来自清华大学盘算机系图形学实验室,牵头者是清华大学盘算机系胡事民传授。 Jittor 是国内第一个由高校开源的深度进修框架,同时也是继 Theano、Caffe 以后,又一个由高校主导的框架。

与主流的深度进修框架TensorFlow、Pytorch差别,Jittor是一个完全基于动态编译(Just-in-time)、运用元算子和一致盘算图的深度进修框架。Jittor 前端言语为 Python,运用了模块化的设想,类似于 PyTorch、Keras;后端则运用高机能言语编写,如 CUDA、C 。元算子和 Numpy 一样易于运用,而一致盘算图则是融会了静态盘算图和动态盘算图的诸多长处,在易于运用的同时,供应高机能的优化。基于元算子开发的深度进修模子,能够被计图及时地自动优化而且运转在指定的硬件上,如 CPU、GPU。

Jittor开发团队供应了实验数据。在ImageNet数据集上,运用Resnet50模子,GPU图象分类使命机能比PyTorch比拟,提拔32%;CPU图象分类使命提拔11%。在CelebA数据集上,运用LSGAN模子,运用GPU处置惩罚图象生成使命,Jittor比PyTorch机能提拔达51%。

另外,为了轻易更多人上手Jittor,开发团队采纳了和PyTorch较为类似的模块化接口,并供应辅佐转换剧本,能够将PyTorch的模子自动转换成Jittor的模子。他们引见称,在参数保留和数据传输上,Jittor运用和PyTorch一样的 Numpy pickle 协定,所以Jittor和PyTorch的模子能够互相加载和挪用。

固然, Jittor作为一个新兴深度进修框架,在一些功用上,依旧须要延续迭代完美。比方生态的建立,以及更大局限的推行,依旧须要许多的勤奋。Jittor开发团队引见称,就如今来看,Jittor框架的模子支撑还待完美,分布式功用待完美。这也是他们下一阶段研发的重点。

总的来说,各家的深度进修框架各有所长,主要的是找到合适本身团队的,能够疾速婚配团队的手艺栈,疾速实验以期发挥深度进修手艺运用落地的贸易价值。

END

转自: 数据派THU 民众号

原创 大疆想要搅动的,可不仅仅是激光雷达市场

从技术层面上来看,大疆一直用在无人机上的视觉识别技术,很可能就是大疆在自动驾驶领域的一个核心优势技术,而这也是特斯拉在自动驾驶研发领域作为领先的部分之一。 不过关于Livox 成立(2016年)的起因,据…