咖啡机吐出最后几滴黑色液体。
陈默端起杯子,没加糖也没加奶。焦糊味冲进鼻腔,他闭眼咽下一大口。烫,从喉咙一路烧到胃里。
办公区的键盘声比平时密集。
像暴雨砸在铁皮屋顶上。他端着咖啡走过去,玻璃隔断后面人影晃动。沈清澜的白板已经写满了公式,黑色马克笔的字迹叠在一起,有些地方被擦过又重写,留下灰蒙蒙的痕迹。
张锐趴在桌子上,脸几乎贴在屏幕上。
他的眼镜滑到鼻尖,没去推。手指在键盘上敲得飞快,敲完一段,停住,盯着代码看几秒,又删掉重来。旁边的空咖啡罐倒了三个。
王浩在打电话。
声音压得很低,但语气很急。“对,温度传感器的数据流要实时……延迟不能超过五毫秒,超过算法就废了。”他另一只手在纸上画流程图,线条因为用力而穿透纸背。
陈默没进去。
他站在走廊里,看着这片灯火通明的区域。空气里有汗味,有外卖盒子的油腻味,还有电子设备发热的塑料味。显示器蓝光照在一张张脸上,那些脸都很年轻,但眼袋很重。
沈清澜从白板前转过身。
她手里拿着半截粉笔,指尖沾满了白色粉末。看见陈默,她点了点头,没说话。眼神是聚焦的,但焦点不在现实世界里,像在看某个存在于空气中的结构。
“进度?”陈默问。
“百分之三十。”沈清澜说,“主干逻辑改完了,正在调参数。硬件接口那边还没对接上。”
“李贺在楼下实验室。”
“我知道。”她抬手揉了揉太阳穴,在皮肤上留下一点白印,“让他半小时内把测试数据发过来。没有实测温度曲线,优化就是瞎猜。”
陈默拿出手机发消息。
打字的时候,他看见沈清澜衬衫的领口歪了。最上面的扣子没扣,露出一截锁骨。她平时不会这样。但她现在没注意,或者说没精力注意。
消息发出去,李贺秒回:“在测,二十分钟。”
陈默把手机屏幕转向沈清澜。她扫了一眼,又转回去看白板。粉笔在黑板上点了点,点在一个复杂的积分符号旁边。
“这里。”她说,“如果散热效率能再提百分之五,我就可以把卷积层加深。识别精度能追回两个点。”
“我去跟李贺说。”
“不用。”沈清澜摇头,“你先处理客户那边。赵志刚开了发布会,创源园区的人肯定坐不住。他们现在需要定心丸。”
陈默顿了顿。
咖啡杯沿抵在嘴唇上,已经凉了。他喝掉最后一口,苦味在舌根停留很久。“项目经理刚给我发了邮件,问演示会不会受影响。”
“你怎么回?”
“我说不会。”陈默说,“但没说细节。”
沈清澜终于看了他一眼。真正的,把焦点拉回现实的一眼。她的眼睛里有很多血丝,眼白泛着淡红色,但眼神很锐。
“撒谎了。”她说。
“善意的。”陈默把空杯子放在旁边的桌上,“如果告诉他们芯片没了,算法在重写,散热方案还没验证——他们会直接取消演示。”
“然后呢?”
“然后赵志刚会笑到最后。”陈默说,“他的发布会抢了先机,我们再丢演示,市场就会认为我们不行。后续的二期三期,全都没了。”
窗外的天还是黑的。
但东边天际线开始泛出一点点灰白。快凌晨四点了。走廊里的灯管发出轻微的嗡鸣,像某种昆虫在叫。
沈清澜放下粉笔。
粉笔断成两截,掉在地上。她没捡,用鞋尖碾了一下。白色粉末散开,在地砖上晕开一小片。
“你去睡会儿。”陈默说。
“睡不着。”沈清澜走到饮水机边,接了一杯冷水。没喝,只是握着。塑料杯壁被捏得轻微变形,“脑子里全是矩阵。一闭眼,满屏都是数字在跳。”
“那就躺会儿。”
“躺不住。”她喝了一口水,喉结滚动,“陈默,这次如果失败了……”
“不会失败。”陈默打断她。
话说得很轻,但很硬。像石头扔进水里,咚的一声,沉底。沈清澜看着他,看了几秒,然后很浅地笑了一下。嘴角只动了动,没到眼睛里。
“我也觉得。”她说。
电话响了。
陈默接起来,是创源园区项目经理。对方的声音很清醒,显然也没睡。“陈总,我看新闻了。赵志刚那边的新方案,跟你们之前报备的功能很像啊。”
“像而已。”陈默走到窗边,用肩膀夹着手机,“功能描述谁都会写。能不能实现,实现得怎么样,是另一回事。”
“你们演示的版本……”
“比他们的强。”陈默说,“强很多。具体强多少,下周五您亲眼看看。”
电话那头沉默了一会儿。
能听见翻纸的声音,还有键盘敲击声。然后对方说:“行,我信你。但丑话说前头,如果演示出岔子,后续合作就难了。”
“明白。”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
“另外。”对方顿了顿,“赵志刚那边的人,昨天来拜访过我们管委会主任。带了很厚的方案书,还有报价单。”
陈默握紧手机。
指尖压得发白。窗玻璃上凝结了一层水雾,外面路灯的光晕成模糊的黄色光团。“主任怎么说?”
“主任没表态。”对方说,“但让我转告你,市场欢迎竞争,但讨厌恶性竞争。你们之间的事,别把项目拖下水。”
“不会。”
电话挂了。
陈默放下手机,掌心有汗。他在裤子上擦了擦,转身走回办公区。沈清澜已经回到白板前,正在和张锐讨论什么。
张锐的表情很痛苦。
他抓着自己的头发,把本来就乱的头发抓得更乱。“沈总,这个损失函数我调了八遍了,收敛速度还是上不去。”
“数据给我看。”
张锐把笔记本电脑转过去。屏幕上是密密麻麻的曲线图,红绿蓝三条线交织在一起。沈清澜俯身,鼻尖几乎碰到屏幕。
她看了十秒钟。
然后伸手,在触摸板上划了一下。放大某个区域,又划一下。再放大。最后她直起身,从张锐手里拿过鼠标。
点了几个参数框。
删掉原来的数字,输入新的。敲回车。屏幕上的曲线开始重新绘制。红色线缓慢下降,绿色线开始爬升,蓝色线剧烈抖动了几下,然后趋于平缓。
张锐眼睛瞪大了。
“这……怎么想到的?”
“经验。”沈清澜把鼠标还给他,“还有,你刚才用的优化器不对。这个结构的网络,得用自适应学习率。”
“我试过,效果不好。”
“那你试错了。”沈清澜转身走开,“接着调,天亮前我要看到训练结果。”
张锐盯着屏幕,嘴里喃喃自语。然后他突然站起来,冲到自己的储物柜前,翻出一本厚厚的笔记本。哗啦哗啦翻页,找到某一页,盯着看了半天。
然后狠狠拍了下大腿。
“原来是这样!”
他坐回去,手指在键盘上飞舞。这次敲得比刚才更有力,每个按键都按到底,发出清脆的咔哒声。
陈默走回自己办公室。
他没开大灯,只开了台灯。黄光照在桌面上,照出一圈温暖的光晕。但光晕之外,房间是暗的。
他打开电脑。
邮箱里有四十七封未读邮件。有供应商的正式延期函,有客户的各种询问,有媒体的采访请求,还有几封猎头的信——问他考不考虑换个环境。
他全选了,标记为已读。
然后点开项目管理系统。硬件组的进度条更新了,散热方案的三维模型已经完成,李贺留言说:“样品在打样,上午十点能拿到第一版。”
他回复:“测试数据尽快给算法组。”
回完,他靠在椅背上。脖子很酸,肩膀僵硬得像两块石头。他抬手揉了揉后颈,指尖能摸到绷紧的肌肉。
闭上眼睛。
黑暗里浮现出很多东西。赵志刚的脸,林薇薇转身离开的背影,法庭上法官敲法槌的声音,还有系统界面第一次出现时的淡蓝色光芒。
那些光现在还在。
在意识深处,像深海里的水母,缓慢地起伏。数据流无声滚动,但他没去调用。推演需要精力,而他现在需要每一分精力来处理现实。
手机又震了。
是苏晴。“陈总,我查到了。赵志刚发布会用的演示视频,里面有几个场景的监控录像,是从创源园区流出去的。”
陈默坐直身体。
“确定?”
“确定。”苏晴发来一张截图。画面对比,左边是赵志刚发布会上的片段,右边是创源园区某个走廊的实拍。角度、灯光、甚至墙上的标识牌都一样。
“录像怎么流出去的?”
“园区内部有人给了。”苏晴说,“我还在查是谁。但可以肯定,赵志刚在园区里有内线。不只是供应商层面。”
陈默盯着截图。
窗户玻璃上的水雾凝成了水珠,一滴一滴往下滑。外面天亮了,但亮得灰蒙蒙的,像罩了一层脏纱布。
“先别声张。”他打字,“收集证据。等演示结束,一起算账。”
“明白。”
放下手机,陈默站起来。腿有点麻,他跺了跺脚。血液重新流动,带来针扎似的刺痛。他走到窗边,推开窗户。
冷空气涌进来。
带着清晨特有的味道,潮湿的,清冽的,混着远处早餐摊的油烟味。街道上有环卫工在扫地,竹扫帚划过地面,沙沙沙,很有节奏。
楼下有车灯亮起。
是李贺的越野车。他停好车,从后备箱搬出一个大纸箱。纸箱很重,他搬得有点吃力,走了几步又放下,喘了口气。
陈默关窗下楼。
走到一楼时,李贺正好进门。纸箱放在地上,他蹲在旁边拆胶带。看见陈默,他抬头,咧嘴笑了笑。
“样品来了?”
“来了。”李贺撕开胶带,打开纸箱。里面是银灰色的金属部件,散热片密密麻麻,像蜂巢。“第一版,按极限尺寸做的。装上去可能有点挤。”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
陈默蹲下,拿起一块。
很沉。边缘有加工留下的毛刺,摸上去有点扎手。散热片的鳍片很薄,对着光能看见透明的边缘。
“效果怎么样?”
“还没测。”李贺从箱子里拿出温度传感器和数据线,“但我算过了,理论上散热效率能提百分之八。前提是风扇转速够。”
“噪音呢?”
“会很大。”李贺诚实地说,“像飞机起飞。演示的时候,可能需要观众离远点。”
陈默把散热片放回去。
金属碰金属,发出清脆的叮当声。“先装一套,跑压力测试。算法组在等温度数据。”
“给我半小时。”
李贺抱起箱子,走向实验室。他的背影很宽,但走路有点晃,显然也熬了一夜。皮鞋后跟在地上拖出沙沙的摩擦声。
陈默没跟进去。
他走到茶水间,又冲了一杯咖啡。这次加了糖,但糖没化开,沉在杯底,喝到最后一口才尝到甜味。
太甜了,甜得发腻。
他皱皱眉,把杯子洗干净。水流冲过杯壁,带走褐色的残渍。水槽边缘有前一天留下的咖啡渍,已经干了,变成深褐色的一圈。
张锐从办公区冲出来。
他手里拿着平板电脑,屏幕亮着,脸上有压抑不住的兴奋。“陈总!陈总!训练结果出来了!”
陈默擦干手。
“怎么样?”
“损失值降了百分之四十!”张锐把平板递过来,“而且收敛速度提了一倍。沈总改的那个参数组合,神了!”
平板上是训练曲线。
红色的线一路向下,几乎没有波动,稳稳地降到了很低的数值。旁边的准确率曲线则一路向上,已经突破了之前的瓶颈。
陈默看着那些曲线。
看了很久。然后他抬起头,问:“实际效果测了吗?”
“测了!”张锐调出另一张图,“用昨天的测试集跑了一遍。识别精度……追回来了!不仅追回来了,还比原方案高了半个点!”
声音很大。
在安静的清晨走廊里回荡。几个从洗手间出来的程序员停下脚步,凑过来看。有人发出低低的惊呼。
陈默把平板还给他。
“去告诉沈清澜。”
“她知道了。”张锐说,“刚才就在旁边盯着。现在在改下一个模块。”
“下一个模块?”
“嗯。”张锐压低声音,“她说,既然突破了,不如再往前推一步。把多目标追踪的模块也优化了。如果成功,演示效果能再提一个档次。”
陈默看向办公区。
透过玻璃,他看见沈清澜又站在白板前。这次她在画新的结构图,线条更复杂,箭头更多。但她的手很稳,每一笔都画得清晰果断。
“让她做。”陈默说。
“可时间……”张锐看了眼手表,“只剩六十二小时了。”
“够。”陈默说,“告诉她,需要什么资源直接提。硬件,数据,算力,人要人,要钱给钱。”
张锐愣了下,然后用力点头。
他跑回办公区,脚步轻快得像换了个人。陈默站在走廊里,能听见里面传来的欢呼声。虽然很快被压低,但那种兴奋感,像火星落在干草上,瞬间燃起一片。
窗外的天彻底亮了。
阳光穿过云层,很薄,但毕竟是阳光。照在走廊尽头的绿植上,叶片上的灰尘被照亮,浮在空气里,缓慢旋转。
陈默走回办公室。
他打开邮箱,给创源园区项目经理写了封邮件。内容很简短:“演示方案有重大优化升级,效果将超出预期。详情周五当面汇报。”
点击发送。
邮件飞出去的那一刻,他感觉肩上的重量轻了一点。只是一点,像有人从你扛着的麻袋里,取走了一小块石头。
但麻袋还很重。
他坐下,打开周教授的那封邮件。附件里的案例描述还开着,那句“自称看见未来片段”还停在屏幕上。
他往下滚动。
后面还有几段。“受试者c-7在后续测试中表现出对复杂系统的超常洞察力,能迅速识别模式中的异常点。但伴随间歇性的时间感知紊乱,表现为对事件发生顺序的混淆。”
模式识别异常点。
陈默想起系统推演时,那些概率分支。每一条分支都是一个可能性,一个未来片段。他能看见它们,能在意识里展开,能比较哪条路更优。
这算不算时间感知紊乱?
如果算,那么代价是什么?周教授的案例里,那些受试者后来怎么样了?他关掉邮件,没继续看。
现在不是时候。
他需要集中所有精力,度过这七十二小时。然后,等演示结束,等赵志刚倒下,等公司站稳脚跟。
那时候,再来面对这个秘密。
如果那时候还有勇气的话。
门被敲响。
沈清澜站在门口。她换了件衬衫,还是白的,但袖口卷起来的方式不一样。头发重新扎过,但有一缕碎发散在额前。
“算法优化有突破。”她说。
“我知道。”陈默说,“张锐告诉我了。”
“不只是那个。”沈清澜走进来,关上门。房间里很静,能听见她的呼吸声,有点急促,像刚跑过步。“我在改多目标追踪模块的时候,发现了一个结构上的问题。”
“什么问题?”
“原算法的设计有个盲区。”沈清澜走到白板前——陈默办公室里也有一块白板,平时很少用。她拿起马克笔,开始画图。
线条流畅,图形简洁。
她画了一个三层结构,标注上数据流向。然后在某个连接点上画了个圈。“这里,信息传递是单向的。高层特征不能反馈到底层。”
陈默看着那个圈。
他不太懂技术细节,但能听懂逻辑。“所以?”
“所以当多个目标重叠时,算法会混淆。”沈清澜说,“它分不清哪个轮廓属于哪个目标。只能靠猜,猜错了就追踪丢失。”
“新方案呢?”
“我加了一条反馈通路。”沈清澜画了一条虚线,从高层连回底层,“让高层识别结果能反过来修正底层的特征提取。相当于……让系统有了短期记忆。”
她说完,停下笔。
马克笔的笔尖停在白板上,留下一个黑色的圆点。她转过来看着陈默,眼睛很亮,亮得不像熬了一整夜的人。
“如果这个方案能成。”她说,“我们的多目标追踪精度,能甩开赵志刚的方案两条街。”
“如果不成呢?”
“那就用回老方案。”沈清澜说,“老方案也能用,只是效果没那么震撼。”
陈默走到白板前。
他看着那些线条,那些箭头,那些标注的英文缩写。在他眼里,这只是一堆抽象的符号。但在沈清澜眼里,这是通往另一个世界的路。
“需要多久?”他问。
“二十四小时。”沈清澜说,“二十四小时内,我要看到训练结果。如果结果好,再花十二小时做集成测试。剩下时间调参数。”
“时间很紧。”
“我知道。”沈清澜放下笔,“但值得一试。陈默,赵志刚开发布会,就是想抢定义权。他想让市场觉得,智慧安防就该是他方案里的那个样子。”
她顿了顿。
“我们不能让他得逞。我们要拿出一个更好的样子,好到让所有人一看就明白,谁才是真的,谁才是抄的。”
陈默看着她。
晨光从窗户斜射进来,照在她侧脸上。睫毛在脸颊上投下细密的阴影,鼻梁的线条很直,嘴唇因为干燥而微微起皮。
但她站得很直。
像一棵树,根扎得很深,风来了也不晃。陈默想起第一次见她,在星耀科技的会议室里。她也是这么站着,讲解技术方案,语气冷静,眼神锐利。
那时候他觉得她很难接近。
现在他觉得,有些人不需要接近。他们就在那里,像山一样,你只需要知道他们在那里,就够了。
“去做吧。”他说。
“需要算力。”沈清澜说,“新模型参数多,训练需要更多gpu。我们现有的服务器可能跑不动。”
“我去租。”
“很贵。”
“租。”陈默重复,“多少钱都租。你把需求给张锐,让他列清单。我让苏晴去联系云服务商,两小时内搞定。”
沈清澜点点头。
她没说道谢,转身就走。走到门口,她停住,回头看了陈默一眼。“你也睡会儿。后面还有硬仗要打。”
“你也是。”
“我睡过了。”她说,“刚才趴在桌子上,睡了十五分钟。”
门关上。
陈默坐回椅子上。他看了眼时间,早上七点二十三分。离演示还有一百六十七个小时。每一小时都在倒数。
他躺下来。
没脱鞋,就躺在办公室的沙发上。沙发很短,腿伸不直,只能蜷着。他拉过搭在扶手上的外套,盖在身上。
外套有烟味。
不知道是谁的,可能是上次来谈合作的客户留下的。他闭上眼,黑暗涌上来。耳朵里还响着键盘声,但渐渐远了。
呼吸慢下来。
意识沉下去,像石头沉进深海。在沉到底之前,他听见系统的提示音。很轻,像从很远的地方传来。
“检测到认知负荷超限。建议休息。”
他没回应。
提示音又响了一次,然后消失了。深海彻底吞没了他,黑暗,温暖,没有梦。只有一片寂静的黑暗。
窗外的阳光慢慢移动。
从地板移到茶几上,照亮了上面的灰尘。灰尘在光柱里飞舞,缓慢地,悠闲地,和房间里紧绷的气氛格格不入。
远处传来隐约的说话声。
有人在争论什么,声音时高时低。然后有人大笑,笑声很短暂,很快被压下去。电梯门开合的声音,脚步声,打印机工作的声音。
但这些声音都没进到陈默的耳朵里。
他睡得很沉。
直到手机震动,在玻璃茶几上嗡嗡作响。他睁开眼,一时间不知道自己在哪。天花板上的灯没开,只有阳光。
手机还在震。
他伸手拿起来,屏幕上的名字是“李贺”。接通,放在耳边,声音沙哑地“喂”了一声。
“陈总,测试结果出来了。”
李贺的声音很兴奋,像发现了宝藏。“散热方案……成功了!满载运行一小时,核心温度比预期还低三度!”
陈默坐起来。
外套滑到地上。他弯腰捡起来,搭回沙发。“噪音呢?”
“还是大,但能接受。”李贺说,“我录了一段视频,发你微信了。你听听看。”
电话挂断。
陈默点开微信,视频加载出来。画面是实验室,散热风扇在转,发出低沉的呼啸声。像远处的风,又像大型动物的呼吸。
音量确实不小。
但如果是在设备间里,隔着墙,应该不会影响演示。他回消息:“可以。装一套完整的样机,跑全系统测试。”
李贺回:“已经在装了。”
陈默站起来。
腿还是麻的,他扶着沙发站了一会儿。血液重新流下去,带来熟悉的刺痛感。他走到窗边,外面天光大亮。
街道上车流如织。
早高峰开始了。公交车停在站台,吐出和吞进一群人。骑电动车的人穿梭在车缝里,速度很快,像在赶什么。
世界在正常运转。
而在这栋楼的某一层,一群人正在挑战极限。他们在改算法,在装样机,在调参数。他们在为了一周后的二十分钟,赌上所有。
陈默洗了把脸。
冷水刺激皮肤,睡意彻底散去。他看向镜子,眼里的血丝更多了,但眼神很清。像被水洗过的石头。
他走出办公室。
走廊里飘着早餐的味道。包子,豆浆,油条。有人蹲在墙角吃,边吃边盯着手机屏幕。有人靠在窗边,一边喝粥一边跟同事讨论问题。
张锐看见他,挥手。
“陈总!云服务器租好了!正在同步数据,中午前能开始训练!”
“好。”
陈默点头,没停步。他走到沈清澜的办公室门口,门开着。她不在里面,白板上又多了很多新的公式。
他转身去实验室。
沈清澜果然在那里。她站在李贺旁边,看着打开的样机机箱。机箱里塞满了部件,散热片银光闪闪,风扇的线缆用扎带捆得很整齐。
“装好了?”陈默问。
“装好了。”李贺说,“准备第一次通电。沈总在检查算法接口。”
沈清澜没抬头。
她手里拿着万用表,在测某个接口的电压。表笔的尖端很细,她捏得很稳。读数跳出来,她看了一眼,点头。
“电压没问题。”
“那就通电。”李贺说。
他走到电源开关前,深吸一口气,按下。嗡——机器启动的声音。风扇开始转,从慢到快,风声从低到高。
最后稳定在那个熟悉的呼啸声。
显示器亮起来。系统自检画面,一串串代码滚过。滚到最后,绿色的“ok”字样跳出来。李贺握拳挥了一下。
“硬件自检通过!”
沈清澜已经坐到电脑前。她打开算法测试界面,导入一段测试视频。视频是创源园区某个走廊的监控录像,画面里有五六个人在走动。
点击运行。
进度条开始走。百分之十,百分之二十。电脑风扇也在转,和机箱里的风扇声混在一起,像二重奏。
百分之七十。
进度条卡了一下。沈清澜皱眉,手指在键盘上敲了几个命令。调试窗口弹出来,显示某个线程的cpu占用率飙到了百分之百。
“内存泄漏。”她低声说。
“严重吗?”陈默问。
“能修。”沈清澜已经开始改代码。她的手速很快,几乎不看键盘,眼睛盯着屏幕,手指在按键上跳跃。
像弹钢琴。
十分钟后,她敲下最后一行。重新编译,重新运行。进度条再次开始走,这次很顺畅,一口气走到百分之百。
结果弹出来。
画面被框上了不同颜色的方框。每个人都被框住,框随着人移动,很稳,没有抖动。方框旁边有编号,有轨迹线,有置信度分数。
平均置信度:百分之九十三点七。
沈清澜靠回椅背。
她没说话,只是看着屏幕。看了很久,然后很轻地吐出一口气。那口气里有很多东西,有疲惫,有释然,有终于翻过一座山的感慨。
“成了?”李贺小声问。
“成了。”沈清澜说,“多目标追踪模块,基础功能验证通过。精度比原方案……高了十一个点。”
实验室里安静了一瞬。
然后爆发出欢呼声。几个硬件组的小伙子互相击掌,有人跳起来,头差点撞到天花板上的灯管。李贺大笑,笑声在机箱的风声里显得很响。
陈默没笑。
但他感觉胸腔里有什么东西松开了。像一直绷紧的弦,终于可以稍稍放松一点。他走到沈清澜旁边,看着屏幕上的那些方框。
那些方框在动。
跟着人动,很精准,很稳。像有无数双看不见的眼睛,在注视着画面里的每一个生命。然后分析,判断,记忆。
这就是他们要做的东西。
这就是他们要展示给世界看的东西。不是噱头,不是概念,是真真切切能用的,能解决问题的技术。
“谢谢。”他说。
声音很轻,几乎被风声盖过。但沈清澜听见了。她转过头,看了陈默一眼。阳光从窗户照进来,照在她脸上。
她笑了。
真正的,到达眼睛里的笑。眼角有细纹漾开,像水面的涟漪。
“还没完。”她说,“还要做集成测试,还要调参,还要做演示脚本。七十二小时,才过了三分之一。”
“我知道。”
陈默也笑了。他抬起头,看向实验室窗外。天空很蓝,云很少。是个好天气。
最难的路还在后面。
但他们已经走上去了。