近来,关于机器学习的报道很多,国内外的大型互联网企业都在着手对机器学习的研究。对应用性能的高效管理,首先要了解应用的一手数据,通过传统的数据获取方式已经不能满足企业的发展和市场环境,这就需要借助机器学习的技术手段,来更智能、更迅速、更准确的找到所需要的信息,快速解决问题。
\\2016年8月18-19日,由极客邦、InfoQ和听云联合主办的APMCon2016中国应用性能管理大会将在北京举行(现在报名,享6折优惠),聚焦当前最为关键的移动端、Web端和Server端的性能监控和管理技术。
\\本届大会,我们有幸邀请到了AppDynamics Principal Data Scientist,Machine Learning Engineering 赵宇辰,前来分享《下一代数据驱动的智能APM:痛点,趋势及解决方案》的内容,讲述他在AppDynamics一直研究的机器学习技术在用户数据挖掘、应用性能分析领域的实践及宝贵经验。
\\InfoQ:能不能介绍一下之前作为Scissorsfly联合创始人的这段历史?对您之后选择的数据领域是否有很多帮助?
\\\\\赵宇辰:相对于纯数据研究,我的经历可能相对丰富一些。本科清华毕业,在美国读博期间,我选择数据挖掘和机器学习作为我的主要研究方向,在该领域先后发表了多篇学术论文,至今仍然是顶级数据科学会议KDD的委员会委员,同时还兼任很多杂志和会议的审稿人。除了理论研究,我还将机器学习的方法应用到实际的产品中,从大公司到小的创业公司都有,比如IBM Research,Linkedin,eBay Research,Sumo Logic等等。
\\还曾任General Assembly的首席数据科学讲师,在硅谷教授数据科学的相关课程。中间也曾有过一段创业经历,从BD到Marketing甚至客服都要自己去做。每一段的经历都让我能跳出自己的comfort zone,学习到很多不同的东西,这些对于我做数据产品以及理解其相关需求,都非常有益,毕竟我们的目标是做用户喜欢的产品,给用户带来价值。
\
InfoQ:同时,作为LinkedIn Intern Hackday裁判,让你看到了国外学生的哪些优势是让你有所感触的?
\\\\\赵宇辰:骇客大赛(hackday)由LinkedIn公司主办,所有在硅谷地区的学生和实习生都可以参加。比赛的条件可以说是既宽松又“魔鬼”。宽松是指所有人,只要是在硅谷地区的都可以参加,主办方提供丰盛的美食和饮料,比赛的内容不限,你想做什么就做什么;“魔鬼”是指只有24小时去实现你的想法,那么意味着这24小时就不停地工作,没有休息时间。这个主办思想从活动的标语就很清晰地体现出来:eat,hack,but no sleep。
\\我有幸和Linkedin的工程SVP Kevin Scott,Rapportive的CEO兼Tindie的工程副总裁Julia Grace一起作为比赛的裁判。在经过24小时的“hack”后,一共有50多个团队展示出了作品。看了所有的demo后,有三点让我印象非常深刻:
\\
- 年轻:几乎所有的参赛者都是本科在读,甚至是高中生。然而从他们的作品和展示里,不乏听见创业、用户体验、商业以及各种最新的技术词汇。美国的创新和计算机教育确实是从小抓起的。\\t
- 高效 \u0026amp; 高质量:虽然参赛者很年轻,但是作品的质量却不低。很多作品都有自己的特色,甚至都可以作为一个小的单独创业项目。虽然时间有限,但从实现的角度,小到后台架构和页面细节都一丝不苟。\\t
- 创新:展示的demo五花八门,涵盖了各种最新最cool的技术和想法,从机器学习、图像识别到各种IoT设备,想法之多、思维之广确实让人大开眼界。\
通过短短的24小时的hack行为,我由衷地佩服参赛者们的聪明才智、创造力、动手能力、想象力。透过他们,我明白了为什么硅谷能数十年一直是全世界传奇式的创新发源地,从他们身上,仿佛能看到硅谷的未来。
\
InfoQ:介绍一下您目前在AppDynamics作为首席数据科学家的主要工作职责吧!
\\\\\赵宇辰:因为是专注于美国和欧洲市场的2B软件公司,很多人可能不知道,我来简单介绍一下。
\\AppDynamics是一家主攻APM企业软件的独角兽公司。在APM领域,AppDynamics近几年在Gartner的魔力象限(Magic Quadrant)上一直是Top 3的厂商。在今年Gartner的报告中,AppDynamics在所有的APM use cases里排名都是第一。
\\我在AppDynamics主要负责数据科学和机器学习的产品战略和研发工作,大致分为两块。
\\
- 第一块是战略研究。因为机器学习对于企业软件相对来说是比较新的方向。所以在产品研发之前,首先要从战略的角度研究接下来的5年内,哪些是我们需要投资的领域。这就需要和销售、市场以及产品等部门进行布道和沟通,也就是说把我们想做的数据产品首先“销售”给公司的内部团队和决策层。\\t
- 第二块是具体的产品架构设计和研发工作,内容涉及到阅读相关的论文,机器学习算法的研究、工程实现、实验和系统整合等。\
InfoQ:目前,机器学习技术在AppDynamics的应用场景有哪些?
\\\\\赵宇辰:目前为止,我们已经将机器学习和数据挖掘的技术应用在不同的数据类型上,包括日志、Business Transaction (BT),Real User Monitoring (RUM)等等。简单来说就是如何更智能、更迅速、更准确的帮用户找到所需要的信息。
\\举个例子,突然某天一部分用户反映不能用iOS的设备登录了,可是运维人员发现所有测试正常,用浏览器和Android客户端的用户都没有问题,甚至很多用iOS的用户也可以正常登录。我们如何从数百上千台服务器中的海量信息里发现具体的根源?这是一个很常见的例子,因为日常运维最常见的并不是整个系统都不工作了(complete failure),而是一小部分服务不能正常工作(partial failure)。到底这种partial failure在哪里,找到具体的根源通常需要运营团队很多个小时,甚至很多天才能手工排查到。现在,我们利用机器学习的技术,成功可以将这个MTTI (Mean time to investigate)降低到几分钟甚至几秒钟。运维人员只需点击一下鼠标,系统自动分析出我们认为最有可能出错的根源。
\
InfoQ:在数据挖掘和机器学习技术的研究上,您踩过哪些坑又是如可解决的?有什么心得体会?
\\\\\赵宇辰:从社交网络的机器学习到电商再到运维APM的数据挖掘,中间踩过的坑太多了。把任何一个机器学习技术应用到具体的产品中,上线到production,都是非常不容易的,可以说这是一个非常复杂的系统工程。其中可能只有不到5%的时间是在具体的算法研究上,其余的很大一部分精力需要放在如何让系统更稳定、更scalable上,同时还要考虑到和系统其它部分的集成以及用户体验的设计上。
\\这其中的心得体会是有很多的,各个部分如何取舍,这些足以再做一个专题,希望可以找个机会和大家分享。
\
InfoQ:能不能结合实践案例展现一下AppDynamics的各种机器学习评分算法的有效性?
\\\\\赵宇辰:最近大家都知道Google的AlphaGo下围棋战胜了李世石,这成了一个很经典的机器学习案例。
\\在APM领域,我再举个例子。日志信息对于APM和运维是非常重要的,但是日志同时又是非结构化的文本信息,这就需要用户手动的写正则表达式(regular expression)去提取有用的信息。但通常写复杂的正则表达式是一个既费事又费力的工作。
\\我们最近的一个工作就是让用户用鼠标选取他们想提取的信息,系统智能的生成最有效的正则表达式,这样即使用户从来没有学过正则表达式也可以顺利提取日志中的有用信息。虽然这和围棋的应用场景不同,但一样是利用机器学习的技术,同时这个任务并不简单。我们每次的搜索空间在10^26这个量级,这是什么概念呢,对于任何一个用户请求,如果把系统生成的每个合法的正则表达式放在一个米尺上,然后将这些米尺连起来,那么它们将可以横跨目前科学可以观测到的整个宇宙,这仅仅是对于用户的一个请求。对于千变万化的日志来说,这个数量级是非常非常巨大的。目前我们可以做到在100ms内返回最优最高效的正则表达式,这样大大提高了系统效率,同时降低了使用日志工具的门槛。据我所知,我们此项技术在所有同类产品中是最领先的。
\
InfoQ:为什么说App的复杂性越高,对App的管理、诊断和根源分析就越具有挑战?
\\\\\赵宇辰:在2010年以前,传统的软件系统一般都不复杂,很多都是单机版,或者只是简单的几台机器组成的系统。现在随着Microservice的大行其道和逐渐增多的应用场景,App复杂性越来越高。针对App的管理、诊断和根源分析,从数据上来说,我们就有各种不同的数据类型,比如:
\\
- Metric:例如CPU使用率,Java GC内存,网络延迟,每分钟销售总量,活跃用户量等等。\\t
- Category:例如IP,用户所在国家和地区,付款方式等等。\\t
- Hierarchy:一个大型的商业系统里有不同的modules,分布在不同的tiers上面,同时每个tier里有数量不一的服务器,这就形成了一个分等级的树状结构。\\t
- Graph:系统的每一部分都和其他部分有交互,这自然就形成了一个有向图(directed graph)。\\t
- Unstructured:系统会生成大量的非结构化信息,比如日志,stacktraces,错误信息等等。\
每个数据类型都有自己的分析方法和模型,如何将这些方法和机器学习算法有效的结合到一起,成为一个统一的整体,同时给用户提供一个及其简单好用的产品,这是非常有挑战性的。
\
InfoQ:在通过构建强大的端到端机器学习系统来收集应用数据,并对数据分析研究和数据过滤上,您有什么独到的见解吗?
\\\\\赵宇辰:正如之前所说的,APM涉及到的数据类型非常复杂,同时数据量很大。一个用户在手机端简单的点击,很可能已经在后端服务集群中产生了大量半结构化的数据信息。对于一个end to end的数据分析系统,我认为至少要考虑到以下几点:
\\
- Scalability:系统是否可以扩展,能处理多大的数据量。如果一定要有取舍,哪些地方可以通过采样、聚合和压缩的方法来提高系统的吞吐能力。在数据量突然增多的情况下,能否快速的扩展现有的系统等等。\\t
- Usability:在设计一个机器学习系统的时候,首先考虑的问题并不是技术,而是应该先想想具体我们需要解决什么问题,所设计的系统是否能给用户带来价值,能否尽量简化用户的操作和工作量。确定了这些之后,再考虑用哪些方法和技术来实现这个系统。\\t
- Flexibility:这里的灵活性是多方面的。从算法上来说,如何设计一个机器学习算法,同样的算法是否可以用在别的地方;未来系统如果扩展和有新的数据类型加入的情况下,当前的设计是否也可以随之拓展。从系统架构上来说,所设计的机器学习系统是否方便维护,在部署和升级上有没有特殊的要求;是否要运行在云上,还是要以on-premise的方式部署,亦或是两者兼有等等。\
InfoQ:互联网巨头目前都声称在研究机器学习,您认为AppDynamics的机器学习跟其他公司相比有什么独到的地方?
\\\\\赵宇辰:面对消费者的公司在应用机器学习上走在了前列。比如我之前工作过的eBay和Linkedin都早早的将数据挖掘和机器学习应用到了产品中。相对来说,面对企业用户的公司在这方面略显滞后。随着数据量的越来越大,传统粗犷的分析方式已经逐渐不再使用,现在看到越来越多2B端的企业和创业公司对机器学习加大了投入,甚至很多已经将机器学习作为了企业的核心竞争力。
\\我一直认为,没有普世的机器学习方法。对于不同的应用场景,也许最本质的算法类似,但是要对不同的应用做优化和个性化,比如feature engineering,算法的objective function调整,对于运行时间的要求,分布式的处理,在云上和on-premise的部署等等。
\\众所周知,在APM领域,数据类型非常复杂,同时它们又相互关联,在机器学习上我们这几年的投入和深耕筑起了有效的护城河,同时体现了产品的差异化优势。
\
InfoQ:AppDynamics正在利用数据和机器学习来提供更精准、更有效的下一代APM解决方案,这其中会有哪些难点?希望达到怎样的预期效果?
\\\\\赵宇辰:虽然APM领域有着数据量大,数据类型多样,应用场景复杂的特点,但是我们的目标是希望我们的产品尽量的简单、易用,一句话就是:打造DevOps领域的智能大脑(The Brain)。一般来说,DevOps需要对系统有很深入的理解才能有效的利用现有的APM工具管理App的性能,同时这些工具的学习曲线很陡峭。我们努力的方向是不让运维人员大海捞针的从海量数据中寻找所需要的信息,而是尽可能智能的将他们最需要的信息呈现出来。
\\最理想的情况是运维人员不需要理解各种类型的数据以及复杂的应用场景,我们的The Brain智能大脑能从复杂的数据中快速的自动找出用户最需要的信息,解决他们的实际问题。
\
InfoQ:您个人对应用性能管理有怎样深刻的理解?您觉得参加APMCon2016垂直领域大会的意义是什么?
\\\\\赵宇辰:随着越来越多的应用放到了互联网和移动端,对于软件系统性能的管理和监测已经成为了每个软件公司不可忽视的难题。很高兴得知有了APMCon这样在APM垂直领域的大会,这样让我们这些在APM领域的从业者有了很好的交流和沟通的机会,因为很多具体的心得体会和技术应用是APM这个领域所独有的。而且,我知道听云是国内APM厂商中唯一一家上榜Gartner魔力象限的,这次来国内参加APMCon也是期待能和大家进行更多的分享交流。
\
InfoQ:感谢赵宇辰接受我们的采访!
\\关于受访者
\\赵宇辰博士,本科就读于清华大学,之后在美国伊利诺伊大学芝加哥分校获得博士学位!自2014年担任AppDynamics首席数据科学家,主导和负责下一代大规模数据挖掘、机器学习、异常检测和分析的APM产品构架和研发工作。他自2013年担任顶级数据科学会议KDD的委员会委员,还曾任General Assembly的首席数据科学讲师,同时在Sumo Logic,Linkedin,eBay,IBM Research有相关的工作经历。并且还在KDD,ICDM,ICDE,CIKM等国际顶级会议发表论文十余篇,在APM和log领域拥有多项国际专利。