OpenAI官方指南:Fine-tuning

学习如何为您的应用程序定制模型。 介绍 微调可以通过以下方式让您更好地利用 API 提供的模型: 比直接使用提示获得更高质量的结果 可以训练比提示中更多的示例 由于提示更简短,节省 Token 请求延迟更低 OpenAI 的文本生成模型已经在大量文本数据上进行了预训练。为了有效使用这些模型,我们通常在提示中包含说明和几个示例。这种通过示例展示任务的方法称为“少样本学习”。 微调通过在提示中包含更多示例来改进少样本学习,从而在许多任务上获得更好的结果。一旦模型经过微调,您不需要在提示中提供那么多示例。 这样可以节省成本并降低请求延迟。 微调一般包括以下步骤: 准备并上传训练数据 训练一个新的微调模型 评估结果,如有需要返回第一步 使用您的微调模型 访问我们的定价页面,了解微调模型训练和使用的费用。 哪些模型可以微调? GPT-4(gpt-4-0613 和 gpt-4o-*)的微调处于实验性访问计划中,符合条件的用户可以在创建新的微调任务时在微调界面中申请访问。 目前以下模型可以进行微调:gpt-3.5-turbo-0125(推荐),gpt-3.5-turbo-1106,gpt-3.5-turbo-0613,babbage-002,davinci-002,gpt-4-0613(实验性),以及 gpt-4o-2024-05-13。 如果您获得了更多数据且不想重复之前的训练步骤,还可以对一个已经微调的模型进行再次微调。 我们认为gpt-3.5-turbo在结果和易用性方面对于大多数用户来说是最佳选择。 何时使用微调 微调 OpenAI 的文本生成模型可以让它们更适合特定应用,但这需要大量的时间和精力投入。我们建议首先尝试通过提示工程、提示链(将复杂任务分解为多个提示)和函数调用来获得良好结果,主要原因包括: 我们的模型在许多任务上的初始表现可能不佳,但通过正确的提示可以改善结果,因此可能不需要微调 提示迭代和其他策略的反馈循环比微调更快,而微调需要创建数据集并运行训练任务 在需要微调的情况下,初始的提示工程工作不会浪费 - 通常我们会在微调数据中使用良好的提示(或结合提示链和工具使用与微调)时获得最佳效果 我们的提示工程指南提供了不进行微调而提高性能的一些最有效策略和技巧。您可以在我们的playground中快速迭代提示。 常见用例 以下是一些微调可以改善结果的常见用例: 设置风格、语气、格式或其他定性方面 提高生成所需输出的可靠性 纠正未能遵循复杂提示的错误 特定方式处理许多边缘情况 执行在提示中难以表达的新技能或任务 一个高层次的思路是,当“展示”比“说明”更容易时。在接下来的部分中,我们将探讨如何设置微调数据以及微调在基线模型上提升性能的各种示例。 另一个微调的有效场景是通过替换 GPT-4 或使用较短的提示来减少成本和/或延迟,而不牺牲质量。如果您能用 GPT-4 获得良好结果,通常可以通过在 GPT-4 结果上微调gpt-3.5-turbo模型并缩短指令提示,达到类似的质量。 准备您的数据集 一旦您确定微调是正确的解决方案(即您已经优化了提示并发现模型仍有问题),您就需要准备训练模型的数据。您应创建一组多样化的示范对话,这些对话与您在生产中要求模型响应的对话类似。 数据集中的每个示例都应该是与我们的聊天完成 API相同格式的对话,具体来说是一系列消息,每条消息都有一个角色、内容和可选名称。至少一些训练示例应直接针对模型在提示中表现不佳的情况,并且数据中提供的助手消息应是您希望模型给出的理想响应。 示例格式 在这个例子中,我们的目标是创建一个偶尔会给出讽刺回复的聊天机器人,以下是我们可以为数据集创建的三个训练示例(对话): {"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic....

July 22, 2024 · 8 min · fisherdaddy