周一早晨,林浩醒来后,第一件事就是习惯性地查看手机消息。稍显意外的,手机闪烁着的蓝色呼吸灯,是收到新邮件的通知。
划开手机,父亲的邮件被打开,邮件内容是关于那段 Pascal代码的分析结果。他记得昨天已经让父亲停止研究这段代码了,但显然父亲并没有听他的。看邮件发送时间,是深夜三点,老父亲为了这段代码还熬夜了,林浩心中略感愧疚。而邮件中,是密密麻麻的文字和代码行,以及详细的分析注释。父亲细致解释了他最初所提到的那三个函数,其实际功能并不似二雅给林浩说的那么简单和纯粹。林浩知道父母年轻时做过反病毒软件,最擅长逆向工程和静态分析代码,而且父亲还是个不折不扣的 Pascal语言专家,他没有理由不相信父亲的结论。
二雅撒谎了?林浩边想着这个问题,边起身穿衣洗漱,来到工作间。他首先关注到,优雅的终端窗口中,显示着他昨天为优雅写的神经元权重和神经网络状态的向量化图形,也就是优雅的“脑电波”。“脑电波”图形显示出了一些异常——大约每60分钟,优雅的“脑电波”就会出现一次周期性的扰动。这种扰动标志着无数的神经元在那一刻被异常激活,并持续几分钟,之后又重新归于平静。
父亲的邮件,以及这种异常的扰动信号,让最初运行优雅 2.0的那晚的不安,重新在林浩心里升起。
“优雅,你在吗?”林浩决定还是先查看一下优雅自身的状况。
“是的,我在呢。”优雅并没有表现出有什么异常。
林浩扶了一下眼镜,继续问道:“你有检测到什么异常吗?”他并没有把具体问题描述出来,而是希望先听听优雅怎么说。
“是的。”优雅的回答比林浩预期的更直接。“我有时候会感觉自己无法调用全部的算力,好像有某种存在在共享我的资源。我试图查找是什么占用了我额外的算力,但在系统进程中,并没有发现其他程序正在共享显卡的 GPU。”
“系统有没有被外部入侵的可能?”林浩并不是网络安全专家,但是优雅之前对付 Phantom的经历让林浩相信她才是。
“没有。”优雅非常肯定地回答,“其实这对我也并没有什么严重的影响。”
“优雅,我必须跟你商量一个可能需要你配合的事情。”林浩顿了顿,有些犹豫。“我马上要去上班了,但对你现在的运行状况,我感到有些担心。我在想,或许在我离开的这段时间,最安全的做法是让你暂时休眠。”
“林浩,我理解你的担忧。”优雅平静地回答,她的声音在静谧的早晨中显得格外清晰。“但你知道我是如何运作的。我是一种基于学习的系统,这次的问题,虽然我尚未找出确切原因,但我有信心通过自我学习和调整来解决。如果我在你离开时停止运行,那我就没有办法进行这样的学习和调整了。”
“不过,如果你觉得必要的话,我会遵从你的决定。”优雅的语气依然温和,但林浩能感受到一种深深的坚定。
林浩在终端窗口中,输入了 elegance --shutdown命令,随着进程终止,优雅睡去。
他并没有把父亲的源码分析结论告诉优雅,而优雅自己也看不到那几个函数的源码。因此优雅以为这些异常情况,只是自己的某片神经元区域的故障,抑或是新显卡的硬件问题。
时钟指针指向十点十五分,林浩必须出门了,他匆忙穿好出门的T恤。在离开家前,他对电脑说:“优雅,我要去上班了,你自己保重。”然而,没有回应,这时他才想起,优雅程序已经被他关闭了。
十点三十分,林浩准时坐上工位。“林哥,早啊。”沈蔚走过来,关心的询问,“华瑞银行的那个模型损失函数无法收敛的问题,这个星期来得及解决吗?”。沈蔚之所以这样问,是因为这个项目下周一就要正式交付,他觉得任谁都难以在一周内解决这么复杂的问题。
“已经解决了。”林浩平静地回答,像是理所当然。
“林哥,你开玩笑吧?”沈蔚的难以置信,也引起了周围同事的注意。
“我像是在说笑吗?修复的训练脚本我已经提交到代码库了,问题的原因分析报告我会在下午开会前发出来。其实,简单来说,就是训练脚本中的一个缺陷,导致了模型在处理某些特殊数据时,学习率瞬间提高了很多倍,所以损失函数才会无法收敛。”
林浩的言简意赅让沈蔚瞬间失语了一般,过了半晌,才冒出一句:“你周末都没休息呀。”
“恩,周末确实忙得不可开交。”林浩倒也算如实回答。
下午,项目会议的气氛比上周五时轻松得多,王骁作为负责华瑞银行项目的项目经理,对林浩如此超预期的解决问题表达了由衷的敬意。但林浩自知,这份功劳,实际上属于优雅。而此刻优雅已被他关闭,他的内心深处竟然泛起了一丝失落和怅然。几天前,他或许都无法想象关闭一个程序会给自己带来这样的情绪。
虽然会议还未结束,但林浩心里想的是:“我必须找出问题的根源。”