社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

这位华为“奇异博士”能处,挑战高性能机器学习算法库,他是真上啊!

云技术 • 3 年前 • 480 次点击  


长空搏击,用算法为鲲鹏插上飞翔的翅膀


“我思故我在”,不知道父母当初是不是受到了笛卡尔的启发,给我取了这样一个“我思”的名字。也许正是印证了父母的期望,在整个蓬勃的青春岁月,我一头扎进了技术的浩瀚海洋里。


在外人看来一行行枯燥的代码,庞杂的知识结构,晦涩的逻辑语法,艰苦的科研攻关,在我眼中却是另一番别有风味的“奇异”景象——信息时代为人类插上锋利的羽翼,时间被折叠,我以灵态飞行在多维宇宙自由航行;世界万物固然复杂,我却可以用0和1来掌控和定义……


这一切都深深吸引着我,在古都西安,我用十年时间在计算机的二进制世界里学习和研究,而后加入华为,一头钻进算法的奇妙世界。


01
拧水龙头,搞定存储资源争抢难题


2014年,27岁的我从西安交通大学计算机系博士毕业,来到了向往中的华为IT算法部,成为了一名算法工程师,开始“真刀真枪”地参与到商业项目研究和交付实战中。


一天,一个企业存储系统的资源争抢难题横在了我的面前。企业存储是一个非常复杂的系统,对cache(高速缓存)资源的需求各不相同,同时运行必然会出现资源的争抢问题,用户会感觉计算机卡住了。


“可以用负反馈模型来实现争抢资源的调控。”我第一时间想到。这个模型很有“劫富济贫”的意味,比如第一种业务占了过多资源,我就想办法让它释放出一部分,给第二种业务用,跟“拧水龙头”一个道理。我思索着,认为这个理论模型可行。


但很快我发现实际效果并不好。我们的存储系统跟“拧水龙头”不一样,不是在后端“拧一下”,水流就能立竿见影地变小;而是需要一定的时间才能起作用,算法达成收敛非常慢,甚至无法收敛,我忽略了调控迟滞性的问题。


正苦恼着,我忽然想到,我们部门可是“卧虎藏龙”啊,隐藏了很多技术大神,另外一位数学系的博士小伙伴不是正好在做控制方面的研究吗?我赶紧拨通电话,对方一听很感兴趣,我们一头钻进复杂的存储系统,思考如何从技术角度优化模型。


另一位拥有优秀算法技能、又有工程落地经验的“大神”也伸出援手,“不如把存储系统分成前、中、后三段,分开去看调控动作究竟在哪一段生效。”他建议。“区间调控!”我们的灵感火花再次点燃,顺利将问题精准定位。


我们开始修改模型,将水流减小开始生效的“点”,换成“区间”来衡量。比如“拧一下”之后,水流减小的幅度值在预期区间内,我就判定调控动作有效,可以进行下一步。


经过不断的调测和打磨,模型终于成功收敛,我们的调控目标顺利达成。后来在两台服务器组成的一套更为复杂的阵列环境里面,我们又一鼓作气,成功解决掉“两个水龙头同时流水”的升级版难题。


这段经历让我深刻地感受到,在这如同战场一般的激烈商场里,公司需要的是面向商业竞争力的算法研究,不再只是学校里的学术创新。我顺利走出了“象牙塔”,适应了身份的转变,甚至感到更加兴奋,能将自己所学应用于实践中并获得商业成功,这种从“研究”到“落地”的感觉,简直不能更棒了!


02
扬帆起航,为计算产业的成功而奋斗


2020年,随着组织调整,我和团队一起来到新成立的计算产品线。


经历了前几年的摸爬滚打,此时我在大数据机器学习算法领域积累了不少经验,围绕着安平、金融等行业客户的痛点问题,展开算法联创项目,取得了扎实的成果,在客户层面建立起了华为的口碑。


而来到计算产品线,我内心深处有按捺不住的兴奋和期待——2019年伊始,当华为宣布重磅推出业界最高性能ARM-based(基于ARM架构)处理器——华为鲲鹏920时,意味着基于ARM的华为TaiShan系列服务器将肩负起新的重要使命,也体现出公司携手产业伙伴推动ARM的产业发展的决心。站在多样性计算时代的浪潮前,风云四起,我和团队做好了准备,即将扬帆起航。


