[关闭]
@qinyun 2018-02-06T06:33:02.000000Z 字数 7377 阅读 2605

盘点历年百度开源项目

未分类


百度作为国内的互联网巨头,在很早的时候就开始着手开源事宜,2013年百度曾上线了“百度开源平台”(oss.baidu.com),主要用于展现百度的开源项目。在该平台成立之初,就上线了包括Terminator、ECharts、Itest、Ueditor、logcover等十多个项目,当时他们表示后续会持续添加到平台之上,在这之前,百度都是以团队的形式提交项目代码到GitHub上,此后,百度将项目集中管理,将开源上升到公司层面。

后来由于未知的原因,百度将此平台关闭了,但是百度开源的步伐并没有因此而停止,在陆奇上台后,百度推出了两个业务线,一是无人车Apollo计划,另一个是DuerOS开放平台,这两大计划都是开源开放平台,这也说明开源已是百度主要方向,对此,百度对外的解释是,唯有帮助开发者的成功,才能实现百度的成功。

我们统计了百度近年来开源的上百个项目,并对在GitHub上的star数超过1000的项目进行了分析,发现百度在前端方面的开源项目是最多的,近几年在人工智能领域表现亮眼,如Apollo和PaddlePaddle,尤其是Apollo可以说是百度在人工智能领域的一项里程碑。

1. Echarts

star数:25072

Echarts是国内开源项目的明星产品,来自百度EFE团队。Echarts是一个使用JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

其中ZRender是一个轻量级的画布库,它为Echarts提供2D绘图功能,它在GitHub上的star数也已突破2500。而同为百度开源Echarts-GL是Echarts的一个扩展,它为Echarts提供全球地图可视化和3D绘图功能。

与Echarts类似的图表库还有国外公司开发的highcharts,highcharts采用svg画图,Echarts主要采用canvas画图,与highcharts相比,Echarts的优势有:

GitHub:https://github.com/ecomfe/echarts

2.自动驾驶平台 Apollo

star数:7865

Apollo开源是百度在人工智能领域战略性的一步,不仅是百度宣称的那样旨在帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统,也是百度在这几年面对各大科技巨头的围堵中杀出的一条血路,从这几年百度宣传和经费投入上不难看出,百度已将公司的未来押宝于AI上,开源Apollo只是百度战略的第一步。

Apollo于2017年7月2日在GitHub上正式开源,到目前为止,一共提交了三个版本,累积16.5万行代码,这三个版本的特点如下:

目前Apollo生态的合作伙伴已经超过90家,包括高校研究机构、汽车零配件制造商、车企,还有Intel、英伟达、微软等互联网巨头,Apollo生态几乎辐射到了所有汇集科技前沿的领域,而且,Apollo也是目前世界唯一一个开源的自动驾驶平台,百度希望通过开源,赋能B端,让更多人工智能项目落地,拉动整个产业发展,到那时候,Apollo不仅是自动驾驶生态的一部分,更是成为生态的中心,就如同Android对于Google的意义一样。

GitHub:https://github.com/ApolloAuto/apollo

3. PaddlePaddle

star数:6384

PaddlePaddle是百度2016年开源的深度学习平台它是一个易学易用、高效灵活和可扩展的深度学习平台,大规模并行分布式深度学习框架,它支持多种深度学习模型如DNN、CNN、RNN等,它支持Python和C++,能在多GPU、多台机器上进行分布式计算。

在百度内部,PaddlePaddle已被广泛用于产品中,包括广告点击率(CRT)预测、大规模图像分类、光学字符识别(OCR)、搜索排名、计算机病毒检测等。

在国内,将BAT的三大深度学习平台:百度PaddlePaddle、腾讯Angel、阿里DTPAI作比较,PaddlePaddle的知名度可能更大一些,它也是国内第一个开源的机器学习平台,与Google第二代机器学习TensorFlow相比,PaddlePaddle还有一些差距,毕竟,TensorFlow的普及度更高,用户群更庞大,但PaddlePaddle的一些优点也是不可否认的,它的GPU代码质量较高、设计简洁干净,这一点比TensorFlow强很多,而且速度更快,显存占用较小。

李彦宏表示,将paddlepaddle的源代码开放出来,让年轻的开发者学习,发挥创造力,在它的基础上进行改进,同时,百度也希望PaddlePaddle在未来形成反哺,PaddlePaddle开源将能带来巨大的价值,因为这一点已经被Android证明,Google在Android上推出了各种应用,占据了安卓手机的大片江山,赶上了移动时代的潮流,同理,百度认为PaddlePaddle如果能广泛地应用,就能丰富自己的人工智能的战略,让百度从其他业务线获得更大的增长空间。

GitHub:https://github.com/PaddlePaddle/Paddle

