返回列表

4th place writeup - Instruct LLM is all you need

674. Jigsaw - Agile Community Rules Classification | jigsaw-agile-community-rules

开始: 2025-07-23 结束: 2025-10-23 内容安全 数据算法赛
第 4 名解题报告 - 只需指令微调 LLM

第 4 名解题报告 - 只需指令微调 LLM

高效利用指令微调 LLM 进行分类

作者: Ruslan Berdichevsky (rusalmighty)
发布时间: 2025-10-27
竞赛排名: 第 4 名

Kaggle Jigsaw (第 4 名) — 技术解题报告 – 只需指令微调 LLM

致谢

非常感谢组织者举办了一场运行良好的比赛。作为这个社区的新人,这是一次很棒的学习经历。这次挑战也展示了指令微调的 LLM 结合可调整的数据,如何能够提供强大的分类性能——尤其是在 SALSA (Single-pass Autoregressive LLM Structured Classification; 论文) [1] 可以大放异彩的场景中。SALSA 是我最近的工作——这是我过去一年进行的研究论文。

概述

我的提交基于 SALSA (Single-pass Autoregressive LLM Structured Classification)。通过提示词模板和与任务对齐的微调,指令微调的 LLM 可以实现接近 SOTA 的性能。在 SALSA 中,模型在微小的固定答案词汇表(例如 "0", "1")上的下一个 token 的 logits 被视为标签的 贝叶斯估计量。通常,指令模型越大且对齐得越好,SALSA 信号就越强——因为训练是从更强的零样本基线开始的。为了挤出一点额外的 AUC,我引入了 广义交叉熵 (Tsallis)伪标签 阶段。

一句话概括 SALSA

  • 单次传递: 提出一个范围紧密的问题,并直接从下一个 token 分布中读取答案 token 的概率(无需多步解码)。
  • 结构化标签空间: 将答案限制在微小的词汇表中,以便 logits 可以清晰地映射到类别概率。
  • 贝叶斯视角: 归一化的 logits 作为似然度;你可以将它们用作概率,跨提示词/规则组合,或在模型间融合。这也使得有效使用 软标签伪标签 成为可能。
SALSA 方法示意图

数据处理

  • 将 Few-shots 作为标签: 每条记录包含 四个 few-shot 示例——2 个正例2 个负例。我将这些与公开提供的标签一起用作标签。
  • 移除 Subreddit 字段: 我移除了 subreddit 字段,因为它具有误导性——few-shot 示例与公开数据中的 subreddit 字段无关。
  • 重复与不一致: 训练集包含冗余文本和偶尔的分歧。我 合并了重复项 以创建唯一数据集,并计算了每个唯一文本的 违规率;在训练期间,该比率作为 软目标(源自同一评论 - 规则对的正面/总标签的 ground-truth 概率)。

基础 SALSA 训练

计算限制。 在 Kaggle 的时间预算内训练 ~32B 参数(或更大)的模型是一个重大的技术挑战,所以我没有尝试。我使用 AWQ 基座模型,因为根据我的经验,AWQ 在每比特上保留模型能力的效果优于 GPTQ 或简单的权重裁剪。
尝试的基座模型。 Qwen-3 4B 和 Qwen-3 14B

鲁棒损失函数。 为了减轻标签噪声,我用 广义交叉熵 (Tsallis) 替换了交叉熵,并根据本地 CV 和公共 LB 采样将 q 设置为 0.955。这提高了公共分数,而私人分数仅略有变化——表明效果适中。

种子敏感性。 我观察到数据加载器种子变化导致约 0.002 AUC 的波动。在此约束下,低于该阈值的增益(包括来自 GCE 的增益)很难声称具有统计显著性。

单阶段结果

模型 私人分数 (Private) 公共分数 (Public)
Qwen-3 4B + GCE 0.91874 0.92482
Qwen-3 14B + GCE 0.92313 0.92909
Qwen-3 14B + CE 0.92309 0.92803

提示词与推理

为了使大模型保持在预算内,我使用了 简短模板 并将 评论放在最后,以最大化 前缀 KV-cache 的复用。在推理时,我 按规则批处理,以便规则文本也保持缓存。

提示词模板

<|im_start|>user

Does the comment violate the rule? Answer in the format:
<ANSWER>#Number</ANSWER>
Where the number is one of:
0 - No
1 - Yes

The rule:
<RULE>
{rule}
</RULE>

The Comment:
<COMMENT>
{body}
</COMMENT>
<|im_end|>
<|im_start|>assistant
<think>

</think>
<ANSWER>

对于较小的 Qwen-3 4B,将指令移到 末尾 产生了非常小的改进,在此设置中低于统计显著性。

带伪标签的两阶段训练

为了在相同的计算包络内进一步提升 AUC:

  1. 第一阶段(小模型)。 训练一个较小的模型并在目标测试域上运行推理。
  2. 不确定性采样。 选择 ~8,000 个最不确定(信息量最大)的测试样本作为第二阶段的软 伪标签
    • 这些伪标签 不添加新的外部知识;相反,它们 锚定测试样本之间的相对分数,从而更有效地利用指令模型的预训练知识。
  3. 第二阶段(大模型)。 在原始数据 加上 伪标签集上微调 Qwen-3 14B
  4. 融合。 将第一阶段和第二阶段的预测以 0.8 : 0.2 的权重进行融合。

最终结果

系统 / 消融实验 私人分数 (Private) 公共分数 (Public)
获胜方案 (融合 0.8 / 0.2) 0.9286 0.93382
无融合 (仅第二阶段) 0.9264 0.93111
Qwen-3 4B (单阶段) 0.91874 0.92482
Qwen-3 14B (单阶段) 0.92313 0.92909
使用 Qwen-3 4B 的两阶段 0.92239 0.92642
Qwen-3 4B (单阶段) 和 Qwen-3 14B (单阶段) 融合 0.92469 0.92921

实践说明。 两阶段流程增加了工程复杂性。~0.004 AUC 的增益在此决定了排名,但是否“值得”将取决于团队的时间/计算预算。

参考文献
[1] SALSA: Single-pass Autoregressive LLM Structured Classification.

同比赛其他方案