五月第一个周一的凌晨两点,张雨往嘴里塞了第四杯美式。纸杯已经凉透了,他也不在乎,灌下去的时候胃里一阵痉挛。训练集群的监控面板占据了他两块屏幕——左边是GPU利用率曲线,右边是loss值的实时折线。
loss在第八百步的时候突然翘了一下。
张雨盯着那个跳动的数值,手指悬在键盘上方没放下来。翘一下正常,训练刚开始,梯度还不稳定。他等着。loss回落了,继续往下走。他松了口气,靠在椅背上,拿起手机看了一眼时间——2:17。美团上点了份黄焖鸡,四十分钟前下的单,骑手还在三公里以外。
六小时后,第一轮SFT训练跑完。
张雨把评估脚本挂上去,在工位上趴了大概四十分钟。脖子酸得厉害,起来的时候左胳膊整条都是麻的。他揉着胳膊等评估结果刷出来,屏幕上逐行跳出benchmark的得分——
他愣住了。
研报关键信息抽取准确率61.2%。财报数据提取58.7%。政策影响分析一致性52.3%。跟基座模型比,平均只提了不到六个百分点。
六个百分点。五千条标注数据喂进去,调了一整夜的参数,提了六个百分点。
张雨把评估结果截了图发到项目群里,附了一句话:第一轮SFT结果不理想,我分析一下原因。
九点十分,林晨到了公司。他打开手机看到这条消息,站在电梯里重新看了一遍那几个数字。61.2%、58.7%、52.3%——这些数字他太熟悉了,FinGPT v3基座模型在投研任务上的初始表现就是这个水平附近。五千条专门标注的金融投研数据,加上整整一轮微调,几乎等于白干。
他走进办公室的时候张雨已经在了。桌上摆着三个空咖啡杯和一个外卖盒,黄焖鸡的米饭剩了大半碗,菜已经干成一层油膜贴在盒底。张雨的头发支棱着,黑眼圈重得像挨了一拳。
过拟合了。张雨没等林晨问,直接说结论,我回查了训练日志,loss在两千步之后就几乎没有下降,但验证集上的指标开始发散。模型把训练数据里的pattern背下来了,换一份没见过的研报就傻了。
林晨把评估报告翻到验证集那一页。确实,训练集上的loss已经收敛到了很漂亮的一条水平线,但验证集的loss从一千八百步开始就往外飘了。典型的过拟合曲线。
学习率设多少?
2e-5。保守值。
太保守了反而不好——林晨皱着眉,学习率小意味着模型在参数空间里走得太慢,只学到了训练集表面上的关联,没机会往深处走。而且你训练了多少个epoch?
三个。
三个epoch配2e-5的学习率,模型根本没有动力跳出训练数据的局部最优。林晨拿过张雨的键盘,在终端里翻了训练配置文件,学习率调到5e-5,epoch降到两个,加dropout 0.1,再加一层gradient clipping——阈值1.0。另外,数据增强做一下:把研报里同一句话的不同表述方式手动加进去,比如净利润同比增长23.5%归母净利增幅23.5%,让模型知道这是同一个意思。
数据增强那个得让标注组帮忙——
我去协调。你先把第二轮训练的配置改好,下午我带人把增强数据补上,晚上重新开跑。
张雨点头,但没动。他盯着屏幕上那条验证集的loss曲线,嘴角抿了一下。
林晨看出来了。别想那一轮了。数据第一次喂进去,不理想是正常的。我们五千条样本量不算大,过拟合的风险本来就高。调整策略再来就行。
我知道。张雨的声音有点干,就是——折腾了一个通宵,结果等于什么都没干。
不算什么都没干。你现在知道了2e-5的学习率配三个epoch会过拟合——这是有用的信息。
张雨苦笑了一下,开始改配置文件。
下午两点,林晨把三个标注实习生叫到小会议室,把数据增强的需求交代下去。小敏问:林总,同一句话的不同表述要加多少条?
每个核心金融术语至少覆盖三种常见写法。营业收入营收主营业务收入归母净利润归属于母公司股东的净利润毛利率销售毛利率——你们做标注的时候应该见过这些写法。另外研报里还有一些口语化的表达,比如业绩大增盈利修复,也列进去。
小敏记在笔记本上,另外两个实习生也开始翻自己之前标注过的文档,把同义不同写的表达摘出来。
傍晚六点,增强数据补了将近八百条。张雨重新检查了一遍训练集的分布,确认没有引入明显的偏移,然后提交了第二轮SFT任务。
今晚我来盯。张雨说。
你回家睡一觉。林晨挡了他,昨天熬了一宿,今天再熬,明天脑子是糊的。训练跑起来不需要人盯着,设好early stopping和checkpoint,明天早上看结果。
>>>点击查看《AI时代:码农的涅盘重生》最新章节