4. brpc

star数:5938

brpc是一个基于protobuf接口的RPC框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有RPC协议,并支持多种第三方协议,目前只开源C++版本,有超过60万个实例(不包含client, 目前已超过100万)和500多种服务,它于2017年9月15日在GitHub上开源。

之前brpc负责人戈君在接受InfoQ专访时表示,brpc没有像gRPC那样摊大饼,不会什么都做,但它更具有深度,并解决了RPC的三大痛点:可靠性、易用性和定位问题的便利性,从目前的性能和测试数据来看,brpc的性能领跑于其他同类RPC产品。

brpc vs sofa-pbrpc

sofa-pbrpc是百度开发的一个早期的RPC框架,属于sofa编程框架的一部分,它是基于Google Protocol Buffers实现的RPC网络通信库,于2014年开源,在GitHub上star数超过1500,主要在搜索上应用,目前已经在浪潮、金山、乐视等各大互联网公司产品中使用。

sofa-pbrpc具有接口简单,易于使用,支持同步呼叫和异步呼叫,支持多级超时设定,灵活控制请求超时时间等优点,但是同作为百度重要的开源项目,在百度内部之间还是避免不了与sofa-pbrpc竞争,brpc相对sofa-pbrpc来说主要在以下方面有优势:

GitHub:

https://github.com/brpc/brpc

https://github.com/baidu/sofa-pbrpc

5. WebUploader

star数:5424

WebUploader是一个简单的以HTML5为主、FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+,两套运行时,同样的调用方式,可供用户任意选用。

WebUploader将分片和并发结合,极大提高文件上传速度,支持预览、压缩,具有多途径添加文件、MD5秒传等特点。

常用的多文件上传插件还有jquery uploadify、jquery file upload ,jquery uploadify有两个版本,即Flash版本
和HTML5版本,后者对移动浏览器的支持更强。

GitHub:https://github.com/fex-team/webuploader

6. mobile-deep-learning

star数:3642

MDL框架总体架构设计图。

mobile-deep-learning(MDL)是一个基于卷积神经网络实现的移动端框架,具有复杂度低、速度快等特点,它支持iOS GPU上的计算,百度在2017年9月开源了其全部代码及其脚本。

MDL在移动端主要是用于识别图片,并能将图片的物体进行分类,并已应用于百度App上。与其他支持CNN的移动框架对比,MDL的速度快、性能稳定、兼容性好、demo完备,同时MDL也支持caffe模型直接转换为MDL模型。

GitHub:https://github.com/baidu/mobile-deep-learning

7. Ueditor

star数:3391

Ueditor是由百度网页前端研发部开发的富文本网页编辑器,于2012年开源,具有轻量,可定制,注重用户体验等特点,支持商业和非商业的用户免费使用和任意修改,Ueditor主要是用于百度内部的产品,如百度百科、百度贴吧、百度经验等。

Ueditor的插件较多,基本能满足各种需求,但是Ueditor在GitHub上基本没有维护了,吸引力可能比不上wangEditor,毕竟wangEditor不仅能满足基本需求,而且它轻量、易用、UI设计精致,开源的文档也很齐全。

GitHub:https://github.com/fex-team/ueditor

8. WARP-CTC

star数:3130

WARP-CTC是百度前期为了在最新的计算机芯片上更快速运行而专门研发的一种改良版深度学习算法,可以将其应用在CPU和GPU上高效并行的CTC库,可用于解决比如语音识别这样的将输入序列映射到输出序列的监督问题。它由百度硅谷人工智能实验室负责开发,于2016年正式开源。

目前,科大讯飞的深度学习语音识别采用RNN(Recurrent Neural Network,循环神经网络),它能将声音信号转化成语句或单词,但是RNN需要预分段的训练数据,以及需要后处理才能将输出数据转化成标签序列,因此RNN的性能受到了限制,但是Connectionist Temporal Classification(CTC)方法可以直接训练RNN来标记未分段序列,从而规避上述问题,而WARP-CTC是在原来CTC方法的基础上进行优化,不仅提高了性能,也改善了训练的可扩展性,在GPU上,每64个example的minibatch的表现都在比Eesen快7倍和快155倍、比Theano实例快46倍和快68倍的范围之间波动。

在WARP-CTC开源之前,就已经为手机百度、百度地图服务,为数亿级用户服务,技术已经较为成熟,所以开源之后,开发者可以直接迁移过去为自己的产品服务,所以百度开源WARP-CTC对智能语音行业来说是巨大的好事儿。

GitHub:https://github.com/baidu-research/warp-ctc

9. KityMinder

star数:2397

KityMinder出自百度FEX团队,是一款在线的免费脑图编辑工具,它不仅有着Native编辑工具的交互体验,还充分发挥了Web云存储的优势,可直接将编辑中的脑图同步到云端,此外,借由独创的“云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。

