最近参加了百度的 Baidu AI Studio平台上【机器学习训练营】,记录一下学习【百度飞桨】的相关知识。
Paddle 是 Parallel Distributed Deep Learning 的缩写,中文名字是并行分布式深度学习。paddle 的原意是“用浆划动”,所以 logo 也是两个划船的小人,也就是等待众人划桨的中国 AI 大船。
从2016年9月27日发布至今,PaddlePaddle 大概有三年左右的时间了,而其前身是百度于2013年自主研发的易用、高效、灵活、可扩展的深度学习平台,且一直为百度内部工程师研发使用,可以认为是一个类似Facebook支持的PyTorch、Google的TensorFlow等工业优而开源的又一个典范。
一般开源项目的热度指标从 GitHub 可以略见一斑,Paddle 的数据是这样的(截止19.8.17):
star(可以认为是技术人的点赞)有9661人;
forks(想要自己基于此做修改)有2586人;
commits(代码总共的更新次数)有24835次,除以时间3年(3 x 365 = 1095),也就每天更新几十次吧;
contributors(代码贡献者)有242个。
这样的受关注程度和更新的频次,即使和现在如日中天的 TensorFlow,Pytorch 相比整体热度仍有差距,但 PaddlePaddle 也处于迅猛的上升期中。除了 Github 直接投票,在知乎等平台上,PaddlePaddle 也引起了热烈的讨论,包括架构层面和应用层面:
caffe 的设计者贾扬清,评价说“很高质量的GPU代码”、“非常好的RNN设计”、“设计很干净,没有太多的abstraction,这一点比 TensorFlow 好很多”、“总之是一个非常 solid 的框架,百度的开发功底还是不错的”,这可以算是技术人之间的惺惺相惜了吧。
每一个成功的开源项目,文档和教程都必不可少,而且很大程度上是项目易用性的保证、是深度钻研的辅助,更为项目的成功增色。PaddlePaddle当然也是这样,它有自己一套较为详实的辅助材料:http://www.paddlepaddle.org/
单从文档形态的角度,相较于TensorFlow和keras的中文文档基本是爱好者翻译而成,paddle的文档来自于百度一线的工程师,多少会觉得亲切和信赖稍多一些不?下面说一说 PaddlePaddle 的模型库。
模型库地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/models/index_cn.html
这里给出的模型库其实都是解决(很大程度上)工业级的实际问题,这也是我特别关注的。
我们搞算法特别是深度学习的,都知道一个词叫 炼丹,而一个好的架构和方法往往来自于大公司,也是有上面提到的这些原因的。得窥论文奥秘,并且能看到具体的实现,还是让人很高兴的一件事呀。
好了,PaddlePaddle作为一个框架,解决了这些问题,实验也表明了它的有效性。不要多问,拿去用就好啦
动态图具有方便调试、高效验证业务、快速实现想法等特点, 静态图具有方便部署、运行速度快,适合进行业务应用等特点, 助您灵活、高效地进行训练和预测
飞桨提供70+官方模型,全部经过真实应用场景的有效验证。 基于百度多年中文业务实践,提供更懂中文的NLP模型; 同时开源多个百度独有的优势业务模型以及国际竞赛冠军算法
飞桨是业内唯一全面支持大规模稀疏参数训练场景的开源框架, 支持千亿规模参数、数百个节点的高效并行训练
完整支持多框架、多平台、多操作系统,拥有最全面的硬件适配。飞桨对端侧推理速度进行大幅优化,性能全面领先,同时,还提供了高效模型压缩工具,实现高精度的模型体积优化
飞桨提供系统的服务体系,为企业合作伙伴保驾护航。同时帮助高校和教育合作伙伴构建完善的教育体系,为不同层次和需求的开发者提供最合适的培养体系
通过对比,可以看到在基本的图像识别、文本分类等业务上,TensorFlow 已经可以较好的完成任务了,虽说从 benchmark 的比较来看,PaddlePaddle 能以更小的显存和更快的速度完成任务,但是 TensorFlow 的先发优势对于用户的获取还是至关重要的,毕竟我们很多都是用人生苦短而又不差钱的机器学习研究者嘛 ,学习和迁移成本是使用 PaddlePaddle 的较大成本(虽然学习成本一点也不高),而机器成本在较小的业务下也可以当做不存在。
即使是在一个公司内的开发人员,也讲求大家要使用相近的技术栈,否则互相沟通得成本较大,而从全局来看,一个较好的社区环境也会不断贡献架构开发者、应用开发者和业务使用者,短短三年左右的时间还是没有建立其一个很好的机制来发展这个社区。
我们一直说百度技术做得最好,腾讯产品最强,阿里的运营不错。做技术的人比较单纯,大多深信“酒香不怕巷子深”。但是既然是开源项目,那就不只是自己用就得了,如果想要让更多的人来使用它,结合前面是说得1、2两点,既然外部环境不利,那最好自己能把产品做到更方便、更易用,这样才能改变逆势。不得不说,如第二节所述,随着paddle 的文档和模型的补全,随着一些竞赛的组织,它开始有自己的特色和环境的改善。