OpenAI GPT-3 API:微调一个已经微调的模型?

9

OpenAI的fine-tune API中model属性的文档有点令人困惑:

model

要进行fine-tune的基础模型名称。您可以选择其中之一:"ada"、"babbage"、"curie"、"davinci"或2022-04-21后创建的经过fine-tune的模型。

我的问题是:fine-tune一个基础模型还是一个经过fine-tune的模型更好?

我使用文件mydata1K.jsonlada创建了一个fine-tune模型:

ada + mydata1K.jsonl --> ada:ft-acme-inc-2022-06-25

现在我有一个更大的样本文件mydata2K.jsonl,我想用它来改进微调模型。 在第二轮微调中,是重新微调ada还是微调我的微调模型ada:ft-acme-inc-2022-06-25更好?我假设这是可能的,因为我的微调模型是在2022-04-21之后创建的。

ada + mydata2K.jsonl --> better-model

或者

ada:ft-acme-inc-2022-06-25 + mydata2K.jsonl --> even-better-model?

2
我在openai论坛上找到了答案:https://community.openai.com/t/continuous-fine-tuning-best-practices/18942 如果您已经为您的任务进行了微调,并且现在有额外的训练数据需要合并,您可以从该模型继续进行微调。这将创建一个从所有训练数据中学习而无需重新从头开始训练的模型。 - ImitationGamer
1个回答

5

更新

根据官方的OpenAI文档,似乎不再支持对已经进行过微调的模型进行进一步微调:

我能继续对已经进行过微调的模型进行微调吗?

不可以,目前我们不支持在作业完成后继续进行微调。我们计划在不久的将来支持此功能。


根据官方的OpenAI文档所述:
如果您已经对模型进行了微调,并且现在有额外的训练数据需要加入,您可以从该模型继续进行微调。这样可以创建一个从所有训练数据中学习而无需重新从头开始训练的模型。
要实现这一点,在创建新的微调任务时,传入已经微调的模型名称(例如,-m curie:ft--)。其他训练参数不需要更改,但是如果您的新训练数据比之前的训练数据小很多,您可能会发现将learning_rate_multiplier减少2到4倍是有用的。
选择哪个选项?
您正在询问两个选项:
  • 选项 1: ada + bigger-training-dataset.jsonl
  • 选项 2: ada:ft-acme-inc-2022-06-25 + additional-training-dataset.jsonl

文档中对于哪个选项会产生更好结果没有明确说明。

然而...

选择选项 2

为什么?

在训练精调模型时,将根据我们的训练费率计费使用的总标记数。

如果选择选项 1,则您将支付两次训练数据集中的一些标记。第一次是在使用初始训练数据集进行精调时,第二次是在使用更大的训练数据集进行精调时(即 bigger-training-dataset.jsonl = initial-training-dataset.jsonl + additional-training-dataset.jsonl)。

从已精调的模型继续进行精调更好,因为您只需支付附加训练数据集中的标记费用。

阅读更多关于优化定价计算


你好。我有一个问题,如果在我给第一个模型的训练数据中发现有一些错误(假设数据集的5%),我应该重新训练一个新模型还是只用那5%的错误数据进行扩展训练? - suribe06
@suribe06 嗨!对于你的情况,微调可能不是最佳选择。首先,如果你想得到一个确切的答案(即事实)来回答一个具体的问题,微调甚至不是正确的方法。要了解原因,请阅读我的先前回答(这个这个)。其次,这可能是微调的最大缺点之一。你不能只是“替换”错误或过时的数据。 - Rok Benko
1
@suribe06 [继续] 你已经找到了两个选择。要么你继续微调一个已经微调过的模型,要么从头开始进行微调。如果你一开始选择了微调而不是语义搜索(即嵌入式方法),那我建议你选择第二个选项(即从头开始微调)。为什么呢?因为如果你对一个已经微调过的模型再次进行微调,模型将会有两组数据(错误或过时的数据和新的数据),这可能会导致模型产生更多幻觉! - Rok Benko
非常感谢您详细的回复。我正在初步尝试使用LLM进行分类模型,就像OpenAI的文档中所示documentation - suribe06
@suribe06 然后按照文档中的示例操作。我从未进行过分类任务,只知道Classifications API endpoint已被弃用。关于你的问题,我确实没有亲身经验,所以无法建议你是继续对已经微调过的模型进行微调,还是从头开始进行微调以用于分类目的。 - Rok Benko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接