DataCollatorForCompletionOnlyLM解析(93)
DataCollatorForCompletionOnlyLM解析
- “mlm这个参数是干什么的?为什么要设为False?”
- DataCollatorForCompletionOnlyLM。
- 多轮交互的情况该怎么办呢?
- 补充说明
“mlm这个参数是干什么的?为什么要设为False?”
MLM是“掩码语言建模(masked language modeling)”的缩写,这是一种从输入中随机移除(掩码)部分词元(token),再训练模型预测空白处应填入何种词元的任务。掩码语言建模(MLM)与下一句预测(NSP,next-sentence prediction)共同构成了BERT[20]等基于编码器(encoder)的模型预训练的核心任务。但由于我们当前聚焦的是生成式模型相关工作,无需关注词元掩码操作,因此必须将该参数设为False。
语言建模专用的数据整理器(data collator)在首次对模型进行指令微调(instruction-tuning)时效果很好,但如果要进一步微调模型,且希望仅基于“补全内容”——即模型的实际输出答案——进行训练,这种整理器就可能造成资源浪费。
“为什么要这么做呢?”
原因很简单:如果模型已经过预训练,且在英语语境下具备“流畅性”,同时你的提示词(prompt)只是普通句子,那么继续用提示词训练模型,相当于花费时间和资源教模型它早已熟练掌握的知识——提示词本身无法为模型带来新的学习内容。而真正包含你想教给模型的有用信息的,正是模型的输出结果,也就是“补全内容”,不是吗?
或许你想教模型用不同语气回答,或许希望它用特定方言回应,又或者要求它遵循某种固定结构输出。这些场景下,仅基于“补全内容”进行微调会带来显著收益。
“那该怎么实现呢?”
答案是使用另一种数据整理器——