关灯
护眼
字体:大 中 小
加入书签
上一页
目录
下一页
请认准"下载楼"官方域名 http://www.daxingwx.net
第一卷少年游 第八十八章异步 (第2/3页)
系统经过前几轮改造以后,终于可以连续运行,不再因为磁盘写满或者单个任务卡死就整体停摆。宋弈于是做了一件他们之前一直没有胆子做的事:把两个不同版本的模型同时接进去,让测试器并行跑。
本意很简单。他们想比较同一批自动生成的测试,在模型A和模型B上分别会发现什么弱点。按原既白最初设计,每个任务生成一张测试图片以后,同时发给两个模型,两边都返回结果,再统一写入数据库。只要把模型版本记清楚,后面便能比较。
第一晚看起来一切正常。
第二天上午,结果开始出现无法解释的矛盾。
同一张图片在日志里有三次记录,两次显示模型A判断正确,一次却显示模型B输出;某些测试任务标记的是A版本,真正调用的模型进程却已经在半小时前被替换成新权重;还有一批图片生成时依据的是旧模型的弱点,等真正进入评测队列,模型已经更新,结果当然和搜索时完全对不上。
宋弈看着数据库里那些互相打架的记录,第一反应是:“是不是写错标签了?”
查了半天,标签本身没有写错。
真正的问题出在时间。
模型训练、测试生成、任务调度和结果写入四件事并不是按一条整齐的流水线一步一步发生。有些测试任务生成很快,有些慢;模型更新后,队列里仍然躺着按照旧版本生成的任务;某个进程重启以后拿到的是新模型,任务本身却还认为自己在测试旧模型。每一个小模块单独看都“做对了”,组合起来却产生了一批连他们自己都无法再解释的结果。
原既白第一次完整画出时间线时,沉默了好一会儿。
宋弈说:“要不每次模型一更新,就把旧队列全清掉。”
“可以。”
“那不就完了?”
“旧任务全浪费。”
“总比结果不能信好。”
原既白没有反驳。他一开始也倾向于这么做:模型版本变了,就停掉所有测试,清空队列,从头开始。这样最干净,最容易保证一致。可他们很快算了一下,如果以后模型更新频率更高,长时间任务不断被清空,系统大部分时间都在重复做已经做过的事。更何况有些旧任务本身仍有价值,因为比较同一测试在新旧模型上的变化,恰好能告诉他们模型升级以后哪些弱点消失、哪些弱点又出现。
真正需要做的,不是让整个系统每次都停下来等所有东西对齐,而是让每一条结果都能回答:它是在什么模型、什么数据、什么测试器版本和什么时间条件下产生的。
宋弈听完说:“所以不要求大家一起变,但必须知道自己跟谁生的?”
原既白抬头看他。
“你这个说法很难听。”
“能懂就行。”
确实能懂。
他们开始给每一个结果附上完整的“来历”:这张测试图由哪个测试器版本生成,生成时针对的是哪个模型,真正执行时用的又是哪一个模型,数据集版本是什么,任务何时进入队列、何时运行。原本一行结果只需要图片编号和预测值,现在后面多出一长串看起来很烦的元数据。
宋弈抱怨说他们是在给每一张图片办身份证。
原既白却越来越觉得这些“身份证”比想象中重要。一个数字本身几乎什么都不说明。模型准确率从九十二降到八十八,如果不知道测试集有没有变、模型版本有没有变、数据处理有没有变,这四个百分点根本不能直接比较。系统越复杂,“同一个结果”背后可能来自的路径越多,而路径一旦丢掉,很多事实就会变成看起来精确、实际上无法追溯的数字。
叶老师看完新版以后,问的第一件事是:“如果一个任务跨了两个模型版本怎么办?”
原既白已经有准备:“结果不覆盖,分开记。”
“如果测试生成基于A,执行时模型已经是B?”
“也记清楚。它不再是A的纯测试,但可以作为A生成、B执行的一类迁移测试。”
“谁解释?”
“报告层解释,不让底层数据自己假装是一回事。”
叶老师这次没有继续追。
宋弈等视频挂断以后,靠在椅背上说:“你现在越来越喜欢把不能比的东西写成不能比。”
原既白笑了:“总比硬比好。”
“以前你最爱统一。”
“现在也爱。”
“看不出来。”
原既白把桌上的几张时间线叠起来,没有回答。统一当然仍然是他的本能,但这几个月他越来越明白,真正可靠的统一不是把差异藏掉,而是先知道差异在哪里。如果两个结果来自不同版本、不同路径、不同时间条件,最偷懒的办法是给它们一个共同名字然后直接比较;真正困难的是保留差异,同时还找到更高一层可以成立的共同结构。
下午学校有第三次高三模拟考成绩分析。
原既白这次年级第二。
第一名是同班一个长期稳定的女生,名字叫林澄。她没有原既白在数学上的极端优势,也不参加算法项目,却几乎没有明显短板。语文比他高十一分,英语高七分,数学低六分,理综低三分,加起来仍然领先。成绩贴出来以后,班里有人半开玩笑地说原既白终于被“正常高考生”打败了,他也笑了笑,并没有太在意第二这个数字。
真正让他在意的是秦老师把两个人的分项放到一起以后说:“你要是把所有时间都用在把数学从一百四十七提到一百五,也不一定比把语文多拿八分划算。”
原既白说:“我没有在补数学。”
秦老师看着他:“那你晚上在干什么?”
“项目。”
“我知道。”
秦老师没有要求他停掉。他沉默了几秒,只说:“你自己选。但是选择不是写在纸上说我都要。一天就是二十四小时。”
这句话并不新鲜。
可原既白回座位以后还是把最近一周的时间重新算了一遍。机器学习项目平均占去两个晚上,有时遇到故障会拖到第三个;训练营那边江遥进入核心组以后,聊天虽然更少,却也经常在他准备睡觉时出现一个让他忍不住继续想的问题。高考复习的时间没有突然减少很多,真正减少的是那些看起来很零碎的空档:晚自习结束后二十分钟,午休没睡的半小时,回家以后原本可以发呆的一小段时间。
他第一次认真考虑,要不要把项目再压缩一点。
这个决定并不让人舒服。因为和高考不同,机器学习项目没有明确分数,也没有一张倒计时告诉他“错过以后就没机会”。恰恰因此,更容易被现实中有明确截止日期的事情一点点挤掉。
晚上他给叶老师发消息,说接下来两个月只能固定保留每周两个晚上,不再额外加时。原本以为对方会觉得投入不够,叶老师却很快回:“可以。把能持续的边界先定出来。”
原既白看着那句话,忽然想起陈叔的六桌。
这一次他也没有把它变成什么人生道理,只在自己的时间表上把周三和周六晚框起来,其余时间全部留给高考。项目如果在周三晚上没解决,除非系统完全不能运行,否则不挪到周四继续。
第二天他第一次真正执行这个规则时,就碰上了一个没解决完的问题。
测试队列里出现一批跨版本任务,按照新设计可以追溯,却还没有决定报告层如何统计。宋弈说再做半小时就能搞定,原既白看了一眼时间,已经十点二十。
“周六再弄。”
宋弈愣了一下:“你能忍?”
“不能。”
“那你还走?”
“明天英语早测。”
宋弈盯着他几秒,笑得非常欠揍:“爱情和高考终于联手把你改造成人了。”
原既白关电脑:“跟爱情没关系。”
“那江遥呢?”
“在训练。”
“更惨,女朋友都没空管你。”
原既白把机房灯关了。
---
训练营第一次正式的核心组内部排序安排在周末。
这一次十五个人不再只看一个分数,而是三部分:传统理论一百六十分,实验基础一百分,开放建模由三名老师分别评价,最后再综合考虑。顾老师提前说得很明确,开放建模不会因
(本章未完,请点击下一页继续阅读)
请认准"下载楼"官方域名 http://www.daxingwx.net
加入书签
上一页
目录
下一页