[笔趣阁]:bqge. cc 一秒记住!
然后是计算图。
原来的实现里,特征融合那一段反复调用了三次相同的矩阵运算,结果每次都重新算一遍。
他把中间结果缓存起来,只算一次,后面直接查表,推理时间从零点八秒降到零点三秒。
最后是训练循环。
原来的代码每迭代一步就更新一次权重,梯度波动大,收敛慢。
他把梯度累积加进去,每四步更新一次权重,等效批量增大四倍,收敛速度直接上去了。
整个重构花了他将近一个月。
白天调代码,晚上看文献。
周末也不休息,把测试集反复跑。
跑完一轮,记录数据。
再改,再跑。
第二个月初,他把重构后的版本提交到核心组的共享仓库。
跑了一整轮完整训练,训练时间从十二小时降到六小时四十分钟。
推理延迟从零点八秒降到零点二九秒,精度还涨了零点三个百分点。
核心组的人看到结果时,没人说话。
周盯着屏幕上的对比表,看了很久。
然后他站起来,走到陆远工位旁边。
“你那个流式数据加载,能不能给我也用一下。”
“可以。在共享仓库里,你自己拷。”
周点头,走回自己工位,打开仓库开始看代码。
看了一会儿,他回头又看了陆远一眼。
什么也没说,转回去了。
第二周,赵博士来核心组开内部会。
他看了重构前后的对比数据,把表从头翻到尾。
“训练效率提升将近一倍。推理延迟降到原来的三分之一。精度还有提升。”他合上表,看着陆远,“你重构的时候,按什么原则走的。”
陆远说:“先找瓶颈。哪一个环节最慢,就改哪一个。改完了再看下一个。”
“你怎么知道瓶颈在哪。”
“看日志。跑一轮下来,每个模块的耗时都有记录。排在前面的那几个,就是瓶颈。”
赵博士点头。
他站起来,走到白板前,画了一个图,是模型训练的时间分配。
数据加载、前向传播、反向传播、权重更新。
每一块的耗时都被标了出来。
“这个图,核心组所有人都要看。以后每周报进度的时候,先报这个。”他把笔放下,转身看着所有人,“效率就是一切。你精度再高,跑得慢,等于没跑。”
散会之后,林薇来找陆远拷数据。
她在门口站了一会儿,等核心组的人走得差不多了才进来。
“听说赵博士在会上夸你了。”
“没夸。”
“他说你是他见过的最像工程师的工程师。从骨子里懂这东西。”
陆远正盯着屏幕调参数。
他听完,没接话。
只是把右手从键盘上抬起来,看了看自己的手。
掌心有茧。
修电器时留下的,后来考大学,茧退了大半。
但手指根部还有几块硬皮,是常年握螺丝刀和扳手磨出来的。
他把手翻过来,指腹上还有几道浅痕。
当年在矿道里敲键盘,键盘是旧式的机械键盘,键帽硬,敲久了指尖会留下印子。
后来用灵械键盘,光感应的,不留痕。
可那些旧茧一直没全消。
“还在。”林薇说。
“什么。”
“你手上的茧。”
陆远把手放下。
“在。退不掉了。”
林薇没再问。
她拷完数据,抱着硬盘走了,走到门口回头看了他一眼。
陆远低下头,继续调代码。
屏幕上的训练曲线在跑,比一个月前快了一倍。
可他知道,这才刚开始。
模型还在长大。
他得让它长得慢一点,再慢一点。
ℬ 𝐐 𝐆e . ℂ ℂ