原创: 万金 InfoQ 发布于 2017年7月18日. 估计阅读时间: 16 分钟
作者简介
万金
ThoughtWorks 高级顾问
15年知名外企与中国企业的IT从业经验,包括IBM,华为。 具有7年云计算相关经验,多系统的研发和运维经验,熟练掌握敏捷和DevOps方法论和实践,具有软件研发生命周期工具与流程改进丰富经验。《DevOps实施手册:在多级IT企业中使用DevOps》译者
我们常说的人工智能可以做什么?
“弱人工智能”(Narrow AI), 是在某些特定领域高效完成任务的专用人工智能, 比如识别图片中的内容或是通过搜索大量医学临床案例为医生提出治疗建议的专用人工智能。目前可实现的人工智能的本质是,人来提出目标,由机器分析大量数据人来高效找到答案。
人工智能应用的分类
很多情况下人工智能无法给出100%正确的回答(其实人类也是一样的),如何找到人工智能善于解决的问题就成了首要的任务。
人工智能应用可以分成三类:
核心业务,失败不可接受。医疗,银行,法律。
核心业务,失败率可接受。自动驾驶,自然语言理解。
非核心业务,对失败不敏感。用于改善用户体验。
从人工智能发展和应用的过程来看,通过对感知的模拟,帮助人类做决策,直到完全代替人类处理大量重复的数据方面的工作。
另一方面,由巨大商业利益推动的人工智能将很快成为现实,自动驾驶商业应用会带来客观的商业价值比如:
人为交通事事故减少,保险费降低,无人参与驾驶,用车成本减少到五分之一;
按需用车,汽车保有数量会减少到三分之一,导致车商业模式变革;
车辆流量变化,大量节省道路和停车场的面积,导致城市规划改变。
人工+智能才是最佳的组合方式
卡斯帕罗夫和李世石真的败给了机器吗?
(IBM的深蓝和谷歌的AlphaGo)在人类选手的对面,是人工智能汇集了所有人类智慧和经验的智能流算法,如果是这样的话人类必败无疑。
但反过来想如果人类也有一个人工智能辅助来比赛呢?那胜负就未尝可知了。
卡斯帕罗夫在被深蓝击败后,发起了自由式国际象棋比赛,可以使用人工+智能(半人马选手)方式参与比赛,由人工智能给出建议,人类来决定是否采纳建议。2014自由式国际象棋对抗比赛人类赢得了42场半人马选手赢得 53场,当前最优秀的国际象棋团队都是半人马选手由人类和人工智能组成。既然人工智能可以帮助人类成为最优秀的象棋选手,那么可以推测人工智能也能帮助人类成为最优秀的医生、飞行员、法官 和教师甚至是运维和开发人员。
人工智能的工作方式和解决的问题种类
上图为典型的机器学习流程(图来源于 Natalia Konstantinova博士的博客)
典型的机器学习通过无监督学习和监督学习,抽取特征,再通过机器学习算法,
实现基于通用特征分组,得出预测模型,通过预测模型为新数据数据打标签。
机器学习可以解决以数据为基础四类问题:逻辑推理预测、规划师、沟通者、体验与情感
由Ajit的一篇博客中总结出人工智能善于解决的12种问题
领域专家:模拟现场专家给出建议
领域扩展:给出新见解新方法。
复杂规划师:比非AI算法易于优化
更好的沟通者:智能代理,自动语言翻译
新感知能力:机器视觉产生了自主车辆
企业AI:改进业务流程
ERP AI: 通过认知系统增强ERP
跨界影响预测:比如自主车辆导致司机岗位需求降低;人为交通事事故减少,保险费降低;按需用车消费导致车企商业模式变革,车辆流量变化,导致城市规划改变。
目前算法和硬件问题无法很好解决的问题:语音识别达到人的能力。
更好的专家系统:通过资料无监督学习获取知识
超长序列模式识别:时间序列预测模型
情感分析:通过行为预测人类情感的变化
运维发展的历程与人工智能的作用
运维行业经历了初始、专业化、工具化、平台化、云化和智能化过程。从手动运维阶段基本没有数据,到规模化结构化数据和智能化非结构化数据的趋势。
人工智能发展初期充当辅助人类的助手角色,以增加销售额,提升用户体验,优化生产过程和节省成本为目标。
手动阶运维阶段
运维工作量小运维人员主要工作就是看监控屏幕,随着对运维要求提高,工作分工此阶段产生,产生了稳定,便捷,可靠,快速的工作原则。
人工智能可以做的是:基于人的经验,对结构化销售数据进行商业智能分析(BI)找出数据中的知识,从而提升销售额。存在的问题主要是数据专家基于经验发现业务数据中的知识,对业务了解程度成为BI有效性的最大瓶颈。即缺乏即懂业务规则又懂数据发掘的人才阻碍商业智能的发展。
规模化阶段
随着DevOps概念的推出,工具大量涌现来协助运维工作运维能力大幅提升,带来问题是很少有一家公司可以生产覆盖所有DevOps生命周期的工具,而学习多种不同厂商的工具完成任务带来很高的技术门槛。随着一些创业型公司崛起,运维工作量爆发式增长,为了保证业务的连续性SRE也在此时期产生,主要目标是使用软件工程技术实现业务大幅增长而运维工作了保持平稳。
人工智能可以做的是:出现以结构化数据为主工业级解决方案,使用算法为主解决商业通用问题,以提高人员利用率加快创造价值为典型问题。
同时也存应用了工业级智能解决方案有多大的效率提升很难估算和当数据知识变化后很难进行跟踪优化的问题。
生态化阶段
随着互联网规模的发展,少数大公司承担起基础设施的工作,通过高度集中提升数倍的运维效率(在亚马逊购买1美元的基础设施,可以带来与传统数据中心7美元投资相同的计算力),这种变革让云计算客户专注于业务的发展将基础设施运维交给云计算平台。市场规模继续增长一个公司无法使用一套解决方案覆盖所有细分市场的需求,生态化从而产生。因此大量的数据为人工智能实用化奠定基础。
人工智能可以做的是:出现以非机构化数据为主通用的技术框架,不同的公司负责一部分问题形成生态圈,协助业务人员完成工作,通过新感知能力半自动或自动化完成以前手工的工作。
如何结合新的感知能力辅助人类在巨大数据量,变化的规律中做出决策成为新的问题。
用矛盾论的观点分析DevOps
DevOps的本质是在解决矛盾的对立与统一的问题
DevOps存在矛盾的两方面,我们做的事情无外乎一分为二,最终二合为一 矛盾论
这是第一次西方的DevOps方法论与中国的矛盾论结合,其实所谓的方法论要不就被认为是废话(一般性原则),要不就是不被人理解(太深奥)。不妨我们往下看看,一分为二和二合为一是什么意思。
我们先抛开DevOps的定义,假设我们DevOps要做什么事情,他就像足球比赛开始时候裁判抛出的硬币正面或反面朝上,来决定由哪一方先发球,先发球就意味着具有很大优势,但是双方认可这枚硬币来作为双方都可以接受的方式来开始一场比赛。这就是DevOps在研发和运维工作中起到的低成本的沟通协调的作用。
很有趣的一点就是随着DevOps理论的提出各种工具(硬币)大量涌现,这些工具只不过提供了比抛硬币复杂一些的规则而已。而人工智能会给这些工具带来增强效果。
不能一味的追求事物的某个方面而忽略另一方面
我们在回过头来看一分为二是什么意思。
研发追求功能的吞吐量,主要关注需求实现时长,发布频率和部署前置时间。而运维追求稳定性,主要关注部署成功率,应用错误率,事故严重程度和严重bug。这本来就是一对不可调和的矛盾。
但是从更高的维度看,只做好吞吐量或是稳定性,不能带来性能提升、体验提升和业务成功。当我们确定了运维和研发的共同目标--即业务成功后,问题就变成:为了共同的业务成功,研发和运维在DevOps协同过程中,不会一味最求吞吐量或是稳定性。
为什么人工智能在DevOps中大有可为?
DevOps可以获取几乎所有类型的数据
指标体系框架来自《精益软件度量》
我们了解到人工智能解决的问题都是以数据为基础的,那么有了价值、效率、质量和能力方面有指标和数据就可以在DevOps过程中通过人工智能解决问题了。
找到DevOps全生命周期中人工智能可以改善问题
(点击放大图像)
在DevOps生命周期中还有很多工具无法实现自动化的过程,这些过程往往会投入大量的人力和沟通成本,也有很多信息不足无法做出很好决定的场景,在这些场景中人工智能可以根据以往大量数据训练的模型,给出建议,从而给出研发和运维都能认同的工作方式,提升工作效率提高工作质量。
当人工智能牵手DevOps
(点击放大图像)
我们现在有了DevOps生命周期中的数据,同时也了解到人工智能易于解决的四类问题。我们可以尝试使用全连接的方式找出36(4x9)个在DevOps领域里适合使用人工智能解决的问题。
比如上图中的“精益需求管理”过程中:通过价值和效率数据使用逻辑推理和预测人工智能方法,得出需求的价值命中率和客户满意度的预测。通过这些人工智能得出的标签优化需求的优先级管理。这样从完全靠人工经验的过程变为人工智能辅助完成的高效过程。
到那时需求人员只需要调节想得到的转化率(运营指标),或是性能(运维指标),就可以通过人工智能方式自动提升改善这些指标的需求的优先级。。甚至是根据需求改变的特性,分析大量现有代码库中的通过测试的代码而自动为开发人员推荐代码。
“分层自动测”过程中:使用图片转文字,方式将必须人工完成的测试自动化弯道提高测试效率与准确率。
“持续运营反馈”过程中:通过自动化运维根因分析,提升定位系统问题的效率。
找到成功的第三条路,在吞吐量和稳定性中间建立平衡让两方面都能正常行事
再说“最终二合为一”的矛盾论下半部分。通过人工智能给出的第三种方式让双方都能向自己的目标前进,从而为一个共同业务成功目标结合为一个整体。
比如,在“安全发布策略(灰度发布)“阶段,使用研发团队的能力数据、内在质量数据和历史中发布后的外部质量数据训练机器学习模型。通过这个模型在发布阶段给出软件发布后外部质量评估。在发布过程中对比前后两个版本的外部质量差距来决定是否进入灰度发布的下一个阶段。回想当初那个正面是Dev反面是Ops的硬币,这个AI的工具是不是先进了不少呢?
人工智能可能的应用
通过DevOps过程获得数据,使用人工智能提升服务或产品竞争力需要想象力。唯一限制我的是我们的大脑想不到的伟大的想法,而不是什么我们做不到。下面想象一下科幻大片里的一些场景。
1.终结者自动驾驶一样,通过监控系统反馈,进行自动化软件发布过程
2.安德的游戏一样动态监控互动界面,像一个孩子通过AR方式指挥庞大的舰队战胜外星生物那样管理系统软件与硬件的运维工作
a.告警抑制
b.服务自愈
c.主动运维
3.像钢铁侠超大别墅中智能管家一样的容量规划管理
a.自然语言交流
b.容量预测规划
4.像黑客帝国杀毒程序一样的风险合规管理
a.攻击特征提取
b.主动防御黑客攻击
5.像乔布斯一样的先验用户体验
a. A/B测试(fisher‘s exact test费歇尔精准检验)
b.软件质量评估
不得不提的是1996年12月苹果公司收购了NeXT,使乔布斯回归苹果,到2011年10月乔布斯去世,苹果市值在15年时间里从30亿美金增长到3470亿美金,增长115.7倍。不得不说乔布斯的用户体验感知能力足够科幻了。
智能运维领域案例
2014-2016百度通过机器学习实现了被动异常监控和主动的流量调度算法。
腾讯通过人工智能帮助我检测和打击欺诈犯罪
很多公司都在人工智能方面做出了尝试,在目前寻求差异化的时代,人工智能可以成为产品的一个亮点进行差异化竞争,成为避免价格战的手段。
智能运维行业应用参考:
Twitter: Seasonal Hybrid ESD (S-H-ESD)
Netflix: Robust PCA
Linkedin: exponential smoothing
Uber: multivariate non-linear model
尾声——在很长一段时间里人工智能不能完全取代人类
人工智能不会导致大范围失业,随着人类的技术发展,生产力的提高,人口在增加,不过失业率没有明显上升反而生活水平在提高,更多的工作产生了,人工智能也不过是一种提高生产力的技术而已。 随着生产力提升各种细分低技术含量工作也会继续细化吸收被释放的低端劳动力,产生比如细分的家政服务换季整理衣服,高层建筑擦玻璃。
再看我们的祖辈从事工业和农业工作,那个年代无法想象会有靠动动手指就能养活自己的程序员的职业。而我们大多从事技术工作,而不是工人或农民。机械化取代了大量农业劳动的同时,生产率的提高了,价格的下降,随着产业发展更多需求来带更多投资。而周边产业获得投资日益发展带来更多高端就业机会,比如生物科技农药化肥,农用机械也随之产生。
目前人工智能没有自我意识, 就像人类根据鸟类的启发造出飞机一样,人类和人工智能是不同的智能,无法让人工智能像人类一样自主学习。 可以预见在相当长的时期内人工+智能的组合方式会成为主流,由人类意识来确定目标(定义模型训练的损失函数),由人工智能高效实现。
所以目前大多数人工智能只应用在非常狭小的领域,这些人工智能虽然高效但“自闭” 在自己的领域里。比如也许人工智能可以与人类高效的沟通,但他并不能像相声演员一样给你带来愉快的沟通氛围。
在可预见的未来的很长一段时间都里,人类把一部分运维工作交给人工智能,然后去创造新的运维工作,随着新运维工作不断成熟又会把一部分工作交给人工智能不断循环。
---------------------------------------------我是说正事分割线----------------------------------------
既然您都这么用心的看完了,那就送个彩蛋吧。作者翻译的《DevOps实施手册》已经发行。
本书从如何开发企业自己的DevOps手册入手,开发企业DevOps变革的商业案例,最后通过相互信任的企业文化将DevOps成果不断扩大到整个公司。
据说作者近期会对本书重点章节进行解读,并在6月29日的《DevOps国际峰会暨DevOps金融峰会2018·北京》上签名售书
DevOps国际峰会连接:https://www.huodongjia.com/event-1047513737.html
主要章节介绍: