如何使用OpenAI Fine-tuning API微调GPT-3模型

发布时间 2023-04-04 13:30:42作者: AlphaInf

https://platform.openai.com/docs/guides/fine-tuning(官方文档)

​ 当我们使用语言模型时候,往往需要给多个例子供ai参考,才能给出更为准确的回答,这种方法费时费力。而通过微调(Fine-tuning)能够把原始模型打造成更加适合你的任务需求的模型。模型进行微调后,无需再在prompt中提供示例。这样可以节省成本并实现更低的延迟请求。

模型微调可以简单分为以下三步:

  1. 准备训练数据集

  2. 训练一个新的微调模型

  3. 使用新的微调模型。

0.配置环境

首先,确保你已经安装 Python(从 Python 官方网站下载适合本机的 Python 安装程序)以及OpenAI 工具箱所依赖的‘panda’模块(控制台输入pip install pandas安装)

准备就绪后,在开始训练数据之前,首先要配置好openai的环境

在控制台中输入

pip install --upgrade openai

完成后,输入

set OPENAI_API_KEY="<OPENAI_API_KEY>"

如果指令无效,先查看openai工具箱有没有正确下载;然后查看是不是自己的密钥有没有正确复制。检查无误后,如果依然不能运行,则可以尝试在操作系统中设置全局环境变量

打开 Windows 控制面板,点击"系统和安全" -> "系统" -> "高级系统设置" -> "环境变量",在系统变量中添加一个新的变量,变量名为 OPENAI_API_KEY,变量值为你的 OpenAI API 密钥。

.asset

.asset

.asset

还可以尝试在 Windows 中创建一个名为 .openai 的文件夹,并在该文件夹中创建一个名为 config.json 的文件。在 config.json 文件中输入以下内容:

jsonCopy code{
  "api_key": "<OPENAI_API_KEY>",
  "models": {
    "davinci": "text-davinci-002",
    "curie": "text-curi-001",
    "babbage": "text-babbage-001",
    "ada": "text-ada-001",
    "content-filter-alpha-c4": "content-filter-alpha-c4"
  }
}

确保将 <OPENAI_API_KEY> 替换为你的 OpenAI API 密钥。

.openai 文件夹放在你的用户主目录下(例如 C:\Users\YourUserName)。

现在,你已经成功安装 OpenAI 工具箱并设置了环境变量和配置文件。

1.准备训练数据集

首先,训练数据的最终形式必须是JSONL文档的格式:

`{"prompt": "<prompt text>", "completion": "<ideal generated text>"}`
`{"prompt": "<prompt text>", "completion": "<ideal generated text>"}`
`{"prompt": "<prompt text>", "completion": "<ideal generated text>"}`
`...`

简单地说,prompt可以理解为问题(输入),而completion则是标准答案(预期模型输出),二者是一一对应的关系。

当然,我们的原始数据往往是csv/txt/xlsx等格式,openai开发了一个CLI 数据准备工具来验证、提供建议和重新格式化您的数据:

openai tools fine_tunes.prepare_data -f <LOCAL_FILE>

此工具接受不同的格式传递CSV、TSV、XLSX、JSONJSONL文件,运行完毕后,它会将输出保存到新创建的 JSONL 文件中,以便进行微调。

注意,要确认你在命令行中是否使用了正确的本地文件路径。例如,如果你要准备的数据文件名为 "data.csv",并且该文件位于当前终端窗口的工作目录中,则应该使用以下命令:

openai tools fine_tunes.prepare_data -f data.csv

如果该文件不在当前工作目录中,则应该使用完整路径来指定文件位置,例如:

openai tools fine_tunes.prepare_data -f /path/to/data.csv

.asset

.asset

.asset

至此,我们就获得了最终的训练数据集。

2.训练一个新的微调模型

接下来使用 OpenAI CLI 启动微调作业:

openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>

运行上述命令会执行以下几项操作:

  1. 使用文件API 上传文件(或使用已上传的文件)

  2. 创建微调作业

  3. 流式传输事件,直到作业完成(这通常需要几分钟,但如果队列中有许多作业或数据集很大,则可能需要数小时)

至此,属于自己的新的微调模型已经训练完成。

3.使用新的微调模型。

最后,打开官网中playground,在model中先选择我们刚刚创建好的模型,尝试输入,观察其输出结果是否与预期一致:

(注意结尾要带"->"作为分隔符,同时不要有空格)

.asset