hello干货:联邦学习工程实践中的三大难题

“实践是检验真理的唯一标准”,联邦学习谈概念的文章已经很多,今天我们来从实践中聊几个实事求是的问题。

联邦学习领域已有众多论文支撑,但在实践中,因为涉及到多学科的交叉,真正能落地应用的平台,少之又少。所以市面上虽有三四十家做联邦学习的公司,但是能真正亮相产品仅有七八家。这应该是一个比较正常的现象,因为联邦学习工程落地所面临的挑战远远比理论复杂。

断点训练

断点训练 是指联邦学习过程中“训练可暂停”,如果发生多方之间的网络异常造成超时,待网络恢复正常后,联邦学习模型可从上次的断点开始继续训练,而避免重新开始。

这在我们的客户实际环境中非常重要,因为多方机构之间进行联合建模,无法预见和避免网络之间连接不稳定,一旦发生断网,普通的time out机制容易让学习过程超时或者异常退出。可能各家联邦学习平台的产品大多进行了网络不稳定的报警,这种处理是比较简单粗糙的,做一个心跳机制,不间断地去测试多方之间的网络情况,并发出日志报警。但是这种简单的处理方式只能帮助定位联邦学习建模过程出现的异常。试想,如果客户花了2小时眼看模型马上训练出来,进度条到99%的时候,突然time out了,是不是想死的心都有?这在用户体验上是极其不友好的。

下面我给出一种基于监控回调的处理方案:


“基于zookeeper的监控回调”断点训练方案
过程简要描述如下:直接选取zookeeper作为节点监控管理的原型,它的心跳机制非常适合监控节点网络,它的watch()函数会自动触发对timeout的回调,重新回调的方法,可以将各自节点联邦学习训练的当前参数和状态保持一份完整的快照,这份训练过程中的快照数据可以作为下一次训练的初始状态,通过load()预加载,从而实现建模的断点训练。就逻辑回归算法而言,这个快照包含的内容有:本地节点的权重weight、当前样本的批次batch、当前shuffle、部分梯度gradient等过程参数。
延伸一点,断点训练解决单次训练过程异常问题;另外有一个是机器学习都可能碰到的问题是 增量学习,简言之第一次训练的模型结果如何集成到第二次增量的样本中进行训练,这里先不展开。
加速训练

加速训练 是指对联邦学习算法的提速,联邦学习还未在数据应用市场大规模使用的原因之一是建模速度,相比传统的本地建模,目前联邦学习所消耗的时间是传统方式的十倍甚至百倍。

分布式的机器学习面临最大的挑战是网络间的通信和节点的计算开销,这就好比本来在一个存储计算环境里能完成的机器学习建模,现在要用联邦(分布式)的方式,将算法平铺到网络上。联邦学习平台工程化的适合,需要非常关注算法流程的最优化设计。我们且认为当前学术水平下的算法理论已经在一个比较稳定的水平,那么联邦学习的计算总量不变,工程师需要重点考虑如何平衡训练过程的开销。在实践过程中,我们重点考虑4个方向的训练加速:

加密算法的加速:

比如利用GPU,将加密算法尽量打散做并行,尽量减少GPU和CPU之间的交互频次;

学习算法的加速:

比如我们在设计联邦学习机器学习算法的时候,尽量做到子模块的低耦合,理清楚子模块的依赖和并行关系,对算法流程进行深度的重新编排;

节点通信的加速:

这是非常重要的,基于流程的依赖关系,最大化地减少通信次数,这个需要不断优化,甚至是在同步异步的使用上;

代码的加速:

成千上万次的循环,我们倾向用更底层的语言来构建算子,比如 C++,这更有助于我们是用一个float还是用double来定义循环体里面的参数,因为你一定要相信,短一点的字符串、少一次循环体,都可能在整个联邦学习建模开销上带来一个数量级的提升。(代码工程是一个细腻的活,特别是对联邦学习而言,请你细品。)

集群训练

集群训练 是指联邦学习“机器可扩张”,通常联邦学习依赖比较高的配置,而且学习是不是能顺利、快速完成很大程度上依赖于服务器资源是否能满足给定的样本数量、特征维度数量。

举个例子,我们用40核128G配置的机器,测试100,000样本800特征的规模,设置迭代5次,采用比较常用的逻辑回归算法,耗时在100分钟左右。这个结果在目前国内主流的几个联邦学习平台上算是表现比较出色的。但是,联邦学习的时耗会随着样本规模的扩大呈现非线性增长,这是一个很大的挑战。负责learning的机器即使用最高配置,也会面临机器性能的天花板。

联邦学习平台必须支持简易的机器横向扩展,就像hadoop面向大数据行业的初衷就是“不够了,加一台”就可以支持更大数据的存储和运算。我并不觉得这个技术工程框架上会有多复杂,因为像Hadoop、Spark这些比较成熟的框架已经可以支持到分布式计算,我们完全可以用这类技术结合联邦学习算法的具体设计,将本地单节点的算法写到并行计算里面去,这部分核心的工程代码就是MapReduce~~~重构联邦学习算法,重写MapReduce函数。

插一句,之前提过的一个概念,未来的算力也许是面向领域的智能算力,而不仅仅是提供一堆机器,提供智能算力的云计算公司,会更AI、更贴近业务。

乘风更需破浪

联邦学习在今年的金融科技行业,可以用火爆来形容,真正落地的屈指可数,这是互联网技术的浮躁一面,也许我是技术出身,我更看好能在工程实践上踏踏实实做好产品的企业。借用最近流行的一个词汇——“乘风破浪”,来总结这篇文章,最为合适不过(更多前沿资讯请关注微信公众号“hellompc”)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343