微信号:infoqchina

介绍:有内容的技术社区媒体

AI时代,从“小白”到“小牛”工程师的心法

2017-08-13 09:02 张真
作者|张真

编辑|小智


回复:  心法,获取视频下载。

修炼心法

工程师的成长历程尽管可能经历不同,优秀的工程师的成长曲线中还是有许多共通之处。作为一个玄幻武侠文学爱好者,常喜欢把这个过程比作武侠打怪升级,既然是武侠,那自然是有心法的,这里将“小牛”成长心法总结成三篇共九句箴言:

炼气篇:

基础很重要,算法,数据结构,操作系统等等;用正确的方法做事,不绕过,不取巧,走正道

  • 打好基础,练好招式;

  • 端正态度,用正确的方法做正确的事情;

  • 关注细节,不嫌麻烦,追求卓越

筑基篇:

工作经历五花八门,不要做完就完,要形成自身的核心竞争力,就需要总结得失,同时构建符合自身的知识体系

  • 理解工作目标,常常反思;

  • 不断总结,沉淀精华;

  • 思考人生,知识体系,构建核心竞争力

升仙篇:

求知是没有止境的,只有不断涉猎不同的知识,才能做到螺旋上升;同时基础要不断回复,用研究思维看问题,不急于否定 / 肯定新事物

  • 广泛涉猎,抓住机会,不断实践;

  • 回复基础,思考突破,反复创新;

  • 好奇心爆棚,研究思维贯穿始终;

有了上面的心法,去迎接 AI 时代,相信会从容许多。有人可能说 AI 很虚,很飘,但其实 AI 的本质就是算法,一切皆归于算法。它也不是最近因为深度学习引爆此次人工智能革命才进入公众的视野,事实上 AI 存在已久,它无所不在,从问答系统,决策支持到传统 BI,数据挖掘到大数据分析,再到认知计算。

那么怎么去理解 AI 的生态,个人认为 AI 的生态尚没有明确定义,但至少能够看到两种角色:第一种是 AI 科学家,类似大数据领域的数据科学家,他们的使命突破人类 AI 技术的边界,不断创造新的技术;另一种是 AI 工程师,或者用更加贴切的称呼就是 AI 领域工程师,简称 AI FE,类似大数据的领域工程师,他们的使命是推动 AI 技术不断成熟落地,转化为实际生产力。从 Java 开发做个比喻,AI 科学家类似创造 Spring 框架的人,而 AI FE 是 Spring 的使用者,要将其用于某种业务需求的应用系统。

AIOps 点亮工程师的新人生

伴随着自动化运维的发展,我们又迎来来一个新概念“AIOps”。到底什么是 AIOps 呢?知名咨询企业 Gartener 说,基于算法的运维(ITOA)即是 AIOps,算法即运维。在我看来其实算法在整个研发体系的应用已经有些历史了,例如腾讯在几年前就用 3α算法实现无需设置阈值的报警,不仅如此,3α算法的阈值域变化还是动态的,根据现实调节的,不得不说还那么点“智能”的味道。又例如,我们宜信也在几年前开始将微智能的思想应用到系统中,微智能强调自动发现,自我维护,自动适应,这样的目标也是希望系统更加“聪明”的工作。特别是在 AI 技术炙手可热的当下,AIOps 或许解读为 AI(人工智能)+Ops(运维)更好,AIOps 就是将 AI 技术应用到运维领域的“工程化”过程。AIOps 所代表的系统应该具备三个特征:类人交互,自主决策,理解执行。

同时,智能即运维也代表了 DevOps 实践的一种进化方向。IT 运维发展大致经历这么几个阶段:

  • 早期工具时代:运维可以计算机化,没有行业共识的流程和工具。

  • Pre-DevOps:ITIL 提出,建立流程管理质量;DevOps 作为一种思想刚刚萌芽,还没有落地工具。

  • DevOps:它的工具链体系已经成熟,行业有了明确的共识,同时自动化运维的思想,方法,工具得以大力发展。

  • AIOps:就是当下,个人认为 AIOps 并不是要取代 DevOps 或推翻它的工具链,而是赋予 DevOps 工具链更多“智慧”,AIOps 与 DevOps 工具链的深度集成是必由之路。既然已经处在 AIOps 兴起的当下,对我们工程师而言又有哪些新的机会呢?其实我认为这是对整个研发体系的机会,而不仅仅是运维:

  • 对运维工程师而言,懂运维是天生优势,学习如何运维 AI 的思维解决运维问题是转型的关键。例如运用机器学习从海量监控数据中提取异常点特征,实现异常的智能预测。

  • 对开发工程师而言,懂开发,懂应用是好起点,在要求人人参与运维的今天,以 AI 的思维构建应用是全新的方向。例如从硬编码实现服务调用转变为让系统自己学习 API 实现调用,实现真正的智能服务编排。

  • 对测试工程师而言,作为 DevOps 的关键一环,用 AI 的思维更高效的保证软件质量成为新的应用场景。例如运用机器学习从海量测试日志中提取特征实现测试异常的分类会大大提升测试结果根因分析的效率。

