微调(Fine-tuning)包括以下方面:
要微调模型,您需要一组训练示例,每个训练示例都包含一个输入(“提示”)及其关联的输出(“完成”)。这与使用我们的基本模型明显不同,在基本模型中,您可能会在单个提示中输入详细说明或多个示例。每个提示都应以固定分隔符结尾,以在提示结束和完成开始时通知模型。通常效果很好的简单分隔符是\n\n###\n\n.分隔符不应出现在任何提示中的其他地方。由于我们的token化,每个完成都应该以空格开头,它用前面的空格token大多数单词。每次完成都应以固定的停止序列结束,以在完成结束时通知模型。停止序列可以是\n、###或任何其他未出现在任何完成中的token。对于推理,您应该按照与创建训练数据集时相同的方式格式化提示,包括相同的分隔符。还指定相同的停止序列以正确截断完成。[heading2]一般最佳实践[content]使用更多高质量的示例进行微调效果更好。要微调一个比使用我们的基本模型使用高质量提示更好地执行的模型,您应该提供至少几百个高质量的示例,最好由人类专家审查。从那里开始,性能往往会随着示例数量的每增加一倍而线性增加。增加示例的数量通常是提高性能的最佳和最可靠的方法。分类器是最容易上手的模型。对于分类问题,我们建议使用ada,经过微调后,它通常只会比功能更强大的模型稍微差一点,同时速度更快,成本更低。如果您要对预先存在的数据集进行微调,而不是从头开始编写提示,请务必在可能的情况下手动检查您的数据是否存在令人反感或不准确的内容,或者如果数据集很大,请检查尽可能多的随机样本。
以下假设您已经按照上述说明准备了训练数据。使用OpenAI CLI开始微调工作:您从哪里BASE_MODEL开始的基本模型的名称(ada、babbage、curie或davinci)。您可以使用后缀参数自定义微调模型的名称。运行上面的命令会做几件事:1.使用文件API上传文件(或使用已经上传的文件)2.创建微调作业3.流式传输事件直到作业完成(这通常需要几分钟,但如果队列中有很多作业或您的数据集很大,则可能需要数小时)每个微调工作都从一个默认为curie的基本模型开始。模型的选择会影响模型的性能和运行微调模型的成本。您的模型可以是以下之一:ada、babbage、curie或davinci。请访问我们的定价页面,了解有关微调费率的详细信息。开始微调作业后,可能需要一些时间才能完成。在我们的系统中,您的工作可能排在其他工作之后,训练我们的模型可能需要几分钟或几小时,具体取决于模型和数据集的大小。如果事件流因任何原因中断,您可以通过运行以下命令恢复它:工作完成后,它应该显示微调模型的名称。除了创建微调作业外,您还可以列出现有作业、检索作业状态或取消作业。
当作业成功时,该fine_tuned_model字段将填充模型名称。您现在可以将此模型指定为我们的Completions API的参数,并使用Playground向它发出请求。在您的工作首次完成后,您的模型可能需要几分钟时间才能准备好处理请求。如果对您的模型的完成请求超时,可能是因为您的模型仍在加载中。如果发生这种情况,请在几分钟后重试。您可以通过将模型名称作为model完成请求的参数传递来开始发出请求:OpenAI命令行界面:cURL:Python:Node.js:您可以继续使用所有其他完成参数,如temperature等,对这些frequency_penalty请求presence_penalty进行微调模型。[heading2]删除微调模型[content]要删除微调模型,您必须在您的组织中被指定为“所有者”。OpenAI命令行界面:cURL:Python:[heading2]准备数据集[content]微调是一种强大的技术,可用于创建特定于您的用例的新模型。在微调您的模型之前,我们强烈建议您阅读以下针对您的用例的最佳实践和具体指南。