

TL;DR#
三个大二本科生,快手xSIGIR LLM4Rec Challenge 初赛 33/1200+ 入围;复赛因为缺乏扎实的数据/评测工作而无缘前 20。一些关于比赛本身的经验总结;一些暴论;

碎碎念#
考试前做什么都比复习考试本身有意思,所以在大二下的《信号与系统》考前一天我只不过是无意间刷到快手的 LLMRec 挑战赛宣传,便分享给了两位好朋友。
其实我什么也不懂呢,那个时候 CS336 都没怎么看过,也没有做过 LLM 的 SFT 和 RL。单纯是看到 fo 的大佬关注了这个比赛。所以就想,好的,那么我们来看看这个盒子里面有什么吧。
两位朋友非常非常好啊,即便我没有相关经验也愿意相信我,陪着我胡闹。初赛我手头几乎没有像样的算力,所以他们拿着实验室空闲的 3090/4090,对着 1.5b 小模型尝试着 SFT/GRPO/OPD 各种方法,终于是慢慢 work 了,拿到了 33/1200+ 的成绩入围复赛。(在这里非常感谢 Parzival 同学最后几天的努力打榜,让我们能够拿到 T-Shirt)
而复赛官方终于舍得提供算力了,我们便在 A800*4 上,对着 7b 的 Qwen 模型抽了一个月的奖。我们也许很努力吧(至少我的队友是的),可惜我们做错方向了,没有做好数据和测评,在算法和调参上做 LLM 的 Post-train 是越做越错的(或许这也是一种傲慢和懒惰吧)。
听前 20 线下的队伍说大佬们都特别有东西,可惜我们无缘线下了。腾讯 x KDD 的 TAAC 开源方案特别多,可惜快手这个比赛也许涉及到 LLM 的调参小妙招吧,并没有什么开源方案。(又或者只是太 Dirty 了,没有什么壁垒,只有数据管线。)
不管怎么说,下面总结一下我在这个比赛中的收获。是给我自己看的,也是希望能够给他人提供一些参考。
但是我也并不是什么大佬,见识有时候浅薄地让自己惭愧。但是不写下来永远不知道自己的问题在哪,所以请多指教,望大佬斧正。
收获#
下面的内容只针对小模型(特指 1.5b/7b)。
数据/测评#
洗数据#
官方给了四个维度:懂物料/推荐/用户/世界 加权算模型表现分。提供的数据有:平台上已经洗的差不多的几 G 数据集, huggface 上随 onereason 论文一起出现的原始数据集。
由于这个推荐数据涉及到大量隐私所以不能给我们看太多吗,,,总之没有太多的正反例可以看(也许是我们洗数据功力有限),只能对着官方的样例猜。
我认为数据的核心在于多样性,而对于 SFT 而言只能是正例的多样(不能塞负样本太坏了,我还是喜欢 RL 类的鲁棒),下面是我做的,比较 work 的尝试:
-
把懂物料的 item2描述 和 描述2item 里面涉及到的对应关系重新抽出来整理了一下,然后重新完整映射回两类任务的问答。效果非常显著(从 0.91 到 0.97);但是后续我尝试把推荐/用户数据里面涉及到的物料整理回懂物料效果却非常差劲。
-
懂世界里面塞了 CEval 大大涨点,后面发现塞无关的历史文科 QA 数据集也能涨点,塞 Math 也能涨点……测试过不是指令遵循的问题,而是纯背书的问题。官方的懂世界是一个纯背书的 bmk。(对于不能做数学题的 1.5b/7b no_think 小模型而言)
-
\think or \no_think Qwen 的 think/no_think 融在一个模型,通过提示词控制(我当时第一次知道原来别的厂家的 low/high/xhigh 也是这样做到)。然后这个是最有趣的地方:官方 onereason 论文测出来 CoT 是路边一条,不但 latency 拉完了,而且 pass@n 也不如 \no_think。但是 \think 数据真的没用吗?当我尝试把所有 \think 数据全部改成 \no_think 时居然大幅度降点了。混训 \think \no_think 对模型理解任务是有用的。但是具体配比是多少比较好呢?我们只是一直在官方的 20%-35% 之间徘徊。由于算力不足,没找到好的答案。
其他的尝试做了不少,比如 deepseek 回灌思维链,dpo 打标,从 huggface 原始超大数据集上洗数据,都没有 work。是有大佬蒸馏成功了的,只是我太菜了不得其法。
SFT 调参#
LLM 的输出相比于其他类型的模型更加难以评测。下面只是一些模糊的直觉(我很遗憾我们在本地建立 proxy bmk 的计划失败了)
epochs:一个 epoch 就够了。一个 epoch 能够把大部分简单的东西背下来。足够在官方榜单上 hacking 到不错的成绩。两个 epoch 的第二轮训练会把梯度全部花在难样本上,其实提升并不明显。
学习率:如果你的样本量很小,学习率可以适当大一点。这个还是比较好调参的,二分一下。
LoRA or 全参:首先,如果是因为卡不够总是 OOM 的话, LoRA 是一个好选择。但是 LoRA 并不能为训练提速,同样的数据量,你全参该更新多少轮, LoRA 也要更新多少轮。但是由于参数量小,模型可以硬背下来的东西少。小 rank LoRA 天生起到正则化的作用。对于小数据量 SFT,LoRA 效果甚至比全参好。
但是可惜的是,快手 LLM4Rec 这个比赛的四个 bmk 领域:懂物料/推荐/用户 和 懂世界这两类任务不是正交的,是要抢夺模型的参数容量的。LoRA 注定无法走向上限。
强化学习!#
RFT#
这个最初是 Parzival 同学做的,效果非常好。在本地设定代理奖励 pass@n 让模型自己采样自己的回答,然后重复 SFT。
能够提高 pass@n 命中率。
GRPO#
这个也有效,也是拿 pass@n 之类的当代理奖励。
强化学习能够在很小学习率的情况下(是 SFT 的 量级)做到参数的高效修改。但是强化学习的效果取决于奖励和真实目标(在这里是 hacking 官方 bmk = =)。
我们的数据和测评做的很失败,所以一般强化学习 10-20 轮就没效果了。
算力/token 焦虑#
每天都听到有人说,我有好的想法,只是我没有 token/算力 做不出来。其实我之前也是这样觉得的。
它确实有一定道理,因为 token 够用和不够用真的是两种状态。 token 不够用的时候哪怕有新的想法也不敢和 ai 进一步讨论,调研,写代码,然后验证。(蒋炎岩所言的:「怎么做得更好」)token 够用的时候完全可以大水漫灌,保护自己的带宽。不把自己的注意力放在信息熵极低的地方而是阅读理解高信息密度的东西。
但是消耗 token 宛如带兵,token 能否被高效使用,取决于人本身的带宽。你够不够 AI Native?取决于你本身是否能够理解 AI 输出的内容并以合适的方式组织它们。
而算力呢?诚然当我有机会窥探到成倍于 4/8*A800 的算力时才感慨到曾经我要花三四天抽奖的消融,放在大算力上只是一个半天的事情。但是拿到大算力就能做好 research/engineering,做出真正有趣有用的东西吗?并非如此。什么是值得做的呢?什么是不值得做的呢?什么是很容易做好的「低垂果实」呢?什么是需要爬梯子的硬骨头呢?在哪里能够高概率获取「反直觉」的有趣结果呢?在哪里只是不断地重复/抽奖呢?这些都是作为人需要培养的东西。
当然算力是真的很有用。也许 Transformer 本身也是大算力抽奖的产物吧。把 CNN RNN 时代的东西抽来抽去最终发现这个 Attn work 了,然后再改一改就变成 Transformer 了。但是怎么设计这个 loop 高效抽奖也很有价值呀。
我确实是很菜的。但是不妨碍我发表一些暴论,然后希望找到一些正向或者负向的反馈,获取自我提升的梯度。
以上。
2026 年 9 月 25 日 于 佛山。