644. WSDM Cup - Multilingual Chatbot Arena | wsdm-cup-multilingual-chatbot-arena
祝贺所有获奖者!感谢队友 @mianwang1024 和 @zhengnie233。我要感谢另外两位队友教会了我什么是坐享其成,并揭示了人性中的贪婪。感谢组织者举办如此有趣的比赛。我感激 Kaggle 社区提供的创新思想和引人入胜的讨论。我学到了很多。以下是详细的解决方案作为补充。
预测用户更喜欢大型语言模型 (LLMs) 支持的聊天机器人之间的哪些回复。
一个简单的想法是使用大型模型进行二元分类。与较小的模型相比,它具有更高的表示能力,更适合此任务。但也带来了一些挑战:
我们聚合了多个数据源:
WSDM48k
LMSYS_55K
Add_33k
open-model(8.5k+13k+5k) 感谢 @nbroad
我过滤掉了重复数据,并通过交换进行了数据增强。
最终数据包含 2*120k 行。
我们尝试了 Qwen2.5-14b-it, Gemma2b-it, deepseek-r1-distill-14b。与 Qwen2.5-14b-it 相比,我们发现 deepseek-r1-distill-14b 使 CV 提高了约 0.001,但 LB 下降了约 0.003。(我认为这主要是由于我们只生成 1 个 token,deepseek-r1 会失去其推理能力)Gemma2b-it 在这两方面都较低。所以我们最终选择了 Qwen2.5-14b-it。
为了减轻截断造成的信息丢失,我们将截断问题和两个回复的中间部分,并用省略号替换它们,类似于将 "Have a nice day" 截断为 "Have ... day"。
'''You are a skilled judge evaluating responses from two large language models(LLMs). Your task is to select the response that best meets the user's needs based on the query provided.
**Input Format:**
<Query>
[User's original query to both LLMs]
</Query>
<Response_A>
[First LLM's response]
</Response_A>
<Response_B>
[Second LLM's response]
</Response_B>
**Your Task:**
Carefully analyze both <Response_A> and <Response_B> in relation to the Query. Determine which response is more likely to be selected by a user based on the following criteria:
- Completeness in addressing the query
- Accuracy of information
- Clarity and coherence
- Conciseness vs appropriate detail
- Helpful examples or explanations when needed
- Professional yet engaging tone
- Sound reasoning and logic
- Format and presentation
Here is your input to process now-
Input:
<Query>
{row['prompt']}
</Query>
{'---'*10}
<Response_A>
{row['response_a']}
</Response_A>
{'---'*10}
<Response_B>
{row['response_b']}
</Response_B>
Which response is more likely to be selected by a user? (A or B)\nOutput:\n'''
数据集
WSDM48k
LMSYS_55K
Add_33k 带有硬标签 [0,1]。
训练
预测 logits
数据集
WSDM48k
LMSYS_55K
Add_33k 带有软标签,如 [0,1]->[0.05,0.95]
open-model(8.5k+13k+5k) 带有由第一阶段推理出的软标签。
训练
我们利用 VLLM 进行推理,以半精度加载模型,提示词和输出最大长度合计为 8192,由于 T4 GPU 内存不足,实施了 CPU 卸载。在推理过程中,模型配置为仅生成一个 token,从中我们提取答案 A 和 B 的 logits。logit 值较高的答案被选为最终响应。在两个答案的 logits 太接近的情况下,我们应用后处理来确定最终响应。
以下是 LB 上的一些实验(部分实验仅在 CV 上测试,因此不在表中):
| 模型 | 数据 | 操作 | LB |
|---|---|---|---|
| qwen2.5-14b-it | wsdm | zeroshot (零样本) | 0.6254 |
| qwen2.5-14b-it | wsdm | mid_cut+0.7*dpo+0.3*bce | 0.689 |
| qwen2.5-14b-it | wsdm | left_cut+lora | 0.6907 |
| qwen2.5-14b-it | wsdm | mid_cut+random_fewshot | 0.6910 |
| qwen2.5-14b-it | wsdm | mid_cut (中间截断) | 0.6938 |
| qwen2.5-14b-it | wsdm+lmsys+add_33k | mid_cut | 0.6964 |
| qwen2.5-14b-it | wsdm | mid_cut+swap (交换) | 0.6967 |
| qwen2.5-14b-it | wsdm | mid_cut+cot_multi_task | 0.6973 |
| qwen2.5-14b-it | wsdm+lmsys+add_33k | mid_cut+swap | 0.7038 |
| qwen2.5-14b-it | wsdm+lmsys+add_33k | mid_cut+swap+postprocess | 0.7039 |
| qwen2.5-14b-it | wsdm+lmsys+add_33k+open_model | mid_cut+swap +softlabel | 0.706812 (最终 LB=0.712) |