为 OpenAI 的 GPT-3 微调构建数据集
Structuring dataset for OpenAI's GPT-3 fine tuning
OpenAI API 的 fine tuning 端点似乎很新,我在网上找不到很多微调数据集的例子。
我负责语音机器人,我正在测试 GPT-3 对于一般开放式对话问题的性能。我想 train 我们目前使用的“固定”意图-响应对模型:这可能最终会在公司声音和风格方面表现得更好。
我已经准备好从我们当前的会话引擎中提取的一个长 JSON 数据文件,它将用户输入与 intents 和 returns 指定的响应相匹配.我想根据这些数据训练 GPT-3 模型。
截至目前,为了进行一些快速测试,我已经设置了对 API 的调用,就像它们 suggest 一样。我有一个“固定的”介绍文本
<name> is <company>'s voicebot. he is kind and professional...
This is a conversation between <name> and a customer:
这是每个查询的前置,然后是一个小的 python class 跟踪以
开头的上下文
User: <request the user provides>
Bot:
然后每轮都会附加 api 的回复,这样我就可以跟踪所说的内容。经过几个问题后,我发送的查询或提示字符串如下所示:
<name> is <company>'s voicebot. he is kind and professional...
This is a conversation between <name> and a user:
User: <request>
Bot: <response>
User: <request>
Bot: <response>
... and so on
Bot:
我的问题是,我是否必须为我的训练数据提供相同的“格式”?这是可取的吗?
docs表示训练集应该是这样的格式:
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
但是提示是否每次都需要包括我的介绍文本(描述),或者我只是提供一系列 user/bot 交换,最后用 Bot:
完成我期望的答案?
在这种情况下,最佳做法 是什么?
我担心的是,如果我想在一个月后稍微更改介绍提示,我将不得不重新训练整个过程,因为每个响应都是在训练前加上特定的文本块。
我联系了 OpenAI 的支持,他们非常有帮助:我会在这里留下他们的答案。
the prompt does not need the fixed intro every time. Instead, you'll just want to provide at least a few hundred prompt-completion pairs of user/bot exchanges.
We have a sample of a chatbot fine-tuning dataset here.
OpenAI API 的 fine tuning 端点似乎很新,我在网上找不到很多微调数据集的例子。
我负责语音机器人,我正在测试 GPT-3 对于一般开放式对话问题的性能。我想 train 我们目前使用的“固定”意图-响应对模型:这可能最终会在公司声音和风格方面表现得更好。
我已经准备好从我们当前的会话引擎中提取的一个长 JSON 数据文件,它将用户输入与 intents 和 returns 指定的响应相匹配.我想根据这些数据训练 GPT-3 模型。
截至目前,为了进行一些快速测试,我已经设置了对 API 的调用,就像它们 suggest 一样。我有一个“固定的”介绍文本
<name> is <company>'s voicebot. he is kind and professional...
This is a conversation between <name> and a customer:
这是每个查询的前置,然后是一个小的 python class 跟踪以
开头的上下文User: <request the user provides>
Bot:
然后每轮都会附加 api 的回复,这样我就可以跟踪所说的内容。经过几个问题后,我发送的查询或提示字符串如下所示:
<name> is <company>'s voicebot. he is kind and professional...
This is a conversation between <name> and a user:
User: <request>
Bot: <response>
User: <request>
Bot: <response>
... and so on
Bot:
我的问题是,我是否必须为我的训练数据提供相同的“格式”?这是可取的吗? docs表示训练集应该是这样的格式:
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
但是提示是否每次都需要包括我的介绍文本(描述),或者我只是提供一系列 user/bot 交换,最后用 Bot:
完成我期望的答案?
在这种情况下,最佳做法 是什么?
我担心的是,如果我想在一个月后稍微更改介绍提示,我将不得不重新训练整个过程,因为每个响应都是在训练前加上特定的文本块。
我联系了 OpenAI 的支持,他们非常有帮助:我会在这里留下他们的答案。
the prompt does not need the fixed intro every time. Instead, you'll just want to provide at least a few hundred prompt-completion pairs of user/bot exchanges. We have a sample of a chatbot fine-tuning dataset here.