机遇与挑战并存。在前期与客户进行联创时,我收集到了很多客户的声音。一方面,在服务器市场占有率处于绝对领先地位的X86服务器,其软件生态经过近40年的发展和沉淀,业界已有应用软件几乎都基于X86架构做了针对性的深入优化,能够发挥出极致性能,形成强大的竞争力优势;而我们在这个“巨人”面前,还有着很大的差距。


另一方面,对于客户而言,效率就是效益,时间就是金钱。如果ARM服务器算法计算性能慢,即意味着出局,客户将很难再选择我们的产品,后续发展更无从谈起。


当下我的脑海中只有一个最为紧迫的声音——超越。我们需要付出更大的努力,尽快取得突破,才能让客户相信,我们的ARM服务器能够提供更强的性能。


可是,我们的突破口在哪里?在与客户反复交流、调研分析和对比测试的过程中,我发现,随着大数据产业在我国发展的规模越来越大,机器学习算法已被广泛应用于安平、金融、政务等行业中,成为大数据应用中常用的工具和方法。我们的行业客户,大部分都采用了主流生态的算法包来构建业务系统,在数据规模比较小的时候,这些开源算法包能够很好地解决业务问题。但是随着接入的数据规模越来越大,算法的计算量、通信量都膨胀得难以评估,导致很多模型需要花费数天的时间才完成,有的甚至无法完成计算,对客户的实战业务产生了很大的影响。


既然机器学习算法不仅在客户联创工作中被高频使用,对端到端的业务性能的影响也是最大的,那么在大数据算法领域助力鲲鹏生态构建竞争力,将会是一个非常合适的突破口!“如果能打造一个面向鲲鹏的高性能机器学习算法库,不正是一个很好的开始吗?”我看到了希望的曙光。


这时,客户的话也给我们打了一剂强心针——“处理大数据业务的时候,机器学习算法运行在ARM服务器上,计算精度和结果都没有问题,性能上的一些差距,我认为你们是可以攻克下来的。”客户的这句话,让我们倍受鼓舞,大家憋着一股劲,决心一定要做到最好,把我们当前的软硬件能力发挥到极致,交上一份满意的答卷。


03
打响战斗,挑战高性能机器学习算法库


作为机器学习算法团队的技术负责人,我带领团队开始着手研究。


为了能够解决困扰客户业务的性能问题,我和主管、专家们每天反复研讨商量至凌晨,最后我做出了一个“惊人”的决定:给机器学习算法库设置了一个极具挑战的数字目标——0和50%。“0”代表客户一行代码都不用改,“50%”意味着调用我们的算法库,就可以在鲲鹏上获得相比业界最优算法在X86上50%的性能提升。


一提出这个目标,我们收到了很多专家的善意提醒:“机器学习算法经过了10年以上的迭代发展,大量顶尖科学家们已经做出了大量成果和贡献,理论研究已经相对成熟,要想通过原理优化达成性能大幅提升?这基本不可能。”


我心里清楚,这是必须赢得的战斗。想要在性能上实现“超越”性的竞争力,同时考虑到未来演进,我们ARM的算法优化指标必须提升50%甚至以上,才能拉开优势,领先业内1~2代产品。而这是一次极为艰巨的考验,就像奥运会上代表了人类奔跑极限的田径100米项目,在拼尽全力的情况下,成绩越往上提升0.1秒,越是难如登天。


作为团队的负责人,我的内心虽然忐忑,但也更加坚定:我,我们,都没有退路,也不允许自己后退。提升20-30%当然是一条更轻松容易的道路,但这又有什么意义呢?不断挑战超越、拉开距离,助力产品打造世界级的竞争力,就是我们这个创新型团队存在的价值。


我们立马着手对业界算法库、学术研究论文进行细致调研和追踪。调研的过程极其繁琐,又很有意思,我们仿佛打开了宝藏大门,持续不断地打破原有认知,获得了很多新思路。一些平时大家普遍认为非常“经典”的算法,比如线性回归;以及不同的算法库,比如开源组织的算法库、业界大厂的算法库,居然各自采用了完全不同的原理实现了算法


而学术界对于机器学习算法的研究也正处于高热状态,每年有创新研究成果发表公布,这意味着,要想通过原理优化达成性能目标,也并非完全不可能。我和团队小伙伴们逐渐坚定了信心,我们为客户提供一个“零”学习成本的高性能机器学习算法库,成功机会还是很大的!


