ERROR:本文要素过多,包含开车、粗鄙之语、魔法、表情包等。但不包含联邦学习的具体说明,相关内容,文末给出传送门,请自行参阅。
先吐槽
人呐就都不知道,自己不可以预料,一个人的职业发展啊,当然要靠自我奋斗,但是也要考虑技术的演进。我绝对不知道,我作为一个搞大数据的,怎么开始搞联邦学习了?
所以当领导给我安排任务,说“公司都决定了,你来调研联邦学习吧”。
我说另请高明吧,我实在也不是谦虚。我一个玩大数据的,一年正经代码写不了几行,到是sql和shell 写的飞起的咸鱼,怎么就能研究联邦学习了呢?但是,领导说“公司已经研究决定了”。后来我就装了两虚拟机。
一台主机名是gou,一台主机名是qi,提醒我,工作再多,也得有健康的身体去享受
正文
说到联邦学习,最近概念有点活,相关在大神遍地的知乎,随便一搜就是了。当然,我有个朋友对此很是不屑,评价到
联邦学习反映了大数据在面对隐私时既想当xx又想立xx的复杂心情 —by 我的一个朋友
当然,无论我朋友说啥,反正他又不发我工资,该调研FATE,还是继续调研哈。
然后本着博(不)采(务)众(正)长(业)的态度,想看看除了FATE,其他框架的情况,以及好久没写python,就想写个爬虫,练练手的,即复习了python,又能增加装逼素材
于是,在github, 使用federated learning关键词搜索,爬取了star数 top30的repository,以及之前有了解的京东的9nfl和 字节跳动的Fedlearner ,一共32个项目的数据。
然而,像腾讯的AngelFL,这种未开源,只见文章的框架,暂时还无法统计。
因为时间精力有限,无法走读所有项目的源码,只能爬取git上的数据,进行一些简单的分析(吹逼),给有志于从事联邦学习的小伙伴在选择入门框架上一(带)些(到)建(坑)议(里)。
repository的类型
我们先从repository 的类型,开始吹起,粗略分了一下类,大致为三分天下,一类是Framework Or System 即联邦学习的框架或者系统,一类是Research Collections即学习资料收集,如研究类文献、paper和最新的idea的收集整理,还有一类是配套的设施,支持,如K8s 解决方案方案 KubeFATE,分布式机器学习 eggroll 等。
总的来看Framework Or System 独占7成。毕竟是个新兴的领域,Research 也不少。而相关的配套就比较少了,只有可怜的6.25%
活跃度
其次,从issue、commit、pr等指标来看,分别统计了各项指标的排列前三的项目,可以发现FATE 和 tensorflow federated(缩写TFF) 双雄争霸,是社区活跃度最高的两个项目。
TFF自不必说,背靠Google这颗大树好乘凉,又有TensorFlow 强大的算法库支持。整个项目规划清晰,文档完善,除了tutorials,连design,openmined2020 都给你贴出来了。假如你之前就是个TensorFlow玩家,给我一个不用TFF 入门的理由?
而FATE
不好意思,放错图了,是这个
号称工业级的开源联邦学习框架,在项目的完整性和易用性上,完全不虚TFF,各种文档一应俱全,还有热心网友编写教程,手把手教你怎么玩。项目1.5重构后,整体规划也更加清晰。同时还支持双语教学,对于英语不好的同学来说,简直就是福音。
唯一美中不足的,可能是进化太快了?(看看这个release数,看看这个commit数),一些老的文档已经跟不上最新的版本了。
字节跳动的 Fedlearner凭着极其简洁的文档和天马行空的代码结构,能够在开源不久就获得如此之高的star数,看来凭借推荐算法起家的字节跳动,其能力都得到了大家的认可。(访问github 双击鼠标不加star吧?)
百度的PaddleFL虽然人气比不过上面几个,不过依旧默默努力。加上有源于产业实践的开源深度学习平台 飞桨的加持,愿天道酬勤吧?
FedML 则是一个更加学术性的项目,查了下貌似没啥大公司的加成,更加偏向于一些paper和 idea 的实践和论证,是一个不错的学习和拓宽思路的项目。
xaynet 第一次看到xaynetwork 这个名字,我是陌生的,后来一查,居然是一家德国的公司,作为一个 潜在的巴伐利亚拖拉机主,不禁心头狂喜(deploy 这个项目的时候,需要在机柜边上放个油纸包么?) 的确,欧洲一直以来,没什么让人亮眼的互联网公司,但随着GDPR的出台,欧洲可能也在谋求些什么。
Train on the Edge with Federated Learning,这个巨大的title,仿佛就是Google 最初联邦学习想法的实现。
小结
虽然选了top30 的,但从活跃度的绝对数量上看,头部聚集效应明显,无论是commits on master/main 的数量,还是pr 和 issues 的数量,头部的几位都把后面的远远甩在了身后。
使用语言
再从开发的语言上来看看,python 一马当先,一骑绝尘,一夫当关,一统天下
有志于此的小伙伴,还是好好学python 吧。
当然仔细分析一下,像FATE 依赖的分布式机器学习引擎eggroll,也涉及了scala 和java。 还有TTF依赖的TensorFlow,也是C++ 写的,也就是在引擎层面,python 还是未够班啊。
公司&组织参与度
从公司参与度上 ,微众银行、IBM、GOOGLE 位列三甲。
当然,FATE也并非微众一家之功,从现有的信息来看,VMare也在FATE的实现中,出了不少力 。
GOOGLE作为科技巨头,上榜也一点也不意外。
到是看到了蓝色巨人IBM,蓝色巨人的底蕴还是深厚的
[图片上传失败…(image-b0cc3b-1607480144280)]
不禁想起了我的又一个朋友,身为前IBM员工,一直感叹:
老东家在云计算、大数据方向,IBM都是起了个大早,赶了个晚集 !
如果联邦学习会成为下个趋势的话,期望看到蓝色巨人有所作为吧。
结论
以上,就是基于一个不靠谱的爬虫获取的不靠谱的分析 。
如果非要有什么结论,或者在选型上有所建议的话,个人的建议是 双持FATE和TTF。
TTF背靠大树,以及有着TensorFlow 这么丰富的宝库,必定后劲绵长。而FATE,尤其完善的配套(可以去看下FATE下的repo),活跃的社区,中文的支持。学习起来,必然事半功倍。
当然,除了以上两个,本着open source 的精神,还是要博采众长。尤其是一些走在前沿,带着极强research性质的框架,可能功能不是那么完善和强大,但是很多思路确可以借鉴。作为一个技术人员,切不可固步自封,而应该更加的开放,不是么?
假装必须有的FAQ
Q1: 为什么开头是ERROR ?
A: WARNNING你会看?
Q2: 为什么是山东?
A:即便诸葛村夫的广告你没看过, 喜马拉雅山以东啊,懂?
Q3: 学好了FATE 可以补魔么?
A:不用FATE,给你自己new 一个对象,def 一个补魔的function,配合一个while(ture) 你就可以永动补魔到OOM了
Q4:为什么是潜在巴伐利亚拖拉机主,不是别的?
A: 人呢,要知足,我觉得有拖拉机开就不错了,不奢求开破二手车 更不奢望压金砖 况且,拖拉机和我的气质更配
Q5: 你说的那么多朋友,真的是朋友?
A: