又一代码清库的惨案发生了,不过这次要背锅是 AI。
近日,美国***点评网站 Yelp 的工程师训练的神经网络闯祸了。他们训练了一个用来消除 bug 的神经网络,万万没想到,该网络删除一切,从根上彻底了实现“bug-free”......有点儿厉害。
Yelp 团队在 APP 中向近期可能感到体验不畅的各位用户致歉,该团队还表示,他们将不得不进行回滚(Roll back),但随即话锋一转,他们说好的一面是,这说明 APP 中 100% 没 bug 了啊。
好吧,没跑了,这个锅还是工程师的。
神经网络算法的这一波操作,让人不禁想起郭德纲的一个相声段子,“我心善,见不得穷人,于是把自己目之所及的穷人全赶走了。”收到工程师的任务指令后,兴许 AI 发现一个个 debug 太不省心,心一横,干脆一键 all clear 算求。
这事要在国内互联网公司,搞这个大一个工程事故,九成要说杀一个工程师祭天,尽管 Yelp ***的点睛自嘲蛮轻松的,但人前卖笑,谁知道代码清除后工程师是不是目瞪口呆或者心里在吐血呢......毕竟,要 Roll back。
Roll back 究竟意味着什么?它指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。那 Roll back 工作量有多大呢?回滚对程序员意味着非常严重的失误,微博网友@互联网八卦民工评论说,Yelp 在真实环境训练自己的人工智能神经网络去删除 app 中的 bug,结果是人工智能把所有都东西都删了,这不是一个简单的 Roll back。
网友们更好奇的是 Yelp 的工程师训练了一个怎样的网络?拿何种样本训练的?损失函数是如何设计的?有人猜测,代码里面没有 bug,损失函数一直是零,BP 和优化器无用武之地,所以触发异常,把整段代码都视为 bug?
代码里面没有 bug 似乎不太可能,翻阅 Yelp 的版本更新历史记录,你会发现这简直是一部“除虫史诗”,你们感受一下:
本来是想让 AI 来帮忙 debug 的,现在工具反到成了阻碍。不知道是 debug 工具本身的黑箱问题,还是使用它的人没找到正确的“窍门”。至于这次 Yelp 工程事故报告还未有进一步的信息披露,但用神经网络算法 debug 应该有风险,部署需谨慎。
不过一款让工程师省时省力的 debug 工具显然是人人所期待的,AI 科技大本营之前写过一篇《@程序员,终于可以放心写 bug 了!Facebook 的 debug 神器你值得拥有》中提到 ,去年 9 月,Facebook 基于 AI 技术再次推出新款代码调试工具 SapFix,可针对特定的 bug 自动生成修复程序,然后将其提交给工程师,经确认之后,然后再部署到生产环境中。相比其一年前已投入大规模使用的智能自动化软件测试工具 Sapienz,SapFix 能够在没有 Sapienz 的情况下运行,主要用于修复 Sapienz 在生产前发现的程序 bug。
从发现 bug 到修复 bug,Facebook 有一套完整的流程:首先 Sapienz 以及 Facebook 的静态分析工具 Infer,会帮助定位代码中需要修补的点;一旦 Sapienz 和 Infer 精确定位与崩溃相关的特定代码部分之后,就会将该信息传递给 SapFix;***,SapFix 会参考几种不同的策略,自动生成补丁。
根据 Facebook 的数据,Sapienz 报告的大约四分之三的错误都需要开发者来修复。自 Facebook 开始测试 SapFix 之后,该工具已经成功生成了被人类审核者接受并部署于生产的补丁。不过,目前 SapFix 总体上仍在开发阶段。
Facebook 都还只是在尝试阶段,Yelp 的工程师这次似乎对自家的 debug 工具太自信了,一键清库简直不能更酸爽,不知道他们这次有没有感受到来自深度学习的威力。