那么如果是在校同学,应该怎么去拥抱 AIOps 呢?有的人可能说我们学校没有运维专业,更没有 AIOps 专业。其实专业从来就不是问题,就像从事 IT 的,往往也不都是科班出身,而且 AI 也为数学,应用数学等专业的同学找到新的职业方向。那么关键问题是什么呢?还是基础很重要,一切皆归于算法(重要的事情说三遍)。此外,在校同学应该加强实践,从应届招聘的情况来看,往往实践较多的同学会有明显优势。有同学可能问,我们怎么实践 AI 呢?其实要从生活或学习中找场景,例如是不是可以为自己量身定制一个小的智能推荐系统,利用 AI 技术实现从海量数据中推荐符合你需求的旅游去处。

总之,无论是工程师还是在校同学,我相信 AI 以及 AIOps 都是极好的新机遇。

AI FE 的修炼之术

既然面对这么好的新机遇,我们要如何武装自己,成为一名 AI FE 呢?

首先,前面的说的心法还是管用的,那可能是贯穿整个职业人生的术:打好基础,正确方法,不断总结,知识体系,反复实践,研究思维。

再者,实践 AIOps 知识体系构建的三部曲:

  • 第一步:算法原理搞明白。记得上学时,有本书叫《算法导论》,掌握里面的基本算法原理是培养算法思维的好途径。从入门机器学习的角度,结合个人经历,我推荐大家关注以下几个算法的原理:神经网络,马尔可夫模型,决策树,逻辑回归。一方面现代机器学习的算法都是从这些基础算法里发展出来的,“知根知底”才能融汇贯通,另一方面在我们的实际应用中,发现这四类算法及其衍生算法是确实能够通过“工程化”手段解决实际问题的。

  • 第二步:要了解 AI 的常见领域以及相关工具,这是技术选型的前提。一般来说常见的领域包括自然语言处理,搜索技术,知识图谱,图形图像分类,语音识别等。常用的开源工具有 NLP 类(中文方面 Standard NLP,清华 NLP,复旦 NLP 等),word2vec(词向量),Elastic Search(搜索引擎),Neo4J(知识图谱,图数据库),TensorFlow(基于流的机器学习),DeepLearning4J(java 的深度学习工具)等等。

  • 第三步:掌握 DevOps 工具链(3 大工具:自动化测试,CI/CD,监控)的特性,因为它们是 AIOps 处理的数据来源,也是 AIOps 实现执行的目标;同时,了解运维知识,逻辑,方法等也是很重要的,最好是能成长为运维专家。

另外,要了解是系统体系“智能”的三种玩法,在不同场景下,玩法不同:

  • 实现方式偏编码方式,让系统体现智能。信息搜索和微智能属于此类

  • 实现方式模拟人的行为,最终让系统体现智能。机器学习,知识图谱等属于此类

  • 混合方式,将前两种方式一起使用。其实在真实场景中,往往是这种方式,这主要是由于 AI 技术还处于发展期,有的场景可能难以完全模拟人的行为,也可能付出成本很高,投入产出不适合。

小窥 AIOps 落地之道

那么 AIOps 到底应该如何落地呢?在引入 AI 技术时, 我们也进行了仔细的思考,坦白说,AI 还不是“平民技术”,并且其投入和产出也并不像去使用某种开发框架一样直接。最终确立了以下原则:

  • 从实际痛点入手,找到适合场景以及正确的问题来试点,而不是“大而全”的 AIOps 解决方案。

  • 技术选型上充分利用已经比较成熟的开源 AI 技术,可以做必要改进,但尽量不重复造轮子。

  • 充分使用我们现有的 DevOps 工具链,而不是全面推倒重来

在金融运维 / 运营领域,我们认为有两类场景是可以引入 AI 技术来产生效益的:

  • 第一种是时效类场景:就是运维要求响应以及恢复越来越快,快到逐步超过了人 + 工具的极限,另外人员可能休假,以及其他不能作业的状态。运维界流行一句话“出门三柱香,保佑服务不要挂”,但墨菲定律总是让故障发生在运维休假的时候。此外,日常上线也是经常遇到的场景,尽管 DevOps 流水线已经让一切都自动化起来,但是这些过程是人定义的,能够预防的也是人预料的异常,事实上往往出现意外,此外上线时机的选择,验证,合理回退等仍然需要大量人工介入进行决策

  • 第二种是协作类场景:我们经常会听到业务同事抱怨每次出现问题,他们都不知道进展如何,不知道出了什么问题,什么时候能够解决,而且大量 IT 术语他们也听不懂;我们也经常遇到研发同事追查代码问题,但是不了解基础设施的状况,还得找运维同事帮忙。这里症结在哪里呢?其实是缺失一个“全知”的,掌握人,业务,系统的状况的助手,就像钢铁侠的 Javis 和 Friday 一样。

那么作为一个 AI FE 的日常工作内容有哪些呢?

首先,AI FE 仍然是工程师,需要完成工程师日常所有内容,开发,测试,运维一样都不能少。只是增加了一些内容:

  • 不断提高正确率是每天要面对的目标。AI 技术,特别是机器学习是基于统计学的,所以概率就变成了工作内容的一部分。例如需要系统通过说话内容来识别人的意图,通常来说通过算法计算出来的是好几种近似的意图目标,机器学习算法会告诉你他们分别的近似概率是多少,有时候可能会都很低,这时就要考虑如何提高识别正确率。

  • 从关注 Bug 到关注效果。传统运维中,大家很关注系统出现了什么 Bug;而面对 AIOps 系统,不仅仅要关注 Bug,更要关注效果。例如某个业务同事询问“某某系统运行如何”,AIOps 系统如果回复一堆 IT 术语或指标,这个业务同事是蒙圈的,从功能角度说这里没有 bug,但是效果很差。

  • 关注 AI 技术的新动向,提供选型参考。AI 技术还在不断发展,可能每天都会产生一些新鲜的技术,作为 AI FE 需要时刻跟进,了解不同技术的应用可能性,成熟度等等,并且在适当的时机和场景下引入这些技术来解决实际问题。

总结一下,要落地 AIOps,需要从痛点出发,选择适合的 AI 技术,与 DevOps 工具链深度集成。AI FE 要关注如何提高正确率,要关注应用效果的好坏,同时要保持对 AI 技术的敏感度和新鲜度。

相信大家还是很好奇,我们到底是如何把 AI 技术落实到应用场景中的呢?前面提到的 AIOps 系统特征类人交互,自主决策,理解执行的实现原理是什么?我将会在由 InfoQ 主办的 9 月 10 日在上海举行的 CNUTcon 2017 智能运维专场为大家解答,敬请关注。

彩蛋!!

CNUTCon 全球运维技术盛会即将于 9 月 10 - 11 日在上海开幕,还有 9 月 8 日 -9 日会前两天的深度培训,如果想了解运维最新技术趋势和实践,来 CNUTCon 学习一定是你的不二选择!


9 折 限时优惠报名中,购票页面输入优惠码:CNUTCon666 还可享受大会门票特别优惠,购买“2 天培训 + 大会套票”优惠更多,数量有限,先到先得!购票咨询:18504256269 。

今日荐文

点击下方图片即可阅读

CTO 与工程 VP 的区别?





 
InfoQ 更多文章 Q新闻丨《星际争霸2》成 AI 研究环境;软件开发薪酬调查报告:Go、Scala最赚钱;Linux&nbsp CTO 与工程 VP 的区别? 微服务在微信的架构实践 解构盛名之下的人工智能:真正潜力在哪、实践意义如何、面临什么障碍? Apache Kafka:大数据的实时处理时代
猜您喜欢 微服务架构之RPC-client序列化细节 ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台 【干货】张佐:面向可持续创新的大数据伦理 Google:如何分析和定位分布式环境下的慢请求(长尾请求)? 关于微信支付服务商开发的一些基础知识