如何使用OpenAI Fine-tuning API微调GPT-3模型
当我们使用语言模型时候,往往需要给多个例子供ai参考,才能给出更为准确的回答,这种方法费时费力。而通过微调(Fine-tuning)能够把原始模型打造成更加适合你的任务需求的模型。模型进行微调后,无需再在prompt中提供示例。这样可以节省成本并实现更低的延迟请求。
模型微调可以简单分为以下三步:
-
准备训练数据集
-
训练一个新的微调模型
-
使用新的微调模型。
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 密钥。
还可以尝试在 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、JSON或JSONL文件,运行完毕后,它会将输出保存到新创建的 JSONL 文件中,以便进行微调。
注意,要确认你在命令行中是否使用了正确的本地文件路径。例如,如果你要准备的数据文件名为 "data.csv",并且该文件位于当前终端窗口的工作目录中,则应该使用以下命令:
openai tools fine_tunes.prepare_data -f data.csv
如果该文件不在当前工作目录中,则应该使用完整路径来指定文件位置,例如:
openai tools fine_tunes.prepare_data -f /path/to/data.csv
至此,我们就获得了最终的训练数据集。
2.训练一个新的微调模型
接下来使用 OpenAI CLI 启动微调作业:
openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>
运行上述命令会执行以下几项操作:
-
使用文件API 上传文件(或使用已上传的文件)
-
创建微调作业
-
流式传输事件,直到作业完成(这通常需要几分钟,但如果队列中有许多作业或数据集很大,则可能需要数小时)
至此,属于自己的新的微调模型已经训练完成。
3.使用新的微调模型。
最后,打开官网中playground,在model中先选择我们刚刚创建好的模型,尝试输入,观察其输出结果是否与预期一致:
(注意结尾要带"->"作为分隔符,同时不要有空格)