技术分享会之后的三天,林晨的工位比往常热闹了不少。
先是数据工程组的周浩找上门。他是个瘦高个,戴一副黑框眼镜,说话速度很快,像是脑子转得比嘴巴还快。周二中午,他端着餐盘在林晨对面坐下,开门见山:你上次分享的那个LSTM时序模型,特征工程是怎么做的?我最近在做用户行为序列的建模,特征选择卡住了。
林晨放下筷子,想了想:金融时序和用户行为时序虽然领域不同,但特征工程的核心思路是相通的。你现在是卡在哪个环节?
信息增益太低。周浩皱眉,我喂了一百多个特征进去,模型的AUC只比基线高0.3%,感觉大部分特征都是噪声。
一百多个?林晨挑了挑眉,你做特征筛选了吗?
做了,用L1正则化筛过一轮,砍掉了一半,但剩下的五十多个还是太多。模型训练慢不说,线上推理延迟也受影响。
试试反向筛选。林晨用餐巾纸擦了擦嘴,从工位上拿过一张白纸,画了一个简单的流程图,不是从一百个里选最好的,而是从最重要的三五个开始,逐步加入候选特征,每加一个看验证集效果有没有显着提升。如果加了没提升甚至下降,就扔掉。
为什么不是从多的开始减?周浩问。
因为从多到少减,容易留下相关性高但边际贡献低的特征。从少到多加,每一步都是有效的。就像量化交易里选因子一样——少而精,远胜过多而杂。
周浩看着白纸上的流程图,眼睛亮了:这个思路好,我们之前的做法确实太粗暴了。我下午就试试。
还有一点,林晨补充,特征和特征之间的交互效应也要看。有时候单独看没用的特征,组合起来效果可能很好。金融里常见的是量价背离,价格涨但成交量缩,单独看哪一项都不明显,组合起来就是一个很强的反转信号。
周浩把白纸上的流程图拍了照,连连点头,端着餐盘走了。
第二个找来的是推理优化组的工程师李敏。她是个短发女生,说话利落,技术背景很强。周三下午,她路过林晨工位时停下脚步:林晨,你有空吗?想跟你聊聊LSTM推理延迟优化的事。
现在就可以。林晨转过椅子面对她。
你上次分享说你单台服务器上跑LSTM,推理延迟控制在毫秒级。我们推荐模型上线的时候,延迟是最大的瓶颈之一。你是怎么优化的?
林晨简短地解释了他做量化的思路:模型蒸馏、量化压缩、缓存中间结果。李敏边听边在笔记本上记,偶尔追问细节。
缓存中间结果这个,你们推荐系统里应该也在做吧?林晨问。
在做,但做得不够精细。李敏说,我们目前只缓存了最后一层的embedding,中间层的特征计算每次都重新跑。你的方案是把前几层也缓存了?
对,特别是输入序列不变的时候,前几层的输出是确定的,完全可以预计算缓存下来,只在线上跑后面几层。推理时间能减少60%以上。
李敏的眼睛明显亮了一下:这个思路可以借鉴。我们推荐模型的用户画像部分,大部分特征也是低频更新的,完全可以预计算缓存。
两人又聊了十多分钟,主要围绕如何在推荐系统场景下实现类似的推理优化。分开时,李敏说了一句让林晨印象深刻的话:你们做量化的人,思路确实不太一样。我们是资源堆上去跑不动就加机器,你们是资源不够就想办法压榨每一毫秒。
因为我们在交易市场里,毫秒就是钱。林晨笑了笑。
第三个、第四个、第五个……接下来几天,陆续有不同组的同事来找他,有的问技术细节,有的请教项目经验,有的纯粹是对量化交易感兴趣想来聊聊。林晨来者不拒,能帮的帮,能聊的聊。他发现,每跟一个人交流,他自己的思路也会被激发,那些原本模糊的想法在讨论中变得越来越清晰。
周五下午,组群里弹出一条消息,是王皓发的:
讨论帖量化交易风控与推荐系统稳定性的异同已经更新到第43条回复,感兴趣的同学可以继续讨论。另外,林晨分享的PPT和补充材料已经上传到内部知识库,搜索量化交易可以找到。
林晨点开一看,43条回复里,有技术讨论、有实际案例分析、有对风控设计的深入探讨,甚至还有人把自己组的系统架构贴出来做对比。这个由他的分享引发的讨论,已经从一场45分钟的演讲,变成了一个持续发酵的技术社区话题。
他关掉讨论帖,坐在工位上发了一会儿呆。
这种感觉很陌生。在跨境电商公司的时候,他是技术负责人,但没有人在意他的技术观点,因为公司里真正懂技术的人太少。后来一个人做量化系统,所有的思考都是独白,没有回响。现在,他说的每一句话都有人在听、在想、在回应。这种智力的共振,比任何物质奖励都让他感到充实。
手机震了一下。是陈博士发来的私信:下周二下午三点,我办公室,聊聊可解释性和蒸馏结合的事。
林
>>>点击查看《AI时代:码农的涅盘重生》最新章节