为OpenAI的GPT-3微调结构化数据集

OpenAI API的微调端点似乎是相当新的,我在网上找不到许多关于微调数据集的例子。

我负责一个语音机器人,正在测试GPT-3在一般开放式对话问题上的表现。我想用我们目前使用的“固定”意图-响应对来训练模型:这可能会在公司声音和风格方面表现得更好。

我已经准备好了一个从我们当前的对话引擎中提取的长JSON文件,该文件将用户输入与意图匹配并返回指定的响应。我想用这些数据来训练一个GPT-3模型。

目前,为了进行一些快速测试,我按照他们建议的方式设置了对API的调用。我有一个“固定”的介绍文本,形式如下

<name>是<company>的语音机器人。他友好且专业...这是一次<name>与客户之间的对话:

这个文本会在每个查询前添加,然后是一个小的Python类,用于跟踪上下文,起始部分是

用户:<用户提供的请求>机器人:

然后每次对话轮次后,API的响应会被添加,这样我就能跟踪所说的话。几轮问题后,我发送的查询或提示字符串看起来像这样:

<name>是<company>的语音机器人。他友好且专业...这是一次<name>与用户之间的对话:用户:<请求>机器人:<响应>用户:<请求>机器人:<响应>...依此类推机器人:

我的问题是,我是否必须为我的训练数据提供相同的“格式”?这样做是否可取?文档表明,训练集应采用这种格式:

{"prompt": "<提示文本>", "completion": "<理想生成文本>"}{"prompt": "<提示文本>", "completion": "<理想生成文本>"}...

但是提示是否需要每次都包含我的介绍文本(描述),还是我只需提供一系列用户/机器人交流,并在最后加上机器人:,然后在完成部分提供我期望的答案?在这种情况下,什么是最佳实践?我担心如果一个月后我想稍微更改介绍提示,我将不得不重新训练整个模型,因为每个响应都是用那个特定的文本块作为前缀进行训练的。


回答:

我联系了OpenAI的支持团队,他们非常有帮助:我将在这里留下他们的回答。

提示不需要每次都包含固定的介绍。相反,你只需要提供至少几百个用户/机器人交流的提示-完成对。我们有一个聊天机器人微调数据集的样本在这里

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注