目标清晰了,我们开始以不同维度筛选业内优秀算法,进行排序,随着范围一圈圈缩小,最终锁定了由优化领域的大牛Jorge Nocedal等提出的“二阶优化器算法(LBFGS)”。


L-BFGS算法有两大优势——收敛速度快、内存开销少,在业界具有强大竞争力。而且,它在机器学习的线性模型类算法中被广泛使用,业界的机器学习算法库也随处可见它的身影。我们只要继续优化这个已经应用相当成熟的算法,就有很大机会获得最后的胜利。


机器学习算法团队


04
铁锤砸棉花,在优化路上艰难前行


没想到,实际情况并不顺利。


我们尝试了各种方案,想尽诸多办法,耗费大量时间进行优化,效果都不太好。有时,刚有个别场景起了些效果,但一转头却发现其他场景下又恶化了。反反复复的优化工作从3月初持续到了6月底。这种感觉如同“铁锤砸棉花”,令团队成员感到非常无力,信心在日渐减弱。之前业界通用的那句“魔咒”开始缠绕着大家的思绪,“不可能通过算法原理创新达成性能大幅超越的目标……”


我深知,算法研究就是需要不断地剥茧抽丝,从千头万绪中找到正确的方向。大家太需要成功一回了,这时说任何“鸡汤”都不如打一场阶段性的胜仗。我一不做二不休,梳理了100多篇发表在顶刊和顶会上的论文,对其成果进行追踪;随即关闭其他所有事务,从早到晚集中全力攻坚十余天。不知道从哪来的干劲,面对这恐怖的信息量,我的脑子里只浮现出一个字——“啃!”


十几个日日夜夜过去,我终于把这100多篇论文啃完,记录了不少问题和优化思路。其中有的尝试提升迭代效率,有的尝试降低计算复杂度,有的尝试减低计算量;各种不同的优化思路让我大开眼界,兴奋不已,进一步坚定了能够突破困局的信心。


我将这些文章的优化思路,分门别类,并汇总成一个表格,记录下他们解决的问题、算法思路、测试场景及测试结果。我知道,靠我一个人很难快速取得突破,需要兄弟们一起上了。我开始组织大家进行头脑风暴,分析合理性、设计实验验证想法,开始进行优化。


最初的想法在验证过程中发现不少问题,提升迭代效率的情况下,会使得计算复杂度变高,最终的计算性能难以达成我们的要求;降低计算复杂度或计算量的情况下,性能虽然能够满足我们的要求,但是模型的精度会下降……真的是“性能准度难两全”。


我静下心来,把当前已有的分析结果进行了梳理,又求助了部门的算法专家,决定要抓住“牛鼻子”,先解决主要矛盾,再解决次要矛盾。经过不断失败、不断复盘,最终,功夫不负有心人,受到数值优化领域一个数学定理的启发,我们设计并优化了一种方法,称它为LBFGSX(即“对LBFGS加速”之意),这个算法能够极大提升计算效率,相比原始的LBFGS算法能够提升1倍,而且在各种规模的数据集下都是有效的,我们终于抓住了牛鼻子!也许,这就是算法研究工作的魅力,捅破这层窗户纸之后,一切都会显得那么简单,那么美好。


接下来,我们在公司内外很多关键局点都进行了PoC(比拼测试),客户对测试效果非常满意,并感到十分惊讶,“这么大的数据集,不用增加集群资源,你们的算法就能跑下来,真是厉害!我们原来不敢上的几个应用可以规划上线了。”“你们究竟是怎么做到的?”听到客户如此发问,我不由地一阵心酸,整个过程之艰难,团队挑灯夜战的一幕幕,走马灯一样地在我脑海里转动。


的确,我们做到了。当结果显示——所有算法在鲲鹏的环境都能领先主流开源算法50%以上,我们的算法在鲲鹏社区成功上线的时候,一切过往的艰辛瞬间烟消云散,不值一提。“没有一个冬天不可逾越,没有克服不了的困难”,此刻的激动、欢欣和欣慰,都化成了更加坚定的信念。

  

智子2020项目结项-大数据算法团队合影


05
永不止步,与冰雪王国“智囊团”共创奇迹


回顾LBFGS算法优化的经历,虽然成功了,但也让我深刻认识到,我们这个团队在数学方法的掌握和优化方面,是存在明显短板的,而对于算法的探索,数学是非常关键的能力源。在一次业务例会上,部长了解到这个问题后,建议道,“我们有一个绝佳的资源宝库——莫斯科研究所,专家们都以数学见长,可以想办法形成合作,应该能够解决你们的问题。


