为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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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