五月第一个周一的凌晨两点,张雨往嘴里塞了第四杯美式。纸杯已经凉透了,他也不在乎,灌下去的时候胃里一阵痉挛。训练集群的监控面板占据了他两块屏幕——左边是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,明天早上看结果。
张雨犹豫了一下。那我设个凌晨四点的闹钟起来看一眼loss曲线——
随便你。但别再喝四杯咖啡了。
张雨嘿嘿笑了一声,开始收拾桌上的外卖盒。
第二天早上八点半,张雨在林晨的工位旁边等着。这次他换了件t恤,头发洗过了,但手指还是在微微抖——不是紧张,是昨天喝太多咖啡的后遗症。
出来了。第二轮SFt。他把笔记本转向林晨。
屏幕上是新的评估结果。研报关键信息抽取准确率82.7%。财报数据提取79.4%。政策影响分析一致性76.8%。风险因子自动识别74.1%。
比第一轮好了将近二十个百分点。
这次对了。张雨的声调明显高了一截,验证集和训练集的loss差距缩小到合理范围,early stopping在第一千七百步触发了——说明模型在第二个epoch的早期就学到了足够好的泛化能力,没有过拟合。
林晨看着那几个数字。二十几个百分点的提升,从五十多到七十多到八十出头——放在大模型微调的语境下算很好了。但跟之间还有一段距离。八十出头的准确率意味着每五次判断有一次是错的,在金融场景下,错一次就可能漏掉一个风险因子或者误读一条关键数据。
接下来上RLhF。林晨说。
RLhF的训练比SFt复杂。核心环节是偏好标注——要让人来判断模型给出的两个回答哪个更好。但的标准在金融场景下极度微妙。
林晨从金融事业部借了两个分析师来做偏好标注。一个叫赵锐,做了五年行业研究员,看研报比看小说多;另一个叫方颖,从券商研究所跳过来的,对合规和表述规范极其敏感。
第一天标注,两个人就吵起来了。
赵锐指着屏幕上A和b两个回答:这个A明显更好——它把毛利率变动的驱动因素拆成了量和价两个维度,逻辑链条完整。b虽然也提到了毛利率,但没有区分驱动因素。
方颖摇头:A的逻辑是完整,但你注意到没有,它引用的那个数据源写的是wind一致预期,原文是wind预测均值——虽然意思一样但表述跟原文不一致。在合规审查下,这种改动可能被认定为信息失真。b虽然没拆驱动因素,但它引用的数据源跟原文一字不差。
那你觉得b好?
在投研场景下,数据溯源的准确性优先于逻辑的完整性。逻辑分析师可以自己补,数据一旦标注错了,下游用起来就是错的。
两个人各执一词。林晨坐在旁边听完,说了一句:两个标准都对,但优先级不同。投研场景下——信息准确性第一,逻辑完整性第二。A的逻辑再好,数据源引用有偏差就扣分。但b的数据准确也不能掩盖逻辑缺陷——两个维度同时评分,最终取加权和。
他打开标注规范文档,在偏好评估标准那一栏加了三行字:
信息准确性权重0.4,逻辑连贯性权重0.35,合规安全性权重0.25。当A在信息准确性上低于b时,即使A的逻辑连贯性评分更高,仍标注b为偏好项。
赵锐看完这个标准,咕哝了一句:行吧,数据准确性高于一切——这是你们做量化的人的思维。
金融行业的底线。林晨回了他一句。赵锐没再说话。
三天时间,赵锐和方颖标注了一千对偏好对比数据。每一对对比都要在三个维度上分别打分、写评语、再判定偏好。到最后一天下午,方颖的眼睛已经布满血丝,赵锐的脖子上贴了两片膏药。两个人互相检查了对方的标注,又吵了两回,最终把分歧样本提交给林晨仲裁了三十多对。
一千对偏好数据入库。张雨在当天晚上启动了RLhF训练——先训练奖励模型,再跑ppo对齐。
这次张雨没有熬通宵。他设置了checkpoint自动保存,把手机闹钟调到凌晨四点半。闹钟响的时候他翻起来看了一眼后台的reward model训练曲线——loss在稳步下降,没有异常。他又睡了。
第二天早上七点四十分,张雨到了公司。RLhF训练已经跑完了。他没有立刻打开评测结果,而是先去茶水间泡了杯茶。手还是抖,昨天那几杯咖啡的咖啡因还没代谢干净。他端着茶杯回到工位,深吸了一口气,点开了最终评测报告。
屏幕上逐行刷出数字。他的目光从上往下扫——
研报关键信息抽取准确率:89.3%。
他停了一下。比第二轮SFt的82.7%又提了将近七个百分点。RLhF确实有效。
财报数据自动提取准确率:92.1%。政策影响分析一致性:87.6%。风险因子自动识别:85.4%。
他往最下面看——平均综合得分:88.6%。
百分之八十八点六。
张雨放下茶杯。他没有喊出来,也没有跳起来。他盯着那个数字看了大概十秒钟,然后拿起手机给林晨发了一条消息:
出来了。88.6。你来的时候到我工位上看。
八分钟后林晨到了。张雨把屏幕转过来,没有说话,让林晨自己看。
林晨的视线从上往下走,速度很慢。他看到89.3%,眉梢动了一下;看到92.1%,嘴角微微收紧;看到最下面的88.6%,他的手搁在桌沿上,手指轻轻敲了两下。
对比数据呢?
张雨切到另一页。同样是十份真实研报的零样本测试——通用大模型在关键信息抽取上的准确率是63%。智研1.0是89.3%。中间差了二十六个百分点。
这十份研报模型训练的时候没见过?
绝对没见过。国泰证券上周新发的,我专门挑的发布时间在训练数据截止之后的。
林晨站直了身体。他没说话,在脑子里过了一圈——88.6%的综合准确率,在金融投研这个场景下意味着什么。够不够推向商业化?够,但不算宽裕。每十次判断有一次出错的概率,在机构客户的使用场景下仍然需要人工做最终复核。但作为工具,这个精度已经过了及格线。
他更在意的是另一件事——这个模型从第一次SFt的失败,到调整策略后的效果跃升,到RLhF的进一步拉高,整个过程证明了一件事:五千条高质量标注数据确实能撑起一个垂直模型——这个判断没错。
但推向商业化意味着另一组问题:客户会不会接受88.6%的准确率?监管怎么看待AI输出的合规责任?商业场景下错了就是投诉和退单。
他权衡了几分钟。
发一份给陈博士。他说,另外准备一下——后天跟金融事业部和产品部做一个方案评审会,我们讨论智研的商业化路径。
商业化?张雨的语气里带着一点迟疑,88.6%够了吗?我觉得还可以再跑一轮——
不是够不够的问题。林晨打断他,再跑一轮当然还能再提几个点,但商业化评审不代表马上就交付。评审是让各方看效果、定方向、对齐预期。如果等到九十多分再启动商业化流程,时间窗口就被人占了。
张雨没再反驳。他低头看了一眼屏幕上那个88.6%,把评测报告导出成pdF,拖进了陈博士的共享文件夹里。