于是,针对每个技术方向,我组成不同攻关小分队,由我们的博士对接莫斯科的数学专家,希望在各个技术方向全面开花。


然而没过多久,我就发现大家在跟莫斯科研究所的数学专家们对接时很消极,有博士甚至问我,能不能让他自己solo(单独工作),不浪费时间对接专家了。还没整明白这是怎么回事,我又发现项目例会上,专家们对与我们的合作也感到不满。这简直就是“双向奔赴”的互相嫌弃啊!“彼此的重视程度不够”、“很多信息反馈很不及时”、“经常提出反对意见”……专家们细数起“N宗罪”。


我坚持数学能力必须提升,合作一定要进行下去。那么如何能够把莫斯科的专家们和我们融合成一个团队?我把这件事情拎出来作为必须要解决的头等大事。


我了解到,知识背景迥异,是彼此间最大的鸿沟。我们的博士们非常了解业务背景和需求,交流时往往从业务背景的角度来介绍;而莫斯科的专家们,则更熟悉数学语言。我们需要将机器学习算法中的关键问题抽象成数学问题,让数学家们既能充分领会我们的诉求,又能最大限度发挥他们在数学上的造诣。


我带着大家努力提升用数学语言跟专家们交流的能力,经过磨合之后,我们终于能够顺利沟通与合作了,收获的惊喜也随之而来——有一次,莫斯科研究所的专家Andrey在我们LBFGS优化工作的基础上,又进一步进行了模型简化,提出了一种更巧妙的计算算法,使得算法性得到进一步提升。这让我们终于感受到,补齐数学短板,共同合作创新才是王道!


对于Andrey的贡献,我特意找我们部长申请了激励卡,由本地团队的主管颁发给他。没想到平时一贯严肃且不苟言笑的Andrey非常开心,说自己的工作很有成就感。


我在莫斯科攻关期间


就这样,我们和强大的莫斯科数学家们一发不可收拾,发展为最佳拍档,一起合力攻关多个算法,贡献了大量创新成果。其中提出了一种二阶优化器算法,比我们当时提出的算法收敛速度更快;还有一种分布式矩阵计算算法,计算效率更高,能够应对更大规模的数据场景……我们发自内心地感受到了这份价值感,纵使彼此相隔千山万水,也无法阻断共同为业务成功而拼搏的信心。


让我们更有成就感的是,算法库上线后得到了很多客户的青睐,并形成了商业落地:在江苏,客户部署了我们的算法库后,核心算法的计算性能大幅提升,在未额外增加硬件成本的前提下,部署了更多的业务模型,还打造成样本点进行复制推广;在上海,客户的数据中心的数据处理量由1个省市扩大为3个省市,我们的算法库经受住了客户扩大4次数据规模的严苛考验,成功支撑了客户业务……这也许只是华为计算产业万里长征中的微小一步,未来还有更大的舞台等着我们去创造。



接下来,我和我的团队将继续挑战更多的算法、更高的计算性能目标,并伴随鲲鹏将算法库推向更多的合作伙伴,将我们不断积累的算法优化经验,贡献给鲲鹏生态的开发者们,携手产业伙伴推动ARM产业发展真正用算法给鲲鹏产业插上翅膀,展翅高飞长空搏击!






































本文来自《华为人》


点击"阅读原文" 【加入云技术社区】

相关阅读:

17年华为维护生涯,我总结了这“N个一”

辞掉海外轻松又体面的工作入职华为,他说要的就是“不稳定”

一位90后华为人回顾5年海外生涯:三十而已,三十而励

拿下“编程界的奥林匹克”竞赛世界冠军,22岁的她加入了华为

入职华为2年,24岁的他两破光传送性能难题

华为硬核少女入职两年半一路破格,蜕变从她初生牛犊当项目经理开始……

拒绝任正非请吃饭,开通第一个北极圈内的GSM网络:他在华为的经历远不止这些……

一个华为二十年老兵的存储往事

数学系小仙女不写代码求“破圈”,一年把华为这个社区做火了

华为海外常驻9年,他对家人说了这番话

华为海外15年,浮生一瞬间,我的退休告别贴

最新最全 2020 云状态报告「69页PDF下载」

RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」

更多文章请关注


文章好看点这里[在看]👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132729
 
480 次点击