近期美剧《西部世界》十分火爆,其中有这样的场景,有个人工智能机器人出现了表现异常,需要对人工智能机器进行调试,那么是如何调试的呢?
说到调试,我们现有的调试,更多的是命令行模式比如GDB,还有些是图形界面,比如JS代码在Chrome/Firefox中的调试。
而西部世界里面是通过聊天模式来调试的。
debug1.jpg debug2.jpg debug3.jpg控制和了解人工智能的思想主要通过对话来获取,而各项硬件指标和配置信息通过类似眼镜的东东来观察。
很早之前微软出过一本《Writing Clean Code 》,整本书都希望找到可以预防和检测bug的方法,包括
- 假想的编译程序,试图编译环节就可以检测出所有的缺陷(当然不太现实),
- 断言和故障注入,尽可能的暴露缺陷
- 内存监测,资源的实时监控,企图发现资源泄露的缺陷。
- 各种人工保障,单步调试,契约式编程,编程规范,态度等。
尽管这些或多或少都有效,但是还是会有很多不可预知的缺陷。而一旦出现缺陷,我们的调试工作是相当的大,就算是使用二分法,排除法,最终找出了问题所在,但是所消耗的时间有时候比编码时间还长。
曾经我们的项目启动过一个这样的模块,通过这个模块,系统可以自己进行健康检查,各种资源,业务逻辑的自洽性,异常条件下的正确反馈等。结果是有一定的效果,不过真的遇到了指针飞了,还是毫无办法。最终还是避不开调试。
很多系统采用告警,跟踪,调试,日志等各种模块来获得系统的信息,以便更好的定位调试。也许,未来,人工智能能够自己分析日志等信息,并报告错误。而人类只需要通过聊天,来控制人工智能以便设置和调试,获取错误信息,进而修复。
更高级一点,对于非致命性缺陷,人工智能实现自我修复,没有什么大的毛病不轻易找人类帮忙:)
如果是这样的话,我们的程序员可以转型为人工智能医生,嘿嘿。
网友评论