多轮对话训练技巧
一句话总结
多轮对话训练需要正确处理对话历史、损失掩码和上下文长度管理,使模型学会在多轮交互中保持一致性、连贯性和上下文追踪能力。
核心概念
多轮对话训练的核心技术点:损失掩码(Loss Masking)——只对助手回复部分计算损失,用户输入和系统提示部分不计算梯度,通过将labels设为-100实现;对话截断策略——当多轮对话超过最大长度时,从最早的轮次开始截断保留最近上下文;对话打包(Packing)——将多个短对话拼接到一个训练样本中提升GPU利用率,需用attention mask防止跨对话注意力泄漏。
为什么重要
真实场景中用户与模型的交互几乎都是多轮的,单轮训练无法让模型学会指代消解、上下文追踪和话题切换等关键能力。正确的多轮训练显著提升用户体验,是对话模型区别于基础模型的关键训练环节。
实践要点
确保训练数据包含足够多样的对话轮次(2-10轮不等);对话中加入用户纠正、追问、澄清和话题转换的样本;正确设置labels中非助手部分为-100(ignore_index)。建议混合单轮和多轮数据训练以兼顾两种能力。
常见误区
误区一:对整个对话序列计算损失——这会让模型学会模仿用户输入而非只生成助手回复,严重影响生成质量。误区二:只用两轮对话训练——模型会在长对话中出现能力退化和上下文遗忘。