与另一款免费的国产思维导图软件MindMaster相比,KityMinder较为轻量级,因为它是在线的不需下载应用,但是MindMaster的模板和素材更为丰富,核心的内容完全免费,能自由导出各种格式,相对而言,开发者对KityMinder的评价是它只适合新手练习,因为它只能画一些简单导图,无法满足高级场景的需求,但MindMaste的功能和使用体验可与国外的MindManager软件相提并论。

GitHub:https://github.com/fex-team/kityminder

参考链接:https://www.zhihu.com/question/19767007

10. FIS 3

star数:2280

FIS3是面向前端的工程构建系统,它是基于静态资源标记+动态解析静态资源表,在模板、js里边使用特殊的标记方法引用前端资源,解决前端工程中性能优化、资源加载(异步、同步、按需、预加载、依赖管理、合并、内嵌)、模块化开发、自动化工具、开发规范、代码部署等问题。

将fis3与另一种前端构建webpack相比,与其说它是构建工具,还不如说它是一整套的前端工程化解决方案,它的工作流程和配置更符合前端开发者的常规认知,

GitHub:https://github.com/fex-team/fis3

11. 文件系统BFS

star:2246

Baidu File System(BFS)是一个分布式文件系统,旨在支持实时应用程序,与其他分布式文件系统一样,BSF具有高度的容错性,但与其他不同的是,BFS在保持高吞吐率的同时还提供了低读/写延迟,BFS与百度另外两个开源库Galaxy、Tera共同支持百度的实时产品,包括百度网页数据库、百度增量索引系统、百度用户行为分析系统。

由于百度的核心业务和数据库系统都依赖分布式文件系统作为底层存储,文件系统的可用性和性能对上层搜索业务的稳定性有着重要的影响,而现有的分布式文件系统(如HDFS)是为离线批处理设计的,无法在保证高吞吐的情况下做到低延迟和持续可用,所以百度从搜索的业务特点出发,设计了百度文件系统。

GitHub:https://github.com/baidu/bfs

12. San

star数:1539

San是一套应用于Web的MVVM的组件框架,San 通过声明式的类 HTML 视图模板,在支持所有原生 HTML 的语法特性外,还支持了数据到视图的绑定指令、业务开发中最常使用的分支、循环指令等,在保持良好的易用性基础上,由框架完成基于字符串的模板解析,并构建出视图层的节点关系树,通过高性能的视图引擎快速生成 UI 视图。

San最大的亮点是它体积小,只有11K,兼容性强,能兼容IE6以上的浏览器,兼容性也是百度团队研发的初衷。然后将San和其他主流框架进行横向对比,发现无论是DOM 节点重绘速率还是在更全面的测试场景里,San都表现得很优秀。

测试 DOM 节点重绘速率的测试,数值越大越好。

最后一行标示了不同框架相对原生 js 性能落后多少倍,数值越小越好。

相对React、Angular、Vue这些主流框架而言,Sanh还很年轻,还有很多路要走,未来就看团队怎么建立起San的社区生态,让开发者参与进来,丰富资源,在技术和理论上有突破和创新,而不是重复造轮子。

GitHub:https://github.com/ecomfe/san/

13. Tera

star数:1550

Tera是一个高性能、可伸缩的分布式NoSQL数据库,它受到Google的Big Table启发,它是用来管理搜索引擎万亿量级的超链与网页信息。由于百度之前的存储系统无法再支持千万或上亿QPS的随机读写,单机性和扩展性也满足不了需求,Tera由此诞生。

据相关资料,Tera管理的节点过万,数据存储量达到PB级,与同类开源产品hbase相比,Tera的稳定性更高,而且Tera能实时处理百亿的链接数据,管理万亿级的数据规模,这是与hbase无法企及的。

参考链接:https://my.oschina.net/u/2982571/blog/775452

GitHub:https://github.com/baidu/tera

14. iSlider

star数:1412

iSlider是移动端的轻量级、高性能、无需库依赖的跨平台滑动控制器,实现内容的分屏显示,通过滑动操作来实现换页操作,它支持webApp、HTML5App、混合型App。

而与同作为移动触摸滑动插件的swipe.js相比,它API要比swipe.js少,但也因此让iSlider的体积要比swipe.js小,省内存,更适合移动端使用。

GitHub:https://github.com/be-fe/iSlider

15. Mapv

star数:1262

Mapv 是一款基于百度地图的大数据可视化工具,可以用来展示大量的点、线、面的数据,每种数据也有不同的展示类型,如直接打点、热力 图、网格、聚合等方式展示数据。

GitHub:https://github.com/huiyan-fe/mapv

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注