【.com原稿】1.如上所述,5G可以说是2019年上半年最闪亮的“明星”,美方不惜重金阻挠中国5G技术出海。5G之所以重要,是因为它将与AI技术、大数据技术共同作用,颠覆我们现有的生活模式,让智能成为现实。在智能世界中,5G技术提供高速(>1Gbps)、低时延(1ms)的基础网络服务,形成物联网(IoT,InternetofThings),大数据技术提供物联网产生的海量数据。万物互联。人工智能技术提供了整个智能生态系统的计算和决策能力。深度学习技术是一种非常高效的实现方法。10年来,它多次被学术界和工业界证明是“灵丹妙药”。依靠各种模型和算法可以比人类更准确、更快地做出判断。图1智能时代的技术需要高效的模型来实现应用。深度学习框架是实现“丹药”的“炼金炉”。通过对深度学习算法的模块化封装,可以快速构建模型、输入数据、执行各种模型。训练、调优、测试和部署,为整个智能生态提供预测、决策等核心推理能力。2、深度学习框架排行榜得益于各家公司在深度学习框架发展初期打造的开源生态模型,更好地推动技术发展。在深度学习框架百花齐放、百家争鸣的今天,快速推动着深度技术在行业应用落地。当然,好的“药”也要有好的“炉”。下面我们将介绍当前主流深度学习框架的发展现状、各自的特点和适合的场景等,希望能帮助大家找到合适的“炉子”。下面将从行业影响力、资源投入、开发生态、文档体系、模型全面性、行业实践、开源流行度(GitHub)7个方面来评价各个框架的发展现状。结果如下图所示(供参考)。图2前十大深度学习框架的发展水平(caffe、caffe2单独统计)。我们来看一下GitHub对应的一些数据。Pytorch、TensorFlow、PaddlePaddle这两年都保持着较快的发展速度,尤其是Pytorch的star数量有所增加。3次,受到了很多关注。Caffe&Caffe2、Theano、CNTK等虽然已经停止迭代,但是得益于行业的快速发展,GitHubstar数还是有一定的增长。图3深度学习前十框架GitHub数据变化(caffe、caffe2单独统计)图4深度学习框架前十增长速度(caffe、caffe2单独统计)热门深度学习框架。Airbnb、DeepMind、Intel、Nvidia、Twitter和许多其他知名公司都在使用它。Google自开源TensorFlow以来,投入了大量的人力、物力、财力,逐步构建了一个AI生态系统,从基础研究、AI教育到应用落地,而这个生态系统的核心就是TensorFlow。如前所述,深度学习是AIoT时代的基石。毫无疑问,谷歌依然站在时代转折点的前沿。TensorFlow提供全面的服务,无论是Python、C++、JAVA、Go,甚至是JavaScript、Julia、C#,几乎所有的开发者都可以从熟悉的语言开始深度学习之旅。TensorFlow构建了活跃的社区和完备的文档体系,大大降低了我们的学习成本。但社区和文档以英文为主,中文支持有待加强。此外,TensorFlow有非常直观的计算图可视化。该模型可以快速部署到各种硬件机器上,从高性能计算机到移动设备,再到更小更轻的智能终端。TensorFlow的缺点多年来一直为人诟病。与Pytorch、Caffe等框架相比,TensorFlow的运算速度可以说是“牛拉的大车”。而且,通过它搭建一个深度学习框架,需要的代码比较复杂,还需要忍受多次重复构建静态图。但总的来说,对于英语阅读和英语交流没有障碍的同学,TensorFlow仍然是深度学习框架的首选方案。PytorchPytorch是一个深度学习库,基于用Lua编写的Torch库的Python实现。它由Facebook创建,目前广泛应用于学术界和工业界。随着Caffe2项目融入Pytorch,Pytorch开始威胁到TensorFlow在深度学习应用框架领域的地位。Pytorch官网的标题简洁地描述了Pytorch的特点和努力的方向。Pytorch在学术界有很大的优势。除了谷歌的文章,大部分使用深度学习模型的文章都是通过Pytorch进行实验的。原因是Pytorch库足够简单,可以兼容NumPy、SciPy等Seam连接,而且基于tensor的GPU加速非常强大。第二个是训练网络迭代的核心——梯度计算,Autograd架构(参考自Chainer),基于Pytorch,我们可以动态设计网络,无需笨拙地定义静态网络图,以便进行计算。如果要修改网络的任务,则必须从头开始构建静态图。基于简单灵活的设计,Pytorch迅速成为学术界的主流深度学习框架。Pytorch的劣势在于模型部署。由于听说过它的部署困难,所以我从来没有尝试过部署Pytorch模型。我一般在Pytorch中快速测试新模型,确认效果不错后再去“现成”的TensorFlow模型。做简单的优化。但是现在,如果你对TensorFlow和Pytorch有更深入的了解,你会发现它们越来越相似。TF加入了动态图架构,Pytorch致力于让其在业界更易用。打开各自的官网,你也会发现文档风格越来越相似了。PaddlePaddlePaddlePaddle是百度自主研发的开源深度学习平台。最近,它有了一个中文名字,飞桨。官网的截图也很有意思,很多人都在划水。飞桨刚出的时候,并不看好。感觉比较像谷歌有,百度也有口音。但是最近,我正在做一个关于语义识别的项目。其他框架支持中文的模型很少。时间紧张,没有时间进行大范围的训练,就尝试了飞桨。其中基于BERT的ERNIE模型取得了不错的效果,部署起来也不麻烦。我个人认为可以将模型库中的经典模型应用到自己的问题中,作为基线模型的快速测试,然后慢慢调优以追求更好的效果。从模型库中找到适合自己的模型,按照实用教程一步步操作。这个过程相对简单。遇到的问题可以在GitHub问题中找到。虽然没有TF那么活跃,但是支援也很及时。.一直在官网找模型,发现官网又更新了。偷了一张图,来体验一下支持的机型。图5PaddlePaddle模型库(来源:百度PaddlePaddle官网)在功能上,PaddlePaddle同时支持动态图和静态图,可以方便模型调试和部署,非常适合业务应用的实现。Paddle还已经支持数百个节点的高效并行训练。可以说这两年深度学习领域得到了大规模的应用,各种框架也在飞速发展,但是百度的飞桨似乎是现阶段发展较快的框架,甚至发展得更快。快速AI开发生态。目前以上三个框架可以说发展的比较快,还在稳定的更新维护中。在功能上,每个框架都变得“更长更相似”,三个框架依然各有特色。如何选择取决于你自己的目标。下面简要介绍其他一些主要框架。KerasKeras的出现大大降低了深度学习应用的门槛。通过Keras的API,几行代码就可以搭建一个网络模型。曾几何时,Keras+Theano和Keras+CNTK的模型深受开发者的喜爱。目前Keras的整个架构已经被封装到TensorFlow中,Keras的所有东西都可以在TF.keras中完成。Deeplearning4jDeeplearning4j,顾名思义,用JAVA编写,兼容任何JVM语言,如Scala、Clojure或Kotlin,基础计算模块用C、C++和CUDA开发。基于此,DL4J非常适合Spark和Hadoop生态,在多卡GPU上也有不错的表现。与TF、Pytorch和Paddle相比,DL4J的文档和社区体系并不完善,本身不支持Python,但有高阶KerasAPI支持,上手难度略高,其应用示例也有有限的。MxnetMxnet可以说成名很早,发展一直不温不火。现在在Apache项目下孵化。目前背靠企业的TensorFlow、Pytorch、FlyingPaddle依托广泛的应用场景走上了AI发展的快车道,而Mxnet最缺乏的可能是大厂应用场景的落地.Caffe&Caffe2Caffe是一个以表现力、速度和模块化为设计理念的框架。它是由贾扬清和伯克利人工智能实验室开发的。支持C、C++、Python等接口和命令行接口。它以其速度和可迁移性以及在卷积神经网络建模中的适用性而闻名。使用Caffe库的好处是可以访问深度网络存储库“CaffeModelZoo”中的可用网络,这些网络已经过预训练并可以使用。Caffe是曾经强大的视觉识别深度学习网络。但是Caffe不支持细粒度的网络层,在架构上,对递归网络和语言建模的整体支持比较差,复杂的层类型必须用低级语言构建,使用门槛高。Caffe2是Facebook组织开发的深度学习模型。虽然使用门槛没有Caffe高,但还是让不那么看重性能的开发者望而却步,很快被纳入Pytorch项目。不过Caffe从2017年开始就没有更新了,新项目也很少见,曾经名噪一时的框架也走到了尽头。ChainerChainer是在NumPy、CuPy等库的基础上纯Python开发的。它的创新之处在于网络不再是一个静态的图,而是一套可以灵活定义、快速运行的深度学习架构。同时可以在大型系统上运行并保持高性能,Pytorch的设计灵感部分借鉴了Chainer。TheanoTheano是深度学习框架的鼻祖。它由YoshuaBengio和蒙特利尔大学的研究团队于2007年创建,是第一个被广泛使用的深度学习框架。Theano是一个速度更快、功能强大的Python库。它可以高效地进行数值表达和计算。可以说是NumPy矩阵表达式到张量表达式的飞跃,为后来的深度学习框架提供了范本。遗憾的是,Theano团队已经停止更新项目,深度学习应用框架的开发已经进入依赖业界大规模应用的阶段。CNTKCNTK是微软开发的深度学习框架,是商业级分布式深度学习的开源工具包。它将神经网络描述为通过有向图进行的一系列计算步骤,支持DNN、CNN和自由组合的模型。今年,CNTK团队还宣布不再更新项目,令人唏嘘。总的来说,每个公司的深度学习框架都有自己的优缺点。重要的是找到适合自己团队并能快速匹配团队的技术栈,快速实验,将深度学习技术应用的商业价值最大化。4.如何选择?那么如何在众多框架中进行选择呢?我推荐这3个框架:TensorFlow、Pytorch和Paddle。其他框架要么投资资源有限,要么不再维护。其实这三个框架大家应该都或多或少的了解过,可以根据自己的实际情况快速选型。如果你是深度学习新手,以学习为目标的开发者,我推荐从TensorFlow和FlyingPaddle入手。至少目前,谷歌和百度正在全力打造这两个平台。它们不再只是一个深度学习平台。它是一个框架,它是一个AI发展生态。提供从基础视频课程、完整文档体系到项目开放实施的统一服务。还有一点,百度飞桨的基础文档还是挺详细的。不仅包括代码实现和数据流转过程的教程,还包括详细的算法原理,方便那些对相应模型不太了解的同学带来极大的好处。有足够精力学习的同学,我建议可以学习一下这三个框架。如果是学术用途,建议从Pytorch入手。毕竟学术研究要关注前沿,多看文章,复现文章中模型的效果。选择大家都用的,可以节省不必要的时间和成本,专注于优化。该模型增强了模型的效果。如果你想开箱即用,想快速将深度学习技术应用到自己的场景中,我推荐选择FlyingPaddle。FlyingPaddle中有大量的实战案例,应用到相应场景后基本可以迭代。而且,在NLP领域,各种语言都需要进行预处理。毫无疑问,对中文支持较好的是飞桨,比如ERNIE,它挖掘海量中文数据,对先验语义知识进行建模,增强语义表达。该能力可以作为NLP和NLU应用的基础,服务于不同的场景。在几个招聘网站上发JD,也可以帮助你明确方向,供参考。5.我们的未来会更好。感谢互联网文化,感谢开源文化,技术才能以指数级的速度发展,我们也应该感谢那些在时代转折点引领潮流的人。没有谷歌、百度等公司不遗余力地将新技术应用到各行各业,就没有科技的飞速发展,就没有中国美好生活模式的改变。人工智能技术的大众化是智能时代发展的催化剂。我们应用深度学习技术,从原理到框架,再应用平台工具在所有场景下实现。这是未来的发展趋势。得益于5G技术的发展,相信在不久的将来,我们将实现万物互联。深度学习是AIoT时代的关键,现有各平台的实际落地项目为我们提供了产业落地的实现路径。可以说星星之火逐渐成为燎原之势。此外,发展我国自己的AI发展生态也同样重要。考虑到最近发生的“华为事件”,有必要做好准备。最后,我想说的是,框架和平台只是给我们提供了工具。我们必须明确目标,找到合适的场景,推动应用落地业务,实现业务价值,才有核心竞争力。6.参考https://www.techspot.com/article/1582-state-of-5g-wireless/https://www.tensorflow.org/https://pytorch.org/https://www.paddlepaddle.org.cn/https://deeplearning4j.org/https://chainer.org/https://mxnet.incubator.apache.org/https://keras.io/https://github.com/Theano/Theanohttps://docs.microsoft.com/en-us/cognitive-toolkit/https://binaryinformatics.com/pytorch-vs-tensorflow/https://www.springboard.com/blog/deep-learning-frameworks/[原创稿件,合作站点转载请注明原作者及出处为.com]
