林允宁刚准备合上笔记本,赵晓峰的消息就弹了出来:
“林老师,国内能立刻调用的硬件清单传过去了。”
附件名字极其直白:《当前国内可立刻调用硬件统计》。
点开前,林允宁多少还抱点侥幸心理,但扫完这单子,他彻底不吭声了。
单子上列着:几台高校淘汰下来的GPU工作站,驱动版本五花八门;一批数量管够但内存带宽堪忧的CPU服务器;几块连同版本说明书都凑不齐的杂牌FPGA开发板;还有大凉山节点的几台存储服务器,容量倒是够,但读写速度让人直捏把汗。
视频一接通,赵晓峰那边就传来一阵拖拉机似的风扇轰鸣。
沈知夏正在旁边削苹果,手里的刀停了一下,抬头冲着屏幕问:“你们这是在机房,还是在修摩托?”
赵晓峰尴尬地清了清嗓子:“夏天姐,机柜里有台旧服务器风扇轴承偏了,动静是大了点,但好歹还能转。”
屏幕上立刻弹出克莱尔的文字气泡:“偏心得很有性格。”
赵晓峰有些无奈:“你能不能别吐槽硬件了?人家已经很努力了。”
“我吐槽的是你们的维护水平,硬件本身暂时无罪。”克莱尔回复。
林允宁没参与斗嘴,直接把三份日志并排拖到屏幕中央:
大凉山SU(3)后处理、医疗园区脑电频谱、马约拉纳高疑区试跑。
这三组数据表面上八竿子打不着,但在剔除掉无关字段后,残差尾部都出现了一个极其相似的折返趋势。
赵晓峰盯着屏幕直皱眉:“林老师,你刚才强调绝对不能砍的‘边界层’,到底啥意思?”
林允宁随手拽过一张演算纸,画了三个方框:“先别往公式上靠。打个比方,咱们现在要搬家……”
沈知夏在旁边瞥了他一眼:“可算说人话了。”
“以前在美国用云算力,咱们手头等于有几十辆重卡,东西随便打包拉走就行。现在国内这硬件条件,撑死也就是三轮车、小面包外加几辆电瓶车。你们现在的搞法,是为了凑空间,把家具全拆成碎木块往车里塞。”
“这有什么问题吗?”赵晓峰没听懂。
“问题是,你们连承重的门框都给劈了。”
赵晓峰愣住了。
林允宁用笔尖重重戳了两下方框边缘:“在很多计算里,真正有物理意义的,根本不是中间最占地方的那些数据,而是边界的约束关系。”
“大凉山那边是格点间的规范约束,医疗园区是频谱切分后的相位连续性,马约拉纳这边则是低温输运跨端口的边界条件。你们为了省算力,一刀切把全局的壳子全给扒了。运算量看着是降下来了,物理本质也跟着漏了个干净。”
克莱尔的文字窗口停顿了两三秒才刷新:“明白了。保留边界约束,牺牲中间冗余。”
“对,”林允宁点头,“保边界层,砍全局壳。”
沈知夏听得似懂非懂:“意思就是门框必须完整留着,屋里那些占地方的破纸箱子能扔就扔?”
“差不多就是这意思。”
“那你早这么说不就结了。”
赵晓峰没憋住笑了一声,赶紧正色道:“那接下来怎么调?这批破铜烂铁五花八门的,想统一计算环境根本不现实。”
“那就别统一环境了。”林允宁说。
“啊?”
“统一环境太耗时间,咱们现在耗不起。先把数据分析的流程统一下来。”
他随手在纸上唰唰列了几个词:原始数据、环境记录、边界约束、分块结果、误差回馈、盲测段封存。
“设备擅长干什么就让它干什么。CPU算得慢但是稳,去跑矩阵分块;GPU负责局部高吞吐;那几块FPGA先顶上,做边界校验和数据流控制。因材施用,别让骡子硬去干马的活儿。”
林慧珍不知什么时候来到了门口。
她原本打算叫林允宁去休息,听见里面在开会,索性靠在门框上听着,没出声打断。
林允宁眼角余光瞥见她,转头说道:“林主任,园区这边完整模型的训练先停一停。把孟女士近七十二小时的数据切成三块:稳定交流期、轻度错位期、疲劳回落期。每段只抓边界的相位连续性和代谢同步点,全特征提取先往后放。”
林慧珍点点头:“可以,这没问题。”
屏幕里的赵晓峰赶紧追问:“那马约拉纳那边呢?”
“让陈师兄别再盯着他那条漂亮曲线看了。”林允宁毫不客气,“原始数据段直接封存,单独开污染测试。我得弄清楚那条完美的曲线到底是物理真理,还是温控周期喂给窗口函数的计算幻觉。”
克莱尔的文字又弹了出来:“这话直接跟他说,大概率会伤害你师兄脆弱的感情。”
林允宁略一思忖:“行,那回头我跟他说得委婉点。”
沈知夏一边啃苹果一边接茬:“拉倒吧,你委婉起来才更要命。”
熬了大半夜的休息室里,气氛总算稍微松快了一点。
赵晓峰把现捏的第一版任务拆分表投到屏幕上:“今晚大凉山可以先做边界保持测试。但有个雷啊,混合精度这招咱们以前没用过,把那些老掉牙的GPU掺和进来,误差会不会满天飞?”
“绝对会。”林允宁连犹豫都没犹豫。
赵晓峰卡壳了,一时不知道该怎么接。
“所以得给误差设个硬性栅栏。”林允宁用指关节敲了敲桌面,“低精度的卡主打一个快,出错了让高精度去纠正,别让数据越跑越偏。今晚不看最终结果,只求整个链路能跑通不断。美国的云端旧接口彻底切掉,本地任务全走新主干。给对面留个假象,就当我们在干等梯子恢复。”
克莱尔迅速敲出回复:“诱饵空房已经搭好了。”
“别搞得太花哨,对面不是傻子。”
“放心,我只是在里面扬了点灰,做旧处理。”
赵晓峰忍不住凑近麦克风嘀咕:“‘扬灰’是什么赛博黑话?”
沈知夏在旁边头都没抬:“晓峰,听句劝,克莱尔说的话,你少往深了琢磨。”
林允宁刚伸手想去扣电脑盖子,屏幕右上角又弹出了连线请求。
“是陈正平师兄,说只占用五分钟。”
沈知夏彻底停下了手里的动作,眯起眼睛盯着他:“你五分钟前说是最后两分钟。”
“这次真的是突发情况。”
“你哪次不是突发情况?”
林慧珍倒是来了兴致:“既然是马约拉纳的试跑结果,不妨先看看。孟女士这会儿睡得熟,二十分钟内没别的观测安排。”
沈知夏转头看向林慧珍,无奈地叹了口气:“林主任,您怎么也跟着惯他熬夜的毛病?”
林慧珍笑了笑:“我也确实挺好奇,他刚才吐槽的那条‘漂亮曲线’,到底能有多漂亮。”
画面很快切了进来。
看背景,陈正平应该正待在金大的某间小会议室里。
韩至渊坐在他旁边喝茶,屏幕右上角还挂着潘建林院士的连线分屏。
“允宁,废话不多说了,我直接上图?”陈正平的声音透着股按捺不住的兴奋。
“上。”
图表在屏幕上展开。
就算是对物理一窍不通的沈知夏,也能瞧出这图“有点东西”。
底噪压得很低,几个峰值干干净净地凸显出来,背景平滑得挑不出一点毛病。
最夸张的是右上角的拟合残差,贴合度高得简直像是拿笔画出来的。
陈正平语速飞快:“第一个高疑区的快速重构结果。只跑了拟合段,盲测段没碰。零偏压附近的结构非常清晰,非局域端口的相位关系也有响应了。”
韩至渊在旁边接腔:“单看这图,确实漂亮。漂亮得让人心里有点没底。”
潘建林的声音从分屏传过来:“但这玩意儿也确实不像普通噪声。”
林允宁没吱声。
他凑近屏幕把图放大,盯着主峰、背景和残差看了半天,忽然开口:“温控日志调出来了么?”
陈正平愣了一下:“在手边。”
“叠上去。”
温控曲线随之附在了残差图下方。
温度波动极小,看着再正常不过了。
“不要原始温度曲线,取一阶差分。”
差分图一出来,变成了一排细碎的小锯齿,不仔细盯根本注意不到。
“把窗口函数的边界也叠上去看。”
这回韩至渊先反应过来,脸色微微一变。
几秒钟后,窗口边界加了上去。
连线两头瞬间安静了。
屏幕上,那条漂亮曲线的低残差区,不偏不倚,正好踩在温控差分和窗口边界共同的折返点上。
拆开来看,哪一步都没毛病:温控在误差允许范围内,窗口函数没违规,拟合算法更没造假。
可这几样东西一叠起来,却莫名其妙地严丝合缝,跟齿轮咬死了一样。
陈正平的声音不自觉地放低了:“这也……太巧了吧?”
林允宁没顺着他的话下结论:“数据重构前,你们是不是为了补低置信区,对相邻的时间片做了平滑处理?”
陈正平点头:“做了。参数给得挺保守,就是想压一压老仪器的离散噪声。”
“平滑核的数据给我看看。”
陈正平调出参数窗口。
林允宁扫了一眼,轻吐出一口气。
“问题就出在这儿了。”
韩至渊凑近镜头:“怎么说?”
“这曲线不算造假,原始数据是真的,低温段也的确有东西。但你们现在盯着的这个漂亮形状,估计早就不是物理信号的本来面目了。”
林允宁放慢了语速解释。
“旧设备的温控反馈带着个微弱的周期。平滑核去压噪声的时候,顺带把这周期也吃进去了一部分。赶巧窗口函数又在边界上切了它一刀。搞到最后,拟合算法‘看’到的根本不是原始信号,而是温控周期、窗口边界和平滑核联手捏出来的一个数学怪胎。”
沈知夏在旁边听得头大,但敏锐地抓住了字眼:“联手捏出来?”
“打个比方,就像开滤镜自拍。人还是那个人,但阴影和五官比例已经被偷偷微调过了。照片看着无懈可击,可你敢拿这照片去量骨相吗?”
沈知夏恍然大悟:“闹了半天,这数据是PS过了啊。?”
陈正平和韩至渊隔着屏幕一时语塞。
潘建林沉默了两秒,破天荒地点了点头:“话糙理不糙,比喻得很贴切。”
陈正平脸上那点儿激动早褪了个干净,取而代之的是一阵后怕。
每一步单拎出来都合规,凑在一块儿,却阴差阳错把数据修成了大家最渴望的模样。
韩至渊“啪”地放下手里的笔,声音发沉:“这图得重新做,暂时不能放进汇报PPT里。”
潘建林接得更快:“不仅不报,还得把它单独拎出来当反例。人为改动窗口边界,换掉平滑核,再故意错开温控周期,看看这个峰会怎么变。如果它跟着处理流程来回飘,那就是算法搞出来的数字幽灵;如果它不动,剩下的那部分,咱们再接着谈物理意义。”
韩至渊顺势补上实验思路:“还得加一组同批次对照和空白段阴性对照。不能光在路灯底下找钥匙。”
秦雅的声音突然切进频道:“你们刚才聊的我都听见了。大凉山的数据里面,第一个高疑区那批样品的退火记录,其实有两个版本。一版是原始的手写日志,另一版是后来发论文用的附录简化表。两边对不上。”
韩至渊立刻追问:“哪里对不上?”
“气氛切换的时间点。附录里填的是标准流程,可原始日志里多出了一段原因不明的等待期。这段空窗期很可能会改变低温下的缺陷态。”
陈正平懊恼地拍了下脑门:“这细节以前怎么就没人去对?”
秦雅的语气依旧平静:“因为以前大家都觉得这只是制备工艺的正常偏差,根本没把它当成物理变量来看待。”
连线这头又是一阵沉默。
林允宁看了一眼代表秦雅频道的闪烁波形,笑了笑:“学委,这刀补得非常关键。”
秦雅没理会他的玩笑:“我今晚熬个夜,把第一版的样品谱系表理出来。”
潘建林盯着屏幕里的林允宁,慢腾腾地开口:“允宁啊,这陷阱藏得够深的,你怎么一眼就瞧出不对劲了?”
“刚才处理大凉山和医疗园区的数据,残差也出现了类似的折返。三家都在边界切分上绊了跟头,所以我对这种鬼画符一样的形状多了点戒备。”
潘建林沉吟片刻。
“你这不是戒备,”他感叹道,“你这是脑子里同时摆着三张桌子,还能一眼瞅出哪家的桌脚垫得不一样高。”
坐在一旁的沈知夏忍不住偏过头打量他。
平时她总调侃这家伙是个不要命的熬夜怪,但此刻她好像有点明白了,为什么那些泰斗级的老先生看他的眼神总透着股说不清的器重。
别人还在对着一张图里的单峰较劲,他已经把三条毫不相干的线扔进同一个错误模型里做交叉比对了。
林允宁本人倒没觉得有什么大不了,顺手将那张图另存为“第一区污染测试样本”。
“陈师兄,这图留着别删。它太有用了,以后再碰上长得这么‘漂亮’的结果,咱们就按这个标准去怀疑它。”
陈正平在屏幕那头郑重地点了点头。
会议临结束,韩至渊突然叫住他:“允宁,第一区这摊子我们来接。方向你指明白了,剩下的脏活累活归我们。放心,国内有的是人干活儿。”
潘建林也附和道:“你今天刚落脚,别仗着年轻连轴转。”
林允宁愣了一下,随即笑了笑:“行。”
沈知夏在旁边听得直点头,显然对这番安排相当满意。
视频一挂断,休息室里重新安静下来。
林允宁往椅背上一靠,长长地舒了口气。
沈知夏把剩下的大半个苹果直接塞进他手里:“赶紧吃。”
林允宁无奈地接过来咬了一口。
不管怎样,今天这通折腾起码防住了一个大雷,那条完美得过分的曲线没能把他们绕进去。
从这晚起,金陵这套连牌子都还没挂的草台班子,算是在泥坑里摸索出了第一条铁律:越是漂亮的数据,越得提防它有诈。
在沈知夏的强行武力镇压下,林允宁最终还是被按回折叠床上躺了四十分钟。
与其说是睡觉,倒不如说是熬到极限后的强制断电。
等他再次睁眼,窗外天色已经擦着傍晚的边了。
他醒来的第一个动作,就是下意识去摸枕头边的手机。
沈知夏头也没抬,直接递了杯温水过去:“放心,都没出乱子。大凉山、马约拉纳、张江,现在都安安静静的。先喝口水。”
林允宁接过水杯润了润嗓子,点开屏幕,赵晓峰那边的消息已经排成了一长串。
“第一版任务拆分完毕。”
“边界保持测试启动。”
最新一条是十分钟前发来的,言简意赅:“林老师,跑崩了。”
林允宁盯着这行字,不但没急,紧绷的肩膀反而松了下来。
沈知夏在旁边立刻警觉起来:“跑崩了你居然还笑?”
“第一轮能痛痛快快地崩掉,算是好事。”
“你们搞科研的脑回路真怪,事情搞砸了反而还挺高兴似的。”
“上来就直接报错,总比代码悄无声息地算出一堆错数据要强得多。”
视频秒通。
赵晓峰身后的机房白炽灯惨白惨白的,他整个人看着比下午那会儿还要灰头土脸。
“林老师,第一轮没顶住。边界保持跑到百分之三十七,误差回馈直接全线崩溃。”
林允宁没去管最后那行红彤彤的报错代码,而是直接滑动鼠标往上翻,查对运行时间、节点分配和各分块的校验记录。
CPU的稳定分块没问题,GPU的局部高吞吐没问题,FPGA的边界快速校验也没拉警报。
硬扛到第三十七分钟才崩盘,问题出在了误差回馈环节。