当前位置: 首页 > 科技观察

PaddlePaddle深度学习开源平台:中国AI大船等大家来划

时间:2023-03-13 11:54:56 科技观察

【.com原稿】前言:说说历史十年前,在学校和老板做图像识别的时候,我不会'想不到十个。在机器学习技术如此发达的今天,人工智能的概念也开始流行起来。Gonzalez的图像处理是我们曾经在晚上阅读的经典;OpenCV和C++或MATLAB是我们唯一的工具;后来我们有了Libsvm&Liblinear;复杂的算法还需要搜索论文和各种博客。后来,我们有了Github,技术人员的武器库;我们用过Python,毕竟人生苦短;我们也开始有了Sklearn,算法人的工具箱里的工具越来越多。深度学习发展之后,类似的一幕又一次上演。我先是自己写的逆向传导,测试的时候胆战心惊,生怕自己写错了,功亏一篑。后来有了Caffe,有了Theano,有了TensorFlow,有了mxnet,有了keras的上层包,modelzoo越来越多。后来的事情大家都知道了。在这些热门平台上,研究人员和业界从大量重复性体力劳动中解脱出来,可以将智慧投入到更具创造性的研究和业务中。并取得了很多不错的成绩。回顾过去的十年,人工智能可以说从刀耕火种的农业时代到第二次工业革命时代发生了翻天覆地的变化,我们正站在一个新的黎明前。1.什么是桨桨?我们讲了很多历史,也提到了舞台上的一些正兴机器学习平台。本文介绍一个新的选择:来自百度的PaddlePaddle。Paddle(ParallelDistributedDeepLearning,并行分布式深度学习)。PaddlePaddle的本义是“用桨划水”,它的logo也是两个反派划着小船,莫名其妙的喷血……书又回到正文了。自2016年9月27日发布以来,PaddlePaddle已经面世一年多了。其前身是百度2013年自主研发的深度学习平台,由百度内部工程师开发使用。它可以被认为是类似于谷歌和Facebook的另一个工业卓越和开源的例子。这里我们不妨从全局的角度来看一组数据。一般开源项目的热度指数可以从Github上看到。PaddlePaddle数据如下(截至22年12月17日):-star(可以认为是技术人的好评)有6099人;-forks(我想基于这个Modification来做)有1599人;-commits(代码更新次数)有10073,所以一天更新几十次;-和90位贡献者(代码贡献者)。这样的关注度和更新频率,即使与现在如日中天的TensorFlow相比,虽然在整体热度上还有差距,但PaddlePaddle也正处于高速增长期。除了Github直接用脚投票,PaddlePaddle还在知乎等平台引起热议,包括架构层面和应用层面:Caffe的设计师贾扬清评价“非常优质的GPU代码”,“非常goodRNNdesign”,“设计的很干净,没有太多的抽象,比TensorFlow好多了”,“总之是个很扎实的框架,百度的开发功力还是不错的”,这也算是一个技术人之间的共识是互相遗憾。CPU/GPU的单机模式和分布式模式也是开发者关注的焦点。毕竟,由于原始参数服务器的工作,TensorFlow不能很好地支持多机CPU。除了速度快、占用内存小等特性,github的benchmark跑分中提到的这些优点也受到了开发者的关注。关于框架和功能的细节,我会在第二节挑一些比较有意思的点仔细分析。应用层是用户最关心的。在实际业务中,PaddlePaddle的使用以及使用方法。我们会在第四节公布。上面提到了很多功能和优势,但实际情况是,PaddlePaddle确实有更广泛的开发者群体需要触及,才能发挥更大的影响力和作用。所以第三节我也打算说说PaddlePaddle的缺点,第五节我会讨论这个优秀工具的发展之路。2.PaddlePaddle探索每一个成功的开源项目的秘密。文档和教程必不可少,很大程度上保证了项目的易用性,辅助深入研究,为项目的成功增色不少。当然,PaddlePaddle也是一样。它有自己的一套比较详细的辅助资料:http://www.paddlepaddle.org/从文档形式来看,相对于TensorFlow和keras的中文文档,基本都是爱好者翻译的。PaddlePaddle的文档来自百度一线工程师。有多少人感到善良和值得信赖?至于文档的内容,综合来看,一般都是很复杂的,所以我想摘取几个感兴趣的点,做个介绍:-Docker如果说docker是什么,搞的人纯算法一般不会太接触,说到virtualenv,anaconda或者winpython,应该很多人都听说过,或者自己真的在用。不管是Linux下还是Windows下,科研工具的迭代都在飞速推进(真的比游戏的更新快多了),带来的问题就是版本之间的依赖,配置问题,由此带来的问题。易于安装和使用。尤其记得Github上的opencv安装脚本有很多star。我自己是六七年前被scipy和numpy拼凑起来的。为了将时间花在更有价值的研究和业务任务上,数据和算法科学家使用它类似于虚拟化发布,这进一步方便了大家。和虚拟机的区别在于docker的使用,性能和直接安装在本机上是一样的。Paddle官网写道:“为了开发PaddlePaddle,我们需要:A.一台可以安装Linux、BSD、Windows或MacOS操作系统的电脑,B.Docker。不需要依赖任何其他软件。甚至Python和GCC都不需要,因为我们会将所有编译工具安装到Docker镜像中。”简单的说:1.下载CPU或者GPU版本的镜像:比如CPU版本是dockerpulldocker.paddlepaddle.org/paddle2.写一个适合Paddle的程序:可以参考https://github。com/PaddlePaddle/book对了,本书也可以docker方式安装,支持JupyterNotebook方式。3、运行(假设/home/work/train.py为第二步完成的程序):cd/home/workdockerrun-it-v$PWD:/workpaddlepaddle/paddle/work/train.py进入docker即可interact以同样的方式执行和调试代码也是可以接受的。-感兴趣的业务,如TensorFlow、keras,都有自己的example模块,主要有两个作用:提供demo功能,演示主要框架模块的使用;解决一些实际问题,方便部分用户直接使用。比如对于文本分类的任务,keras提供了CNN、LSTM、CNN_LSTM、imdb数据的情感识别的fastText等多种方案。它不仅演示了未使用的网络模型和组合的使用,而且还进行了细微的更改。可以在实际业务中使用。并且在图像方面,keras下minst手写数字识别对应的相关任务的demo代码比较多。PaddlePaddle自然也有类似的模块,体现在两个部分:1、上面提到的PaddlePaddle-Book提供了从线性回归到mnist的手写数字识别;从基于cnn的图像分类到NLP领域的word2vec实现(做nlp的同学肯定记得distributedrepresentationoveronehotrepresentation的优势,以及king-queen=man-woman的例子);以及“个性化推荐”、“情感分析”、“语义角色标注”、“机器翻译”等典型应用。不得不说,作为算法或机器学习的初学者,无论是通过什么平台开始以后的学习和研究,本书对业务场景的描述、算法背景和流程的介绍,以及提供的数据集,都值得一看。一个比较方便阅读的网站是:http://www.paddlepaddle.org/docs/develop/book/index.cn.html你信不信?还自带视频课堂,真是诚意满满:http://bit.baidu.com/Course/datalist/column/117.html2.模型库http://www.paddlepaddle.org/docs/develop/models/README.cn.html如果说之前是入门级的教程,那么这里模型库的作用其实就是解决(大部分)工业级的实际问题,这是我特别关注的。一共14类:词向量、RNN语言模型、CTR预测、文本分类、LTR、结构化语义模型、NER、sequence-to-sequence学习、阅读理解、自动问答、图像分类、目标检测、OCR、自动识别率。这些类别分为以下几类:NLP:词向量、RNN语言模型、文本分类、结构化语义模型、NER、sequence-to-sequencelearning、阅读理解、自动问答Image:图像分类、目标检测、OCR语音:ASRbusiness:CTR预估,LTR看到了吗?从搜索技术发展起来,在技术上积累了丰硕成果的百度,确实对NLP进行了非常深入的研究。随着业务线的扩展,图像和语音服务也取得了长足的进步(比如语音搜索、图像搜索、OCR的投资求职帮助等),至于ctr预估是其广告业务的核心,LTR它也是网络搜索等技术的命脉。当然,需要说明的是,上述分类并不完全严谨。例如,sequence-to-sequencelearning实际上可以用在ASR中。毕竟语音和文字大致就是二维的信息流,其实什么都算出来了。.既然如此,限于篇幅,我想在这篇小文章中只关注最重要的信息。所谓最重要,就是百度投入最大,产出最大,商业化的那些业务,即:LTR,CTR预估,sequence-to-sequencelearning的古诗词生成,DeepSpeech等。有了这样的信息,可以说只有一家店,没有其他分店,值得仔细研究。1.LTRhttp://www.paddlepaddle.org/docs/develop/models/ltr/README.html所谓LTR就是learningtorank,也就是百度搜索的核心价值是基于点击数据进行排名学习.举个简单的例子,当用户搜索“刘德华”这个query时,他想看到的是演员刘德华,歌手他,八卦新闻的他,还是他的照片?每个人的需求都不一样,简单的规则体系很难满足大多数人的需求。更不用说,这仍然是一个流行的查询。如果遇到那些冷门查询,能搜索到(召回)的结果不多,规则的方法也无法(准确)覆盖数千万用户的需求。于是LTR应运而生,就是为了解决这样的问题。并且,在推荐和广告的排名体系中,LTR起到了举足轻重的作用。文章还提到了pointwise、pairwise、listwise等几种不同的方法,当然没有提到pointwise标注难度更大,常用的打分方法有五种,但是复用性更好;而成对标记更困难。容易多了。此外,标签的效果也需要通过多种手段来控制。此外,用户的点击是另一种形式的(弱)注释。这些都是非常重要的知识。总的来说,PaddlePaddle在这里给出了pairwiseranknet和listwiselambdarank的具体实现。有代码,有数据集,可以看到效果。甚至您自己的数据也可以按照格式原封不动地使用。现成的模型。这样看来,LTR其实并不是大公司的专属。垂直行业做搜索推荐的团队非常多。在对抗规则的同时,你确实可以试试这个LTR方案,解放人力,获得更好的成绩。2、CTR预估http://www.paddlepaddle.org/docs/develop/models/ctr/README.cn.htmlCTR是click-throughrate的缩写,CTR预估就是点击率预估,又是一个例子百度技术。一个大核心。场景是这样的:百度、腾讯、阿里、今日头条等本质上都是广告公司(腾讯游戏除外)。通过分析用户行为,展示能够满足用户需求的信息是广告的本质,也是CTR预估的目的。也就是说,优化用户的点击率是这些公司的目标,因为只有用户点击了广告,才意味着广告信息与用户的需求相匹配;只有当用户点击广告时,公司才能盈利。更不用说广告业所涉及的专业知识和技术之广泛。光是算法就包括了搜索、排序、反作弊、用户画像、NLP等等,其中的瑰宝就是CTR预估。最早的CTR估算是基于逻辑回归。对所有特征进行分割组合,得到高维稀疏特征,然后与LR并行求解,得到CTR预估。特征工程团队当时在百度应该有几十个人吧。LR的优势在于可解释性、容易并行化等。文中也提到DNN从解决某些模块的预测逐渐发展到继续发挥更大作用的阶段。这里的代码展示了wide&deep学习模型的实现,结合了DNN适合学习特征和LR适合大规模稀疏特征的优点。还是有数据可以用来做实验的,也可以按照格式准备数据,为自己的业务服务。3.古诗词生成http://www.paddlepaddle.org/docs/develop/models/generate_chinese_poetry/README.html这是一件比较有意思的事情,本来是百度内部hackathon的一个项目。所谓看图写诗,在手机百度上似乎已经商业化了。是比AlphaGo更早的AI项目展示。它结合图像识别提取图像信息,结合nlp技术建模生成古诗词。不知道当时有没有打算用lstm,现在用lstm来做这个已经很成熟了。国外的一些同行不忍看到《冰与火之歌》的寂寞,用这个方案生成了一卷关于***的故事。我们华夏子孙也可以尝试创作古诗词。随便唬人是可以的。4.DeepSpeechhttps://github.com/PaddlePaddle/DeepSpeech当DeepSpeech系列论文出来的时候,还是让语音同行比较兴奋。做语音识别或者ASR是一个比较高的门槛。需要收集大量的语料,需要使用大型机器进行训练,只有非常专业的人才才能做到。小作坊还是比较难的。http://proceedings.mlr.press/v48/amodei16.pdf对整体结构和效果有很好的讨论。搞算法特别是搞深度学习的我们都知道,一个词就是炼金术,好的架构和方法往往出自大公司,也有上面提到的原因。能够一窥论文的奥秘,看到具体的实现,还是一件很开心的事情。-命令行方法http://www.paddlepaddle.org/docs/develop/documentation/zh/howto/usage/cmd_parameter/index_cn.html可以看到,提供了很多灵活的命令行控制参数:详细包括数量线程数、机器数、GPU或CPU模式、轮数、是否批处理、beamsearch方法、异步或同步、参数稀疏性检查、随机数方法等。当然直接使用也很方便默认方法,但是既然有那么多个性化选项,其实一个有经验的开发者可以做很多定制化,这让我觉得paddle是一个面向行业的实用应用平台,不仅可以满足新手的使用,也提供了从新手到老手的过渡过程中更多的选择。-分布式训练http://www.paddlepaddle.org/docs/develop/documentation/zh/howto/usage/cluster/cluster_train_cn.htmlFabric集群,OpenMPI集群,Kubernetes单机和分布式,AWS上分布式。前面的很多讨论都是基于单机版,个人爱好者或者小公司解决实际问题的需求,如何使用PaddlePaddle来满足业务需求。当数据量变大了,或者公司的业务变大了,单机处理不了怎么办?我们都知道数据量大之后,算法可以分为数据并行和模型并行。Hadoop比较擅长解决数据并行的问题。一旦涉及到模型并行化问题,如何解决数据调度、死节点控制、迭代速度等问题蜂拥而至。作为一个主要研究算法层面而非架构层面的人,我们大多数人都希望框架能够解决我们的问题。那么,PaddlePaddle作为一个框架,就解决了这些问题,实验证明了它的有效性。别问太多,用就好了:)作为一个大框架,PaddlePaddle其实有很多值得深入了解的地方。这里我只介绍一些我比较感兴趣的点,剩下的留给有兴趣的人吧。你。3.PaddlePaddle的缺点PaddlePaddle有很多相关的功能。在第一节中,我们看到了大牛给开发者的推荐;在第二部分中,我们还了解了它的独特功能。但现实是PaddlePaddle在范围和氛围上还有很大的提升空间。仔细想想原因,也不难理解:1.PaddlePaddle和TensorFlow功能相似但出现较晚。通过对比我们可以看出,TensorFlow在基础的图像识别、文本分类等业务上已经可以有很好的表现。任务结束。虽然从benchmark对比来看,PaddlePaddle能够以更小的显存和更快的速度完成任务,但TensorFlow的先发优势对于用户的获取仍然至关重要。毕竟,我们中的许多人都是短命的。还有不缺钱的机器学习研究者:),学习和迁移成本是使用PaddlePaddle最大的成本(虽然学习成本一点都不高),机器成本在小企业也可以算是不存在的;2.社区环境和氛围不足即使是一个公司的开发者,也要求大家使用相似的技术栈,否则相互交流的成本会很高,而从全球范围来看,更好的社区环境会不断为框架开发者、应用贡献者开发者和商业用户在短短一年多的时间里还没有建立一个良好的机制来发展这个社区。3、重技术不重产品我们一直说百度是技术最好的,腾讯是产品最好的,阿里的运营是好的。做技术的比较单纯,大多坚信“酒香不怕巷子深”。但由于它是一个开源项目,它不只是供您自己使用。如果你想让更多的人使用它,结合以上1点和2点,既然外部环境不利,你可以自己使用产品更方便,更容易使用,从而改变不利趋势。不得不说,正如第二节所说,随着paddle的文档和模型的完善,以及一些比赛的组织,它开始有了自己的特色和环境的提升。4.实际业务的使用上面说了很多退步,所以本节讲一下PaddlePaddle在实际业务中的使用:1.打搜、丰巢、IDL的使用PaddlePaddle的前身是百度2013年自主研发的深度学习平台,由百度内部工程师开发使用。全球各大科技巨头的开源深度学习平台都形成了自己的技术特色。对于百度来说,由于业务和技术上的原因,PaddlePaddle更加全面,是一个功能比较全的深度学习框架。2016年,PaddlePaddle在百度的外卖预估配送时间、网盘故障时间预测、用户所需信息精准推荐、海量图像识别等30余项百度主要产品和服务中发挥了巨大的作用和分类、字符识别(OCR)、病毒和垃圾邮件检测、机器翻译和自动驾驶。以外卖行业为例。送餐员等待商家送餐耗时严重。百度将商家不同时段的客流量、菜品制作时间、订单量等数据交给飞桨。百度外卖内部系统经过对海量数据的深度学习和处理,可以预估每个商家菜品的送达时间,及时通知送餐员,提高了送餐效率,系统还可以规划取餐和取餐的路线。送餐更合理。2、个人开发者案例链接:https://zhuanlan.zhihu.com/p/29177825《AI蜜桃选美机》,嗯,这个名字的形象太强了。不过,另一方面,也说明了这个平台的易用性。过去,机器学习可以用一句话解释为“养于闺中,无人知晓”,但现在的趋势是进入门槛不断降低,越来越多的人可以轻松使用开源工具并结合他们有自己的事业。支持,方便高效的完成实际任务。我很期待其他新产品。毕竟我常说“机器学习的生命力在于与业务的结合”。5.期待写到这里,想起差不多十年前调整OpenCV的那些夜晚。哦,现在多方便,我可以更专注于算法、产品和管理;我可以把更多的时间花在阅读新论文、了解新业务、尝试新体验上。从小的角度来说,算法和平台的迭代和发展,让我这个算法开发者和管理者的工作效率更高,也有更多的时间来满足个人的好奇心和追求。从大的角度来看,算法、平台、业务的迭代和发展,也给我们每个人带来了不一样的世界。愿机器学习走进寻常百姓家,让我们的工作和生活越来越好。【原创稿件,合作网站转载请注明原作者和出处为.com】