准备数据以微调聊天补全模型

已完成

微调涉及将合适的 基础 模型组合为基础模型,以及一组 训练数据 ,其中包括模型可以从中学习的示例提示和响应。

利用基础模型加上训练数据得到经过微调的模型的示意图。

当你决定微调语言模型时,你需要确定可用于微调语言模型的数据集。

与任何机器学习模型类似,数据集的质量对模型的质量有很大影响。 尽管你需要的数据少于从头开始训练语言模型时所需的数据,但你仍可能需要足够的数据来最大程度地提高理想模型行为的一致性。 所需的数据量取决于用例。

微调语言模型的聊天补全时,用于微调模型的数据是示例对话的集合。 更具体地说,该数据应包含三个组件:

  • 系统消息
  • 用户消息
  • 助手的响应

这三个变量聚集在 JSON 行或 JSONL 文件中。 例如,此类数据集中的一行可能类似于下例:

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}

该数据集应显示模型的理想行为。 可以根据你拥有的聊天应用程序的聊天历史记录创建此数据集。 使用实际数据时要记住的一些事项是:

  • 移除任何个人或敏感信息。
  • 不仅侧重于创建大型训练数据集,而且还确保数据集包含多样化的示例。

可以在数据集中的单个行上包含对话的多个轮次。 如果只想针对特定的助手消息进行微调,可以选择使用 weight 键值对。 当权重设置为 0 时,将忽略消息,当设置为 1 时,将包含消息以用于训练。

含权重的多轮聊天文件格式的一个例子如下:

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}

当你准备数据集以微调语言模型时,应了解所需的模型行为,以 JSONL 格式创建数据集,并确保包含的示例是高质量和多样化的。 通过准备数据集,优化后的模型更有可能提高聊天应用程序的性能。